¿Convertir el archivo GeoJSON de SimpleGeo Places a shapefile?

15

SimpleGeo recientemente puso a disposición su conjunto de datos de "Lugares", lo cual es GENIAL, porque ahora podemos usarlo para nuestros propios fines, incluso sin conexión. Así que descargué el conjunto de datos de 2 GB , que contiene archivos de país comprimidos en formato GeoJSON.

Aquí es donde comienza mi problema ... cuando intento cargar un archivo de país (* .geojson) directamente en QGIS o incluso convertirlo en un archivo de forma usando ogr2ogr, termino con solo una característica de 1 punto.

Claramente, hay más datos disponibles en estos archivos que no puedo "ver" o recuperar, entonces, ¿qué estoy haciendo mal? ¿Alguien puede darme alguna sugerencia sobre cómo convertir estos archivos en funciones SIG utilizables?

Pregunta actualizada: Realmente quiero convertir el archivo geojson en un shapefile (o un formato GIS estándar similar) para usarlo en un software GIS de escritorio.

Fragmento del blog SimpleGeo el 1 de agosto de 2011 :

"El conjunto de datos CC0 Places de SimpleGeo ahora está disponible para su descarga sin costo. Si desea tener 21M + PDI que cubran 63 países, estamos listos para entregarlo en un solo archivo. El archivo es sobre 2GB en formato .ZIP, y recuerde, con la licencia CC0, estos datos se vuelven suyos, libres y claros, para hacer lo que quiera. ¡Esperamos que haga cosas increíbles con ellos! Puede descargarlos ahora haciendo clic aquí " .

Actualización: 12 de enero de 2012: después de que Urban Airship adquiriera SimpleGeo en octubre de 2011, Urban Aiship dijo "reducir la disponibilidad de las versiones actuales de Lugares, Contexto y Almacenamiento [de SimpleGeo] en los próximos meses" ... La fecha objetivo para desconectar oficialmente será el 31 de marzo de 2012. Enlace

RyanKDalton
fuente
33
+1. Escuché a Matt Galligan de SimpleGeo en algún momento diciendo que los datos de ubicación son una cuestión de hecho y deberían estar disponibles de forma gratuita. Es el contexto el que debe venderse. Es bueno ver que 'ellos' lo decían en serio. También ansioso por aprovechar estos datos.
Erick

Respuestas:

10

Intente ajustar las características en lo siguiente:

{"type":"FeatureCollection","features":[ 

****ALL THE DATA HERE -- COMMA SEPARATED****

]}

y separando cada característica con una coma.

Por ejemplo, estas son las dos primeras características del conjunto de datos de IE:

{"geometry": {"type": "Point", "coordinates": [-6.422587, 53.293363]}, "type": "Feature", "id": "SG_41u80gC4971D4Gc0Fv1p8q_53.293363_-6.422587@1308163237", "properties": {"website": "http://www.buongiorno.com", "city": "Dublin", "name": "Buongiorno", "tags": ["mobile", "vas", "community", "social-networking", "connected-devices", "android", "tablets", "smartphones"], "country": "IE", "classifiers": [{"category": "Professional", "type": "Services", "subcategory": "Computer Services"}], "href": "http://api.simplegeo.com/1.0/features/[email protected]", "address": "Lake Drive City West Digital Park", "owner": "simplegeo", "postcode": "3050"}}
{"geometry": {"type": "Point", "coordinates": [-6.250848, 53.339347]}, "type": "Feature", "id": "SG_1dnWbWIg8hX3VyfUKIDRz9_53.339347_-6.250848@1308163237", "properties": {"website": "http://www.simchronise.com", "city": "Dublin", "name": "SIMchronise", "tags": ["mobile-solutions", "mobile-data", "data-synchronisation", "mobile-security", "backup", "restore", "mobile-contacts", "web-2.0-addressbook", "phonebackup"], "country": "IE", "classifiers": [{"category": "Professional", "type": "Services", "subcategory": "Computer Services"}], "href": "http://api.simplegeo.com/1.0/features/[email protected]", "address": "78 Merrion Square", "owner": "simplegeo", "postcode": "Dublin2"}}

... y aquí están como una GeoJSON FeatureCollection:

