Comment convertir le fichier GeoJSON de SimpleGeo Places en fichier de formes?

15

SimpleGeo a récemment mis gratuitement à disposition son ensemble de données "Lieux", ce qui est EXCEPTIONNEL, car nous pouvons désormais l'utiliser à nos propres fins, même hors ligne. J'ai donc téléchargé le jeu de données de 2 Go , qui contient des fichiers pays compressés au format GeoJSON.

Voici où commence mon problème ... lorsque j'essaie de charger un fichier de pays (* .geojson) directement dans QGIS ou même de le convertir en fichier de formes à l'aide d'ogr2ogr, je me retrouve avec une seule fonctionnalité ponctuelle.

De toute évidence, il y a plus de données disponibles dans ces fichiers que je ne suis pas en mesure de «voir» ou de récupérer, alors qu'est-ce que je fais mal? Quelqu'un peut-il me fournir des suggestions sur la façon de transformer ces fichiers en fonctionnalités SIG utilisables?

Question mise à jour: je veux vraiment convertir le fichier geojson en un fichier de formes (ou un format SIG standard similaire) pour une utilisation dans un logiciel SIG de bureau.

Extrait du blog SimpleGeo du 1er août 2011 :

"L'ensemble de données CC0 Places de SimpleGeo est désormais disponible en téléchargement gratuit. Si vous souhaitez mettre la main sur 21 millions de POI couvrant 63 pays, nous sommes prêts à vous les transmettre dans un seul fichier. Le fichier est 2 Go au format .ZIP, et n'oubliez pas qu'avec la licence CC0, ces données deviennent les vôtres - libres et claires - pour faire ce que vous voulez. Nous espérons que vous en ferez des choses incroyables! Vous pouvez les télécharger maintenant en cliquant ici. "

Mise à jour: 12 janvier 2012: Après l'acquisition de SimpleGeo par Urban Airship en octobre 2011, Urban Aiship a déclaré: «réduire la disponibilité des versions actuelles des lieux, du contexte et du stockage de [SimpleGeo] au cours des prochains mois.» ... La date cible pour retirer officiellement la prise sera le 31 mars 2012. Lien

RyanKDalton
la source
3
+1. J'ai écouté Matt Galligan de SimpleGeo dire que les données de localisation sont une réalité et devraient être disponibles gratuitement. C'est le contexte qui doit être vendu. C'est bon de voir «ils» le pensaient. Toujours désireux d'exploiter ces données.
Erick

Réponses:

10

Essayez d'encapsuler les fonctionnalités comme suit:

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

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

]}

et séparer chaque entité par une virgule.

Par exemple, voici les deux premières fonctionnalités de l'ensemble de données 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"}}

... et les voici en tant que FeatureCollection GeoJSON:

{"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
la source
Après votre publication, j'ai réalisé que je n'avais vraiment pas clarifié ma question, je l'ai donc modifiée. Je voudrais vraiment convertir les données en shapefile ou autre format SIG standard pour une utilisation dans un SIG de bureau. Désolé pour la question mal formulée mais merci pour la réponse @fod.
RyanKDalton
2
La réponse de fod vous amènera à mi-chemin. Vous devrez pré-traiter tous ces vidages pour encapsuler les fonctionnalités dans une FeatureCollection comme suggéré, et les séparer par des virgules. Un moyen simple de le faire est de remplacer tous les sauts de ligne par un, + saut de ligne (c'est-à-dire \ n avec, \ n), puis de les inclure dans FeatureCollection, soit via un script, soit manuellement avec un éditeur de texte. Après avoir corrigé tous les fichiers pour qu'ils soient correctement GeoJSON, vous pouvez utiliser ogr2ogr v1.8.0 ou version ultérieure pour convertir GeoJSON en shapefile.
Sasa Ivetic
Excellent! Je ne savais pas que c'était ce qu'il faudrait pour les rendre "lisibles". En utilisant la méthode décrite ci-dessus, j'ai pu rendre le fichier directement lisible via QGIS. Merci beaucoup! J'ai utilisé l'ensemble de données Mexico comme un bon échantillon, car il ne faisait que 9k de taille de fichier. Passons maintenant à la «recherche et remplacement» pour le fichier américain @ 7,4 Go.
RyanKDalton
Excuses - je n'ai pas eu le temps de faire un suivi plus tôt mais pour info, vous pouvez ouvrir les fichiers GeoJSON directement dans QGIS - pas besoin de convertir en shapefile. Ensuite, si vous voulez vraiment un fichier de formes, vous pouvez exporter le calque dans ce format (Calque-> Enregistrer sous ...).
fod
La première chose que j'ai essayée a été d'ouvrir directement les fichiers dans QGIS. Le problème était que toutes les données étaient "regroupées" dans un enregistrement, et donc un point. J'ai dû suivre les instructions que vous avez laissées ci-dessus pour que QGIS reconnaisse chaque entité individuelle dans l'ensemble de données.
RyanKDalton
4

Merci beaucoup à @fod & @Sasa Ivetic de m'avoir mis sur la bonne voie! J'ai dû abandonner ce projet pendant un certain temps, mais j'y suis finalement retourné aujourd'hui et je voulais transmettre mes résultats pour aider toute autre personne qui aurait pu avoir des difficultés avec cela.

En utilisant les informations qu'ils ont fournies dans la réponse de @ fod, j'ai écrit ce script Python pour convertir les fichiers de vidage au format geojson "approprié". Ce script py convertira les données dans un format lisible par ogr2ogr, puis vous pourrez le convertir dans le format que vous souhaitez.

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
la source
Remarque: vous pouvez rencontrer des problèmes pour convertir les fichiers geojson convertis via ogr2ogr, en raison des limitations de la mémoire du système d'exploitation. Jetez un oeil à cette question connexe: gis.stackexchange.com/questions/16307/…
RyanKDalton
Génial ! Microsoft a des limites de mémoire
1

Vous pouvez essayer FME pour ce faire. Il lit GeoJSON et écrit Shape et - plus important encore - a un tas de "transformateurs" pour gérer JSON (JSONExploder, JSONFlattener, JSONExtractor). Je pense donc que cela aiderait à diffuser le contenu dans un format utilisable.

Il dispose également d'un essai gratuit!

NB: Je travaille pour Safe Software, fabricant de FME.

Mark Ireland
la source
y a-t-il des exemples d'espaces de travail qui montrent comment écrire de geojson à shp?
kflaw