docs: def _extract_geo(d, _root):
      """
      Extract geo data from input
      :param dict d: Geo
      :return dict _root: Root data
      """
      logger_ts.info("enter ts_extract_geo")
      # May not need these if the key names are corrected in the future.
      # COORDINATE ORDER: [LON, LAT, ELEV]
      x = ['geo_meanLon', 'geo_meanLat', 'geo_meanElev']
      # Iterate through geo dictionary
      for k, v in d.items():
          # Case 1: Coordinates special naming
          if k == 'coordinates':
              for idx, p in enumerate(v):
                  try:
                      # Check that our value is not in EMPTY.
                      if isinstance(p, str):
                          if p.lower() in EMPTY:
                              # If elevation is a string or 0, don't record it
                              if idx != 2:
                                  # If long or lat is empty, set it as 0 instead
                                  _root[x[idx]] = 0
                          else:
                              # Set the value as a float into its entry.
                              _root[x[idx]] = float(p)
                      # Value is a normal number, or string representation of a number
                      else:
                          # Set the value as a float into its entry.
                          _root[x[idx]] = float(p)
                  except IndexError as e:
                      logger_ts.warn("_extract_geo: IndexError: idx: {}, val: {}, {}".format(idx, p, e))
          # Case 2: Any value that is a string can be added as-is
          elif isinstance(v, str):
              if k == 'meanElev':
                  try:
                      # Some data sets have meanElev listed under properties for some reason.
                      _root['geo_' + k] = float(v)
                  except ValueError as e:
                      # If the value is a string, then we don't want it
                      logger_ts.warn("_extract_geo: ValueError: meanElev is a string: {}, {}".format(v, e))
              else:
                  _root['geo_' + k] = v
          # Case 3: Nested dictionary. Recursion
          elif isinstance(v, dict):
              _root = _extract_geo(v, _root)
      return _root