{"type":"FeatureCollection","features":[ 
{"geometry": {"type": "Point", "coordinates": [-6.422587, 53.293363]}, "type": "Feature", "id": "SG_41u80gC4971D4Gc0Fv1p8q_53.293363_-6.422587@1308163237", "properties": {"website": "http://www.buongiorno.com", "city": "Dublin", "name": "Buongiorno", "tags": ["mobile", "vas", "community", "social-networking", "connected-devices", "android", "tablets", "smartphones"], "country": "IE", "classifiers": [{"category": "Professional", "type": "Services", "subcategory": "Computer Services"}], "href": "http://api.simplegeo.com/1.0/features/[email protected]", "address": "Lake Drive City West Digital Park", "owner": "simplegeo", "postcode": "3050"}},
{"geometry": {"type": "Point", "coordinates": [-6.250848, 53.339347]}, "type": "Feature", "id": "SG_1dnWbWIg8hX3VyfUKIDRz9_53.339347_-6.250848@1308163237", "properties": {"website": "http://www.simchronise.com", "city": "Dublin", "name": "SIMchronise", "tags": ["mobile-solutions", "mobile-data", "data-synchronisation", "mobile-security", "backup", "restore", "mobile-contacts", "web-2.0-addressbook", "phonebackup"], "country": "IE", "classifiers": [{"category": "Professional", "type": "Services", "subcategory": "Computer Services"}], "href": "http://api.simplegeo.com/1.0/features/[email protected]", "address": "78 Merrion Square", "owner": "simplegeo", "postcode": "Dublin2"}}
]}
Fod
fuente
Después de su publicación, me di cuenta de que realmente no había aclarado mi pregunta, así que la edité. Realmente me gustaría convertir los datos a shapefile u otro formato GIS estándar para usar en un SIG de escritorio. Perdón por la pregunta mal redactada, pero gracias por la respuesta @fod.
RyanKDalton
2
La respuesta de Fod te llevará a mitad de camino. Necesitará preprocesar todos estos volcados para ajustar las características en una FeatureCollection como lo sugiere fod, y separarlas con comas. Una manera fácil de hacerlo es reemplazar todas las nuevas líneas con una, + nueva línea (es decir, \ n con, \ n), y luego encerrarlas en FeatureCollection, ya sea a través de un script o manualmente con un editor de texto. Después de haber arreglado todos los archivos para que sean GeoJSON adecuados, puede usar ogr2ogr v1.8.0 o posterior para convertir GeoJSON en shapefile.
Sasa Ivetic
¡Excelente! No me di cuenta de que esto es lo que se necesitaría para hacerlos "legibles". Utilizando el método descrito anteriormente, pude hacer que el archivo se pueda leer directamente a través de QGIS. ¡Gracias un montón! Usé el conjunto de datos de México como una buena muestra, porque solo tenía un tamaño de archivo de 9k. Ahora para abordar "buscar y reemplazar" para el archivo de EE. UU. @ 7,4 GB.
RyanKDalton
Disculpas: no tuve tiempo de hacer un seguimiento antes, pero para su información, puede abrir archivos GeoJSON directamente en QGIS, sin necesidad de convertir a shapefile. Luego, si realmente desea un archivo de forma, puede exportar la capa en ese formato (Capa-> Guardar como ...).
Fod
Lo primero que intenté fue abrir los archivos en QGIS directamente. El problema era que todos los datos estaban "envueltos" en un registro y, por lo tanto, en un punto. Necesitaba seguir las instrucciones que dejaste arriba para que QGIS reconozca cada característica individual en el conjunto de datos.
RyanKDalton
4

¡Muchas gracias a @fod y @Sasa Ivetic por ponerme en el camino correcto! Tuve que posponer este proyecto por un tiempo, pero finalmente volví a él hoy y quería transmitir mis resultados para ayudar a cualquier otra persona que haya tenido problemas con esto.

Utilizando la información que proporcionaron en la respuesta de @ fod, escribí este script de Python para convertir los archivos de volcado en el formato geojson "adecuado". Esta secuencia de comandos py convertirá los datos a un formato legible por ogr2ogr, luego puede convertirlos al formato que desee.

infile = sys.argv[1]
outfile = sys.argv[2]


## Prepare the input/output for read/write of files
fin = open(infile, 'r')
fout = open(outfile, 'w')


##Prepend the new file with approriate header info
fout.write('{"type":"FeatureCollection","features":[' + '\n')


## Read each line from the input and write to the output
for line in fin:
    ##write each line in the table, and replace carriage returns with "," + carriage return
    fout.write(line.replace("\n",",\n"))

##Append the new file with approriate footer info
fout.write(']}')

##Close the input and output files to release file locking
fin.close()
fout.close()
RyanKDalton
fuente
Nota: puede tener problemas para convertir los archivos geojson convertidos a través de ogr2ogr, debido a las limitaciones de memoria del sistema operativo. Eche un vistazo a esta pregunta relacionada: gis.stackexchange.com/questions/16307/…
RyanKDalton
Excelente ! Microsoft tiene limitaciones de memoria
1

Puedes probar FME para hacer esto. Lee GeoJSON y escribe Shape y, lo que es más importante, tiene un montón de "transformadores" para manejar JSON (JSONExploder, JSONFlattener, JSONExtractor). Así que creo que ayudaría a sacar el contenido en un formato utilizable.

¡También tiene una prueba gratuita disponible!

NB: Trabajo para Safe Software, creadores de FME.

Mark Ireland
fuente
¿hay algunos espacios de trabajo de muestra que muestren cómo escribir desde geojson a shp?
kflaw