web-dev-qa-db-ja.com

geopandasのシェイプの良いポリゴンをgeojsonに変換

Geopandasを使用して円を作成しましたが、形の良いポリゴンが返されました。

POLYGON: ((...))

これと同じポリゴンをgeojsonオブジェクトとして使用します。私はこれに遭遇しました:

shapely.geometry.mapping(shapelyObject)

これはこれを返します:

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

しかし、これをmapboxでマッピングしようとすると、何も表示されません。多分それは完全にgeojsonオブジェクトではないと思います。

12
jchaykow

この辞書を手動で作成したくない場合は、geopandasを使用して作成することもできます。

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

(これはFeatureCollectionを提供し、単一の機能を提供しないことに注意してください。)

または文字列(またはファイル)に:

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

このような何かがうまくいくはずです:

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

これで、mapboxでfeaturesをマッピングすることができます。お役に立てれば。

リファレンス: https://gis.stackexchange.com/questions/213717/geometry-workflow-from-shapely-to-geojson

5
Paul Varghese

pandas=を使用して標準geojsonオブジェクトを作成するには、_ ドキュメント で推奨されているfionaによって提供されるドライバーを使用する必要があります

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

見る import fiona; fiona.supported_drivers完全にサポートされているドライバーのリスト

4
MCMZL