code: def geodetic_parse(
      df: DataFrame,
      geodetic: str,
      longitude: str,
      latitude: str,
      altitude: Optional[str] = None,
  ) -> DataFrame:
      """
      Parse a column containing a geodetic point string
      [Geopy](https://geopy.readthedocs.io/en/stable/#geopy.point.Point).
  
      :param df: DataFrame containing geodetic point data
      :param geodetic: Name of source column containing geodetic point string.
      :param longitude: Name of new column to be created containing longitude.
      :param latitude: Name of new column to be created containing latitude.
      :param altitude: Name of new column to be created containing altitude.
      :return: DataFrame with decoded longitudes and latitudes
      """
  
      def _parse_location(location: str) -> tuple[float, float, float]:
          """
          Parse a string containing a geodetic point and return latitude, longitude
          and altitude
          """
          point = Point(location)
          return point[0], point[1], point[2]
  
      try:
          geodetic_df = DataFrame()
          (
              geodetic_df["latitude"],
              geodetic_df["longitude"],
              geodetic_df["altitude"],
          ) = zip(*df[geodetic].apply(_parse_location))
          columns = {"latitude": latitude, "longitude": longitude}
          if altitude:
              columns["altitude"] = altitude
          return _append_columns(df, geodetic_df, columns)
      except ValueError as ex:
          raise InvalidPostProcessingError(
              _("Invalid geodetic string")
          ) from ex
  
file_path: superset/superset/utils/pandas_postprocessing/geography.py
imports: from typing import Optional
  import geohash
  from flask_babel import gettext
  from geopy.point import Point
  from pandas import DataFrame
  from superset.exceptions import InvalidPostProcessingError
  from superset.utils.pandas_postprocessing.utils import _append_columns
label_desc: Use image node_id 3 for calling a global function with example usage: geodetic_parse(df, geodetic, longitude, latitude, altitude) and returns: point,  point,  point, _append_columns