আরকজিআইএস 10 এবং পাইথন-এ আমি একটি শেফফাইলে প্রতিটি বহুভুজগুলির সীমা (xmax, ymax, xmin, ymin) পেতে চাই।
আমি ব্যবহার করে পুরো শেফফিলের ব্যাপ্তি পেতে পারি
file=r"D:\SCRATCH\ARCGIS\100k_trc_tiles_TVM.shp"
desc=arcpy.Describe(file)
print desc.extent.Xmax
394551,52085039532
তবে ডেটাসেটে প্রতিটি সারির জন্য একই তথ্য কীভাবে পাওয়া যায় তা আমি খুঁজে বের করতে পারি না।
rows = arcpy.SearchCursor("100k_trc_tiles_TVM")
for row in rows:
print row
ডেটাসেটে 31 টি সারি মুদ্রণ করে তবে
for row in rows:
desc=arcpy.Describe(row)
print desc.extent.Xmax
একটি ত্রুটি দেয়।
রানটাইম ত্রুটি: অবজেক্ট: বর্ণনা ইনপুট মানটি বৈধ প্রকার নয়
আমি "গণনা জ্যামিতি" ব্যবহার করে সারণিতে সীমাবদ্ধতা মান যুক্ত করার কথা ভাবছিলাম তবে এটি কেবল সেন্ট্রয়েড দেয়। তারপরে আমি অনুমান করি যে আমরা সারি জাতীয় কিছু ব্যবহার করতে পারি etGETValue ("xmax")।
এটি বলা হচ্ছে যে আমি জানি যে আমরা http://www.ian-ko.com/free/free_arcgis.htm থেকে ফাংশনটি ব্যবহার করে এক্স / ওয়াই, সর্বোচ্চ / মিনিট তৈরি করতে পারি তবে আমরা যদি যুক্ত করা এড়াতে পারি তবে ভাল হবে ক্ষেত্রগুলি, বিশেষত যদি আরকপি এই মানগুলি পেতে পারে।
মূলত আমাকে জিওপ্রোসেসিংয়ের জন্য 30 টি ডেটা (1: 100,000 মানচিত্রের শিট অনুসারে) ক্লিপ করার জন্য ক্লিপ সরঞ্জামটিতে ফিড দেওয়ার এক্সটেন্টগুলি পাওয়া দরকার যেহেতু বিভক্ত সরঞ্জামটি ডেটাসেটের বৃহত আকারের কারণে ব্যর্থ হয় (দেখুন কেন ছেদ করে দেয় ত্রুটি 999999: ফাংশনটি কার্যকর করতে ত্রুটি অবৈধ টোপোলজি [অনেকগুলি লিনেগ সমাপ্তি]? )। আমি এটি স্বয়ংক্রিয় করতে চাই কারণ এটি বেশ কয়েকটি ডেটাসেটে পুনরাবৃত্তি হয়।
=== কার্যকারী স্ক্রিপ্ট ===
# Emulates Arc Info SPLIT tool by using Clip but
# Requires a FC from which each row is used as the input clip feature.
# Each row must be rectangular.
# Used on 12GB FGDB with 100 million records.
#Licence: Creative Commons
#Created by: George Corea; georgec@atgis.com.au, coreagc@gmail.com
import arcpy, string
#inFrame=arcpy.GetParameterAsText(0) # Input dataframe FC
#inFile=arcpy.GetParameterAsText(1) # Input FC for splitting
#outDir=arcpy.GetParameterAsText(2) # Output FGDB
inFrame=r"D:\SCRATCH\ARCGIS\100k_trc_tiles_TVM.shp"
inFile=r"c:\junk\106\data\7_Merge.gdb\FullRez_m2b"
outDir=r"D:\SCRATCH\Projects\206\datasplit\test_slaasp.gdb"
#NameField="Name_1"
#arcpy.env.workspace = r"C:/Workspace"
arcpy.env.overwriteOutput = True
rows = arcpy.SearchCursor(inFrame)
shapeName = arcpy.Describe(inFrame).shapeFieldName
for row in rows:
feat = row.getValue(shapeName)
Name = row.Name_1
print "Executing clip on: "+str(Name)
extent = feat.extent
#print extent.XMin,extent.YMin,extent.XMax,extent.YMax
# Create an in_memory polygon
XMAX = extent.XMax
XMIN = extent.XMin
YMAX = extent.YMax
YMIN = extent.YMin
pnt1 = arcpy.Point(XMIN, YMIN)
pnt2 = arcpy.Point(XMIN, YMAX)
pnt3 = arcpy.Point(XMAX, YMAX)
pnt4 = arcpy.Point(XMAX, YMIN)
array = arcpy.Array()
array.add(pnt1)
array.add(pnt2)
array.add(pnt3)
array.add(pnt4)
array.add(pnt1)
polygon = arcpy.Polygon(array)
ShapeFile = outDir+"\\temp_poly"
arcpy.CopyFeatures_management(polygon, ShapeFile)
#print Name
### Set local variables
in_features = inFile
clip_features = ShapeFile
out_feature_class = outDir+"\\"+Name
xy_tolerance = "0.22"
# Execute Clip
try:
arcpy.Clip_analysis(in_features, clip_features, out_feature_class, xy_tolerance)
print "Completed: "+str(Name)
except:
error = arcpy.GetMessages()
print "Failed on: "+str(Name)+" due to "+str(error)