Ich habe eine CSV-Datei mit einer Größe von 133 MB und über 1,3 Millionen Datenzeilen. Jede Datenzeile hat ein eigenes Lat / Long und ich habe mich gefragt, wie ich diese Punkte basierend auf Lat / Long in ArcGIS Desktop 10 am besten anzeigen und letztendlich in ein Punkt-Shapefile umwandeln kann.
Bisher habe ich das Tool "XY-Ereignisebene erstellen" ausprobiert, aber das schlägt immer wieder fehl ...
FEHLER 000212: XY-Ereignisquelle kann nicht erstellt werden Fehler beim Ausführen (MakeXYEventLayer).
Die CSV-Datei ist ordnungsgemäß formatiert und die Lat / Long-Felder sind numerisch, sodass ich keine Ahnung habe, warum sie immer wieder abstürzt.
So sehen die ersten beiden Zeilen meiner CSV aus, die erste Zeile sollte die Überschrift sein:
"LAT","LONG","CUSTOMER_MASTER_ID","STORE_NBR","TRANSACTION_DT","SKU_DIVISION_ID","SKU_DEPARTMENT_ID","SKU_CLASS_ID","SKU_CATEGORY_ID","SKU_NBR","SALES_AMT"
"32.363544","-110.969778","2000000792627","2940","8/11/2010","2060","3920","5120","84021","5127866","13.99"
Irgendwelche Ideen?
quelle
Antworten:
Dies mag etwas komplizierter sein, aber wenn meine zwei Cent etwas wert sind (und wenn Sie MS Office-Produkte verwenden), würde ich empfehlen, Ihre CSV-Datei als Tabelle in eine MS Access-MDB-Datenbank zu importieren. (Hinweis: Für eine MDB-Datenbank gibt es eine Größenbeschränkung von 2 GB .)
Anschließend können Sie diese Access .mdb-Tabelle zu Ihrem ArcMap-Dokument hinzufügen und mit der rechten Maustaste auf> "x, y-Daten anzeigen" klicken:
Wenn Sie Ihre Daten in einer Datenbank speichern und aus dieser Tabelle lesen, um Ihre x, y-Datenpunkte anzuzeigen, können Sie Änderungen an Ihren Daten vornehmen. Diese Änderungen werden beim nächsten Aktualisieren der Kartenanzeige automatisch in den x, y-Datenpunkten angezeigt anstatt jedes Mal ein neues Shapefile oder eine neue Ebenenansicht erstellen zu müssen. Dies scheint auch eine robustere Methode zu sein, um eine so große Datenmenge zu verwalten.
quelle
Da die Lat- und Long-Feldwerte
"32.363544","-110.969778"
in Anführungszeichen gesetzt sind, werden sie nicht wirklich als numerisch behandelt.Für die Anzeige der xy-Daten müssen die Felder x und y numerisch sein.
Entfernen Sie die umgebenden Anführungszeichen und es sollte funktionieren. Wenn Sie Zugriff auf eine Unix-Maschine haben, würde grep / sed diesen Job sicher erleichtern. Es gibt auch Windows-Ports dieser Tools.
Außerdem würde ich vermeiden, "Long" als Feldnamen zu verwenden - es kann Fälle geben, in denen es als reserviertes Wort behandelt wird.
quelle
Haben Sie eine Kopfzeile in der CSV-Datei, die ArcGIS möglicherweise verwirrt?
Versuchen Sie auch, nur eine der Zeilen aus der CSV zu kopieren, und prüfen Sie, ob dies funktioniert. Auf diese Weise können Sie Formatierungsfehler vermeiden. Verwenden Sie einen Texteditor wie UltraEdit oder Notepad ++, der große Textdateien öffnen kann, um Ihre Beispielzeile zu kopieren.
Ich weiß nicht, wie der ArcGIS-Importer funktioniert, aber Sie können feststellen, dass die Datei zu groß ist, um damit fertig zu werden, sodass sie möglicherweise in Blöcke aufgeteilt werden muss.
quelle
Wenn Sie über SQL Server Express verfügen, können Sie möglicherweise einen Teil des Hebens ausführen.
Dies ist aus ein paar verschiedenen Abfragen zusammengeschustert (wobei die Lat / Long-Textfelder waren):
Möglicherweise müssen Sie den SQL Server für verteilte Ad-hoc-Abfragen konfigurieren.
Es mag für einen Job übertrieben sein, aber es lohnt sich, wenn Sie häufig mit vielen verschiedenen Dateien arbeiten. Obwohl es sich um große Dateien handelt, sollten Sie sich bcp.exe ( http://msdn.microsoft.com/en-us/library/aa174646(v=sql.80).aspx ) für den Massenimport ansehen .
quelle
Wenn Sie nur ein Shapefile daraus erstellen möchten, versuchen Sie es mit QGIS www.qgis.org. Das Plugin für abgegrenzte Texte, das mit QGIS geladen werden kann, macht dies einfach. Wenn Sie es dann in ArcMap einbinden möchten, stellen Sie die Projektion zuerst über ArcCatalog sicher.
quelle
Stellen Sie außerdem sicher, dass Ihre Titel keine Leerzeichen enthalten. Zum Beispiel sollte "UTM Zone" "UTM_Zone" sein. Nur etwas zu beachten, da es beim Importieren ein Problem für mich war.
quelle