J'essaie de cartographier un CSV avec plus d'un million de points lat / lon aux États-Unis sans métadonnées. Je n'ai jamais essayé de mapper autant de données et je veux savoir quelles mesures prendre. Je sais que c'est trop de données pour QGIS, j'ai donc essayé de les diviser en 100 000 CSV de ligne, mais j'ai ensuite obtenu beaucoup de fichiers dont je ne savais pas quoi faire. Je pense qu'il serait préférable d'agréger les points par bloc de recensement, mais je ne sais pas la meilleure façon de le faire en utilisant Javascript (je n'ai jamais utilisé Python) ou des outils en ligne de commande? Aucune suggestion?
9
Réponses:
Je recommanderais d'utiliser PostgreSQL / PostGIS, car il est pris en charge nativement par QGIS, dispose de quelques fonctions intégrées pratiques pour se joindre à d'autres données spatiales (comme les secteurs de recensement), et l'utilisation d'une base de données devrait limiter les problèmes de mémoire avec les grands ensembles de données. Mon ensemble d'étapes recommandé est ci-dessous. Pour exécuter des commandes SQL, vous pouvez utiliser PGAdmin ou QGIS, le premier vous donnera des erreurs plus informatives sur les requêtes, le second vous permettra de charger les résultats des requêtes sous forme de couches sur une carte. Pour accéder à ce dernier, allez sur
Database > DB Manager > DB Manager
et cliquez sur le deuxième bouton.CREATE TABLE
commande ( exemple ) dans la fenêtre SQL QGIS ou dans la fenêtre SQL de PGAdminImport...
(cette dernière peut être délicate, je recommanderais donc COPY pour des jeux de données plus volumineux).Ajoutez une colonne de géométrie à votre table en exécutant le SQL suivant dans PGAdmin ou dans la fenêtre SQL de QGIS.
Créez les géométries de points en utilisant quelque chose comme
Afficher un sous-ensemble de données en utilisant une
SELECT
instruction avec quelque chose commeLIMIT 50000
Ou joignez-vous aux données du recensement avec quelque chose comme
SELECT c.gid, c.geom
FROM Census c
INNER JOIN yourdata ON ST_Within (yourdata.geom, c.geom)
Références de fonction:
ST_Within
ST_MakePoint
ST_SetSRID
la source
Import...
pour accéder à l'assistant d'importation, ou utiliser une commande COPIER postgresql.org/docs/current/static/sql-copy.html Je mettrai à jour la réponseJ'ai récemment travaillé avec un ensemble de données de 1,4 million de points importés d'un CSV. Je me suis assuré de supprimer tous les champs non pertinents dans le csv. Cela a bien fonctionné pour moi, même si certains processus ont pris un peu de temps à exécuter. (QGIS 2.12, 64 bits Windows 7, 8 Go de RAM)
la source
Un candidat R fwiw, en pseudocode:
Cela vous donnera un fichier pointspoint.tab dans le répertoire de travail que vous pouvez lire avec QGIS. Ou choisissez "ESRI Shapefile" pour créer un fichier points.shp, ou quel que soit le format dont vous avez besoin. QGIS utilise GDAL un peu comme rgdal, il y a donc beaucoup de chevauchements. Il existe des mécanismes Python analogues.
Puisque vous n'avez pas de métadonnées, vous pouvez avoir un ensemble après avoir attribué des coordonnées (x) pour définir proj4string (x) <- CRS ("+ proj = quelque chose + etc"), mais nous ne pouvons que deviner vos données.
la source