web-dev-qa-db-fra.com

Convertir un polygone galbé de géopandas en geojson

J'ai créé un cercle à l'aide de géopandas et il a renvoyé un polygone galbé:

POLYGON: ((...))

Je veux ce même polygone comme objet geojson. J'ai rencontré ça:

shapely.geometry.mapping(shapelyObject)

qui renvoie ceci:

{'type': 'Polygon', 'coordinates': (((570909.9247264927, 125477.71811034005)...}

Mais lorsque j'essaie de mapper cela dans mapbox, cela ne montre rien. Je pense que ce n'est peut-être pas entièrement un objet geojson.

12
jchaykow

Si vous ne souhaitez pas créer ce dict manuellement, vous pouvez également compter sur geopandas pour le créer:

In [1]: import shapely.geometry

In [2]: import geopandas

In [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'}

(Notez que cela donne une FeatureCollection et non une seule fonctionnalité.)

Ou à une chaîne (ou fichier):

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"}'
16
joris

Quelque chose comme ça devrait faire l'affaire:

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

Vous pouvez maintenant essayer de mapper features dans mapbox. J'espère que cela t'aides.

Référence: https://gis.stackexchange.com/questions/213717/geometry-workflow-from-shapely-to-geojson

5
Paul Varghese

Pour écrire un objet geojson standard en utilisant pandas vous devez utiliser le pilote fourni par fiona comme recommandé dans la documentation

gdf.to_file('path/to/file.geojson', driver='GeoJSON')

Voir import fiona; fiona.supported_drivers pour une liste des pilotes entièrement pris en charge

4
MCMZL