Convert geopandas shapely polygon to geojson Convert geopandas shapely polygon to geojson python python

Convert geopandas shapely polygon to geojson


If you don't want to create this dict manually, you can also rely on geopandas creating it:

In [1]: import shapely.geometryIn [2]: import geopandasIn [3]: shapely_polygon = shapely.geometry.Polygon([(0, 0), (0, 1), (1, 0)])In [4]: geopandas.GeoSeries([shapely_polygon]).__geo_interface__Out[4]: {'bbox': (0.0, 0.0, 1.0, 1.0), 'features': [{'bbox': (0.0, 0.0, 1.0, 1.0),   'geometry': {'coordinates': (((0.0, 0.0),      (0.0, 1.0),      (1.0, 0.0),      (0.0, 0.0)),),    'type': 'Polygon'},   'id': '0',   'properties': {},   'type': 'Feature'}], 'type': 'FeatureCollection'}

(Note that this gives a FeatureCollection and not a single feature.)

Or to a string (or file):

In [4]: geopandas.GeoSeries([shapely_polygon]).to_json()Out[4]: '{"features": [{"bbox": [0.0, 0.0, 1.0, 1.0], "geometry": {"coordinates": [[[0.0, 0.0], [0.0, 1.0], [1.0, 0.0], [0.0, 0.0]]], "type": "Polygon"}, "properties": {}, "id": "0", "type": "Feature"}], "bbox": [0.0, 0.0, 1.0, 1.0], "type": "FeatureCollection"}'


Shapely returns a python dict where all the coordinates are in tuples. You need to convert to JSON in order for mapbox, etc... to properly accept it.

json.dumps(shapely.geometry.mapping(shapelyObject))


Something like this should do the trick:

features = [{'type': 'Feature', 'properties': {}, 'geometry': shapely.geometry.mapping(shapelyObject)}]

Now you can try to map features in mapbox.Hope this helps.

Reference:https://gis.stackexchange.com/questions/213717/geometry-workflow-from-shapely-to-geojson