Suite

Table MS SQL avec champ géométrique vers classe d'entités

Table MS SQL avec champ géométrique vers classe d'entités


J'ai une table dans une base de données SQL native (pas de géodatabase, dc_geobank_public.sde dans le code) avec cca. 300 000 enregistrements et 18 champs. Deux des champs contiennent des coordonnées X et Y projetées, et un champ contient une géométrie avec le type de géométrie SQL. L'index spatial est reconstruit régulièrement avec les paramètres par défaut dans MS SQL Server. Le code de projection est EPSG : 23700. Sur la base de ces données, je souhaite créer et mettre à jour quotidiennement une classe d'entités dans une géodatabase (dc_geobank_map.sde dans le code).

Jusqu'à présent, j'ai écrit le script suivant et il fait le travail, mais en cliquant sur la table dans ArcCatalog et en utilisant "Créer une table… à partir de données XY", cela s'exécute 100 fois plus rapidement. (Le script s'exécute pendant 6 heures et l'outil "Créer une table… à partir de données XY" s'exécute pendant 3 minutes). Voici le script :

#importing arcpy library import arcpy #define workspace, c'est la base de données SQL native arcpy.env.workspace = r"C:scriptsdc_geobank.sde" print "changed workspace!" #nous laissons le script écraser la classe d'entités existante arcpy.env.overwriteOutput = True print "output overwrite set!" #création d'une couche d'événements xy à partir de la table arcpy.MakeXYEventLayer_management("geobank.dbo.FRS_fullos","EOV_X","EOV_Y","furasxy","23700") print "eventlayer ready!" #change workspace, c'est là que la classe d'entités doit être créée, et CECI est une géodatabase arcpy.env.workspace = r"C:scriptsdc_geobank_map.sde" print "changed workspace!" #convertir la couche d'événements en classe d'entités arcpy.CopyFeatures_management("furasxy","furas") #projeter la classe d'entités dans la projection Web Mercator arcpy.Project_management("geobank_map.DBO.furas"","furasprojected","3857")

Quelqu'un sait ce que l'outil "Créer une classe d'entités à partir de données XY" pourrait utiliser pour être tellement plus rapide ? Jusqu'à présent, je n'utilise pas le domaine de la géométrie, mais je suppose que cela devrait être utile.

EDIT : Pour une meilleure compréhension du problème : plus tard, j'aimerais créer un service de carte et une application de cartographie Web basés sur cette classe d'entités. Alors ma question :

Comment créer une classe d'entités à partir de la table plus rapidement ?

Je suis sur la pile ArcGIS 10.2.1.


La solution consistait à utiliser un SearchCursor et un InsertCursor pour copier les données de la couche d'événements vers la classe d'entités. Cette solution a été trouvée ici.

Il est plusieurs fois plus rapide que l'outil arcpy.CopyFeatures_management.


Voir la vidéo: modifier la structure dune table SQL