मेरे पास बहुभुज सुविधा से जानकारी के साथ एक बिंदु आकार में एक क्षेत्र को अपडेट करने के लिए एक सरल चापलूसी स्क्रिप्ट है जो यह भीतर है। अर्पी में 100 अंक करने के लिए 9 मिनट लगते हैं लेकिन आर्कमैप में एक स्थानिक जुड़ाव तात्कालिक है। मुझे यकीन है कि इस समस्या को हल करने के लिए एक त्वरित स्थापित तरीका है। क्या कोई मुझे सही दिशा दिखा सकता है?
import took 0:00:07.085000
extent took 0:00:05.991000
one pt loop took 0:00:03.780000
one pt loop took 0:00:03.850000
one pt loop took 0:00:03.791000
import datetime
t1 = datetime.datetime.now()
import arcpy
t2 = datetime.datetime.now()
print "import took %s" % ( t2-t1)
#set up environment
arcpy.env.workspace = "data\\"
arcpy.env.overwriteOutput = True
desc = arcpy.Describe("parcels.shp")
ext = desc.Extent
extent = (ext.XMin,ext.XMax,ext.YMin,ext.YMax)
t3 = datetime.datetime.now()
print "extent took %s" % (t3 -t2)
fc = arcpy.CreateRandomPoints_management("", "malls.shp", "", ext, 100, "", "POINT", "")
arcpy.AddField_management("malls.shp", 'ParcelID', 'LONG')
rows = arcpy.UpdateCursor('malls.shp',"","",'ParcelID')
for row in rows:
t4 = datetime.datetime.now()
pt = row.Shape.getPart()
for polyrow in arcpy.SearchCursor('parcels.shp'):
t6 = datetime.datetime.now()
poly = polyrow.getValue('Shape')
if extent[0]<pt.X<extent[1] and extent[2]<pt.Y<extent[3]:
if poly.contains(pt):
print "works"
row.ParcelID = polyrow.Parcels_ID
rows.updateRow(row)
break #we can stop looking for matches since
t7 = datetime.datetime.now()
"a full poly loop took %s" % (t7-t6)
t5 = datetime.datetime.now()
print "one pt loop took %s" % (t5-t4)
print datetime.datetime.now() -t1
arcpy.da
(डेटा एक्सेस) मॉड्यूल को (बहुत) कर्सर के तेज संस्करणों के साथ जोड़ा गया ।