Ich sammle X- und Y-Werte von einem Webdienst (Twitter) über ein Python-Skript. Langfristig wird dies über einen Zeitraum von Monaten laufen, und ich beabsichtige, bei etwa 6 Millionen Punkten anzuhalten.
Die ursprünglichen Koordinaten sind geografisch WGS84, aber ich muss diese in projizierten WGS Web Mercator konvertieren. Diese Tabelle wird später in einem ArcGIS Server-Karten-Service veröffentlicht und zwischengespeichert.
Dies ist ein persönliches Projekt zum Erlernen von Python ohne Deadline. Sie haben sich gefragt, ob es eine gute Idee ist, nur die systemeigenen räumlichen Typen von SQL Server zu verwenden.
Mein momentan ungetesteter Plan:
- Erstellen Sie eine Tabelle mit SSMS, mit einem GEOMETRY-Feld-Setup (und einigen anderen Attributen)
- Verwenden Sie in meinem Python-Skript arcpy oder pyproj , um die Lat / Lons in WGS84 in WGS84 Web Mercator zu konvertieren.
- Verwenden Sie pymssql, um Datensätze einzufügen, und fügen Sie die Punkte in das Feld GEOMETRIE in der Tabelle ein.
Meine Frage ist, was wäre ein guter, einfacher und effizienter Ansatz, um ein Paar Lat / Lons in WGS84 zu verwenden und diese dann in eine SQL Server-Tabelle einzufügen, wobei räumliche SQL Server-Typen verwendet werden und eine resultierende Punktebene vorliegt WGS84 Web Mercator, damit ich sie in ArcGIS Desktop 10.1 rendern / abfragen kann?
Ich habe bei Bedarf Zugriff auf arcpy / ArcSDE 10.1, wollte dies jedoch als Beispiel dafür verwenden, dass ArcSDE nicht erforderlich ist.
Antworten:
Ich habe meinen Plan, wie in Frage angegeben, ausgeführt.
Zum Einfügen von Punkten in SQL Server war dieser Beitrag für mich sehr nützlich.
Folgendes hat bei mir funktioniert:
quelle
Ich bin mir nicht sicher, welche Workflow-Anforderungen Sie insgesamt haben. Wenn Sie jedoch Zugriff auf arcpy haben, können Sie
arcpy.ConvertCoordinateNotation_management
Ihre SQL-Punktetabelle verwenden, um sie in eine Point-Feature-Class mit der von Ihnen gewünschten Projektion zu konvertieren. SQL ist nicht erforderlich Server-Spatial-Types oder ArcSDE.quelle
Ich gehe davon aus, dass Sie eine oder mehrere große Dateien mit xy und einigen anderen Daten haben. Erstens gibt es meines Wissens keine Projektionsunterstützung in MS SQL (2008 r2 oder höher). Es gibt Lösungen von Drittanbietern und eine proj.net-Bibliothek, mit der Sie eine erstellen können. Daher sehe ich zwei Optionen beim Speichern von Daten in der Datenbank. Wenn Sie MS SQL verwenden, müssen Sie die Daten in die gewünschte Projektion umprojizieren, bevor Sie die Datenbank einfügen, oder Sie speichern die Daten einfach in der PostGIS-Datenbank und transformieren sie dort. PostGIS verfügt über ein viel besseres Toolset in der Datenbank als MS SQL
quelle
GeoAlchemy soll die Arbeit mit GeometryColumns erledigen. Unter Windows / Python 2.7 / sqlalchemy 0.9.6 konnte ich es jedoch aufgrund von AttributeError nicht zum Laufen bringen: Typ Objekt 'ColumnProperty' hat kein Attribut 'ColumnComparator'
quelle