Ich versuche, eine CSV mit über einer Million Lat / Lon-Punkten in den USA ohne Metadaten abzubilden. Ich habe noch nie versucht, so viele Daten abzubilden, und möchte wissen, welche Schritte ich unternehmen sollte. Ich weiß, dass es zu viele Daten für QGIS sind, also habe ich versucht, sie in CSVs mit 100.000 Zeilen aufzuteilen, habe dann aber viele Dateien erhalten, mit denen ich nicht umgehen konnte. Ich denke, es ist vielleicht am besten, die Punkte nach Zensusblock zu aggregieren, aber Sie wissen nicht, wie Sie dies am besten mit Javascript (ich habe noch nie Python verwendet) oder Befehlszeilentools tun können. Irgendwelche Vorschläge?
9
Antworten:
Ich würde die Verwendung von PostgreSQL / PostGIS empfehlen, da es von QGIS nativ unterstützt wird, einige praktische integrierte Funktionen zum Verknüpfen mit anderen räumlichen Daten (wie Zensusdaten) enthält und die Verwendung einer Datenbank Speicherprobleme bei großen Datenmengen einschränken sollte. Meine empfohlenen Schritte sind unten aufgeführt. Um SQL-Befehle auszuführen, können Sie entweder PGAdmin oder QGIS verwenden. Ersteres führt zu informativeren Fehlern bei Abfragen. Mit letzterem können Sie die Ergebnisse von Abfragen als Layer auf einer Karte laden. Um auf Letzteres zuzugreifen, gehen Sie zu
Database > DB Manager > DB Manager
und klicken Sie auf die zweite Schaltfläche.CREATE TABLE
Befehl ( Beispiel ) entweder im QGIS SQL-Fenster oder im SQL-Fenster von PGAdminImport...
(letzteres kann schwierig sein, daher würde ich COPY für größere Datenmengen empfehlen).Fügen Sie Ihrer Tabelle eine Geometriespalte hinzu, indem Sie das folgende SQL entweder in PGAdmin oder im QGIS SQL-Fenster ausführen.
Erstellen Sie die Punktgeometrien mit so etwas wie
Zeigen Sie eine Teilmenge von Daten an, indem Sie eine
SELECT
Anweisung mit so etwas wie verwendenLIMIT 50000
Oder nehmen Sie an Volkszählungsdaten mit so etwas teil
SELECT c.gid, c.geom
AUS Zählung c
INNER JOIN yourdata ON ST_Within (yourdata.geom, c.geom)
Funktionsreferenzen:
ST_Within
ST_MakePoint
ST_SetSRID
quelle
Import...
zuzugreifen, oder einen COPY-Befehl verwenden. Postgresql.org/docs/current/static/sql-copy.html Ich werde die Antwort aktualisierenIch habe kürzlich mit einem Datensatz von 1,4 Millionen Punkten gearbeitet, die aus einer CSV importiert wurden. Ich habe darauf geachtet, alle irrelevanten Felder in der CSV zu löschen. Es hat gut funktioniert, obwohl die Ausführung einiger Prozesse einige Zeit in Anspruch nahm. (QGIS 2.12, 64 Bit Windows 7, 8 GB RAM)
quelle
Ein R-Kandidat fwiw im Pseudocode:
Dadurch erhalten Sie eine filepoints.tab im Arbeitsverzeichnis, die Sie mit QGIS lesen können. Oder wählen Sie "ESRI Shapefile", um eine filepoints.shp zu erstellen, oder welches Format auch immer Sie benötigen. QGIS verwendet GDAL ähnlich wie rgdal, daher gibt es viele Überlappungen. Es gibt analoge Python-Mechanismen.
Da Sie keine Metadaten haben, können Sie nach dem Zuweisen von Koordinaten (x) einen Satz haben, um proj4string (x) <- CRS ("+ proj = etwas + etc") zu setzen, aber wir können nur für Ihre Daten raten.
quelle