/ / Carregando JSON em um GeoDataFrame - python, json, gis, geojson, geopandas

Carregando JSON em um GeoDataFrame - python, json, gis, geojson, geopandas

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 № 1

Definir 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.