มากกว่า

ตาราง MS SQL พร้อมฟิลด์เรขาคณิตเพื่อแสดงคลาส

ตาราง MS SQL พร้อมฟิลด์เรขาคณิตเพื่อแสดงคลาส


ฉันมีตารางในฐานข้อมูล SQL ดั้งเดิม (ไม่มีฐานข้อมูลทางภูมิศาสตร์, dc_geobank_public.sde ในรหัส) ด้วย cca 300,000 ระเบียนและ 18 ฟิลด์ สองฟิลด์มีพิกัด X และ Y ที่คาดการณ์ไว้ และหนึ่งฟิลด์มีรูปทรงเรขาคณิตที่มีประเภทเรขาคณิตของ SQL ดัชนีเชิงพื้นที่ถูกสร้างขึ้นใหม่เป็นประจำด้วยพารามิเตอร์เริ่มต้นใน MS SQL Server รหัสการฉายภาพคือ EPSG:23700 จากข้อมูลนี้ ฉันต้องการสร้างและอัปเดตคลาสคุณลักษณะในฐานข้อมูลทางภูมิศาสตร์ (dc_geobank_map.sde ในโค้ด) ทุกวัน

จนถึงตอนนี้ฉันได้เขียนสคริปต์ต่อไปนี้แล้ว และมันทำงานได้ แต่การคลิกที่ตารางใน ArcCatalog และการใช้ "สร้างตาราง… จากข้อมูล XY" จะทำงานเร็วขึ้น 100 เท่า (สคริปต์ทำงานเป็นเวลา 6 ชั่วโมง และเครื่องมือ "สร้างตาราง… จากข้อมูล XY" จะทำงานเป็นเวลา 3 นาที) นี่คือสคริปต์:

#importing ไลบรารี arcpy นำเข้า arcpy #define พื้นที่ทำงาน นี่คือฐานข้อมูล SQL ดั้งเดิม arcpy.env.workspace = r"C:scriptsdc_geobank.sde" พิมพ์ "พื้นที่ทำงานที่เปลี่ยนแปลง!" #เราให้สคริปต์เขียนทับคลาสคุณลักษณะที่มีอยู่ arcpy.env.overwriteOutput = True print "output overwrite set!" #การสร้างเลเยอร์เหตุการณ์ xy จากตาราง arcpy.MakeXYEventLayer_management("geobank.dbo.FRS_fullos","EOV_X","EOV_Y","furasxy","23700") พิมพ์ "eventlayer พร้อมแล้ว!" #change พื้นที่ทำงาน นั่นคือที่ที่ควรสร้างคลาสคุณลักษณะ และนี่คือฐานข้อมูล geodatabase arcpy.env.workspace = r"C:scriptsdc_geobank_map.sde" พิมพ์ "เปลี่ยนพื้นที่ทำงาน!" #แปลงเลเยอร์เหตุการณ์เป็นคลาสคุณลักษณะ arcpy.CopyFeatures_management("furasxy","furas") #project คลาสคุณลักษณะเป็น Web Mercator projection arcpy.Project_management("geobank_map.DBO.furas"","furasprojected","3857")

ใครทราบบ้างว่าเครื่องมือ "สร้างคลาสคุณลักษณะจากข้อมูล XY" อาจใช้งานได้เร็วกว่ามาก จนถึงตอนนี้ ฉันไม่ได้ใช้ประโยชน์จากฟิลด์เรขาคณิต แต่ฉันคิดว่ามันน่าจะมีประโยชน์

แก้ไข: เพื่อความเข้าใจที่ดีขึ้นของปัญหา: ต่อมาฉันต้องการให้บริการแผนที่และแอปพลิเคชันการทำแผนที่เว็บตามคลาสคุณลักษณะนี้ ดังนั้นคำถามของฉัน:

วิธีทำให้คลาสคุณลักษณะจากตารางเร็วขึ้น?

ฉันอยู่บนสแต็ก 10.2.1 ArcGIS


วิธีแก้ไขคือใช้ SearchCursor และ InsertCursor เพื่อคัดลอกข้อมูลจากชั้นเหตุการณ์ไปยังคลาสคุณลักษณะ พบวิธีแก้ปัญหานี้ที่นี่

เร็วกว่าเครื่องมือ arcpy.CopyFeatures_management หลายเท่า