Ustawianie geometrii się nie powiedzie, ponieważ konstruktor geopandas.GeoDataFrame
nie wydaje się być zbudowany do obsługi obiektów JSON jako struktury danych Pythona. W związku z tym narzeka, że argument nie jest ważnym obiektem geometrii. Musisz przetworzyć go w coś, co może zrozumieć geopandas.GeoDataFrame
, np. shapely.geometry.shape
. Oto co prowadził bez błędów po mojej stronie, Python 3.5.4:
#!/usr/bin/env python3
import requests
import geopandas as gpd
from shapely.geometry import shape
r = requests.get("https://data.cityofnewyork.us/resource/5rqd-h5ci.json")
r.raise_for_status()
data = r.json()
for d in data:
d['the_geom'] = shape(d['the_geom'])
gdf = gpd.GeoDataFrame(data).set_geometry('the_geom')
gdf.head()
Zastrzeżenie: wiem nic o Geo niczego. Nie znałem nawet tych bibliotek i tego rodzaju dane istniały, dopóki nie zainstalowałem geopandas
, aby rozwiązać ten problem i przeczytać trochę dokumentacji online.
Uwaga na przyszłość: ten plik json nie wygląda na prawidłowy GeoJSON. W przypadku takich plików można znacznie łatwiej użyć 'geopandas.read_file (..)' – joris