Mehr

MS SQL-Tabelle mit Geometriefeld zur Feature-Class


Ich habe eine Tabelle in einer nativen SQL-Datenbank (keine Geodatabase, dc_geobank_public.sde im Code) mit cca. 300 000 Datensätze und 18 Felder. Zwei der Felder enthalten projizierte X- und Y-Koordinaten und ein Feld enthält Geometrie mit dem SQL-Geometrietyp. Der räumliche Index wird regelmäßig mit Standardparametern in MS SQL Server neu erstellt. Der Projektionscode ist EPSG:23700. Auf Grundlage dieser Daten möchte ich täglich eine Feature-Class in einer Geodatabase (dc_geobank_map.sde im Code) erstellen und aktualisieren.

Bisher habe ich das folgende Skript geschrieben, und es erledigt den Job, aber das Klicken auf die Tabelle in ArcCatalog und die Verwendung von "Tabelle erstellen… aus XY-Daten" läuft 100-mal schneller. (Das Skript läuft 6 Stunden und das Tool "Tabelle erstellen… aus XY-Daten" läuft 3 Minuten). Hier ist das Skript:

#importing arcpy library import arcpy #define workspace, dies ist die native SQL-Datenbank arcpy.env.workspace = r"C:scriptsdc_geobank.sde" print "changed workspace!" #wir lassen das Skript die vorhandene Feature-Class arcpy.env.overwriteOutput = True überschreiben print "output overwrite set!" #creating xy event layer from table arcpy.MakeXYEventLayer_management("geobank.dbo.FRS_fullos","EOV_X","EOV_Y","furasxy","23700") print "eventlayer ready!" #change workspace, hier sollte die Feature-Class erstellt werden, und DIES ist eine Geodatabase arcpy.env.workspace = r"C:scriptsdc_geobank_map.sde" print "changed workspace!" #Konvertieren des Ereignis-Layers in die Feature-Class arcpy.CopyFeatures_management("furasxy","furas") #projizieren der Feature-Class in die Web Mercator-Projektion arcpy.Project_management("geobank_map.DBO.furas"","furasprojected","3857")

Weiß jemand, was das Werkzeug "Feature-Class aus XY-Daten erstellen" verwenden könnte, das so viel schneller ist? Bisher nutze ich das Geometriefeld nicht, aber ich denke, es sollte nützlich sein.

EDIT: Zum besseren Verständnis des Problems: Später möchte ich einen Kartenservice und eine Web-Mapping-Anwendung basierend auf dieser Feature-Class erstellen. Also meine Frage:

Wie kann man eine Feature-Class aus der Tabelle schneller erstellen?

Ich bin auf dem 10.2.1 ArcGIS-Stack.


Die Lösung bestand darin, einen SearchCursor und einen InsertCursor zu verwenden, um die Daten aus dem Ereignis-Layer in die Feature-Class zu kopieren. Diese Lösung wurde hier gefunden.

Es ist um ein Vielfaches schneller als das arcpy.CopyFeatures_management-Tool.