18 votos

Lectura de datos brutos en geopandas

¿Es posible leer datos brutos en un %-% geopandas GeoDataFrame, a la a pandas DataFrame?

Por ejemplo, las siguientes obras:

import io
import pandas as pd
import requests
data = requests.get("https://data.cityofnewyork.us/api/geospatial/arq3-7z49?method=export&format=GeoJSON")
pd.read_json(io.BytesIO(data.content))

Lo siguiente no:

import geopandas as gpd
import io
import requests
data = requests.get("https://data.cityofnewyork.us/api/geospatial/arq3-7z49?method=export&format=GeoJSON")
gpd.read_file(io.BytesIO(data.content))

En otras palabras, ¿es posible leer datos geoespaciales que están en la memoria sin guardar esos datos en el disco primero?

4voto

Dustin Woodard Puntos 448

Cuando se usa Fiona 1.8, esto puede (¿debe?) hacerse usando %-% + %-% MemoryFile %-% ZipMemoryFile.

Por ejemplo:

import fiona.io
import geopandas as gpd
import requests

response = requests.get('http://example.com/Some_shapefile.zip')
data_bytes = response.content

with fiona.io.ZipMemoryFile(data_bytes) as zip_memory_file:
    with zip_memory_file.open('Some_shapefile.shp') as collection:
      geodf = gpd.GeoDataFrame.from_features(collection, crs=collection.crs)

3voto

Johnaras Puntos 26

Dado fiona.BytesCollection %-% no parece funcionar para %-% TopoJSON una solución que funciona para todos sin la necesidad de gdal:

import fiona
import geopandas as gpd
import requests

# parse the topojson file into memory
request = requests.get('https://vega.github.io/vega-datasets/data/us-10m.json')
visz = fiona.ogrext.buffer_to_virtual_file(bytes(request.content))

# read the features from a fiona collection into a GeoDataFrame
with fiona.Collection(visz, driver='TopoJSON') as f:
    gdf = gpd.GeoDataFrame.from_features(f, crs=f.crs)

2voto

Antonio Haley Puntos 2588

Sí, ahora es posible con Fiona (consulte https://github.com/Toblerity/Fiona/issues/409). No estoy seguro de si esta característica está expuesta todavía en Geopandas.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X