def ungeometrize_shapes(geo_shapes) -> DataFrame:
    """
    The inverse of :func:`geometrize_shapes`.
    Produces the columns:

    - ``'shape_id'``
    - ``'shape_pt_sequence'``
    - ``'shape_pt_lon'``
    - ``'shape_pt_lat'``

    If ``geo_shapes`` is in UTM coordinates (has a UTM CRS property),
    then convert thoes UTM coordinates back to WGS84 coordinates,
    which is the standard for a GTFS shapes table.
    """
    geo_shapes = geo_shapes.to_crs(cs.WGS84)

    F = []
    for index, row in geo_shapes.iterrows():
        F.extend(
            [
                [row["shape_id"], i, x, y]
                for i, (x, y) in enumerate(row["geometry"].coords)
            ]
        )

    return pd.DataFrame(
        F,
        columns=[
            "shape_id",
            "shape_pt_sequence",
            "shape_pt_lon",
            "shape_pt_lat",
        ],
    )
The inverse of :func:`geometrize_shapes`.
    Produces the columns:

    - ``'shape_id'``
    - ``'shape_pt_sequence'``
    - ``'shape_pt_lon'``
    - ``'shape_pt_lat'``

    If ``geo_shapes`` is in UTM coordinates (has a UTM CRS property),
    then convert thoes UTM coordinates back to WGS84 coordinates,
    which is the standard for a GTFS shapes table.