Получение геометрии в фрейме данных GeoPandas как json [Изменить: использовать .to_json ()]

Загрузив файл geojson в GeoPandas, я получаю ожидаемый столбец / объект под названием «геометрия», содержащий полигоны и мультиполигоны.

Как мне снова получить этот объект в виде json или Python dict?

В текущем виде это geopandas.geoseries.GeoSeries объект.

Например, мне нужно что-то вроде:

geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.76336816099996, 40.726165522000031 ], [ -73.762895342999968, 40.726101379000056 ], [ -73.761940118999973, 40.725972874000036 ], [ -73.76074889399996, 40.725792699000067 ] ] ] ] }

Ничего не видно в документе:

http://geopandas.org/data_structures.html#overview-of-attributes-and-methods


person zadrozny    schedule 19.06.2018    source источник
comment
Найдена функция: .to_json ()   -  person zadrozny    schedule 20.06.2018


Ответы (1)


Если у вас есть объект GeoSeries (или GeoDataFrame, приведенное ниже работает так же), например

>>> import geopandas
>>> from shapely.geometry import Point
>>> s = geopandas.GeoSeries([Point(1, 1), Point(2, 2)])
>>> s
0    POINT (1 1)
1    POINT (2 2)
dtype: object

то вы можете преобразовать это в GeoJSON-подобный dict с __geo_interface__:

>>> s.__geo_interface__
{'bbox': (1.0, 1.0, 2.0, 2.0),
 'features': [{'bbox': (1.0, 1.0, 1.0, 1.0),
   'geometry': {'coordinates': (1.0, 1.0), 'type': 'Point'},
   'id': '0',
   'properties': {},
   'type': 'Feature'},
  {'bbox': (2.0, 2.0, 2.0, 2.0),
   'geometry': {'coordinates': (2.0, 2.0), 'type': 'Point'},
   'id': '1',
   'properties': {},
   'type': 'Feature'}],
 'type': 'FeatureCollection'}

или в фактический GeoJSON (json-версия dict выше) с помощью to_json метод:

>>> s.to_json()
'{"type": "FeatureCollection", "bbox": [1.0, 1.0, 2.0, 2.0], "features": [{"id": "0", "type": "Feature", "geometry": {"coordinates": [1.0, 1.0], "type": "Point"}, "bbox": [1.0, 1.0, 1.0, 1.0], "properties": {}}, {"id": "1", "type": "Feature", "geometry": {"coordinates": [2.0, 2.0], "type": "Point"}, "bbox": [2.0, 2.0, 2.0, 2.0], "properties": {}}]}'

В этом примере он возвращает строку, но если вы передадите путь к файлу, он запишет его в файл.

person joris    schedule 19.06.2018