Estou com dificuldade para carregar os seguintes dados GIS contendo JSON (https://data.cityofnewyork.us/resource/5rqd-h5ci.json) em um GeoDataFrame.
O código a seguir falha quando tento definir a geometria.
import requests
import geopandas as gpd
data = requests.get("https://data.cityofnewyork.us/resource/5rqd-h5ci.json")
gdf = gpd.GeoDataFrame(data.json())
gdf = gdf.set_geometry("the_geom")
gdf.head()
Respostas:
5 para resposta № 1Definir a geometria falha porque o geopandas.GeoDataFrame
construtor não parece ser construído para manipularObjetos JSON como estruturas de dados python. Por isso, reclama que o argumento não é um objeto de geometria válido. Você tem que analisar isso em algo que geopandas.GeoDataFrame
pode entender, como um shapely.geometry.shape
. Aqui está o que correu sem erro do meu lado, o 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()
Um aviso: Eu não sei absolutamente nada sobre Geo nada. Eu nem conhecia essas bibliotecas e esse tipo de dados existia até que eu instalei geopandas
para enfrentar essa recompensa e ler um pouco de documentação on-line.