docs: def geometrize_shapes(
      shapes: DataFrame, *, use_utm: bool = False
  ) -> DataFrame:
      """
      Given a GTFS shapes DataFrame, convert it to a GeoPandas
      GeoDataFrame and return the result.
      The result has a ``'geometry'`` column of WGS84 LineStrings
      instead of the columns ``'shape_pt_sequence'``, ``'shape_pt_lon'``,
      ``'shape_pt_lat'``, and ``'shape_dist_traveled'``.
      If ``use_utm``, then use local UTM coordinates for the geometries.
  
      Notes
      ------
      Requires GeoPandas.
      """
      import geopandas as gpd
  
      f = shapes.copy().sort_values(["shape_id", "shape_pt_sequence"])
  
      def my_agg(group):
          d = {}
          d["geometry"] = sg.LineString(
              group[["shape_pt_lon", "shape_pt_lat"]].values
          )
          return pd.Series(d)
  
      g = f.groupby("shape_id").apply(my_agg).reset_index()
      g = gpd.GeoDataFrame(g, crs=cs.WGS84)
  
      if use_utm:
          lat, lon = f.loc[0, ["shape_pt_lat", "shape_pt_lon"]].values
          crs = hp.get_utm_crs(lat, lon)
          g = g.to_crs(crs)
  
      return g