উত্তর:
আপনি স্প্লিট বাই অ্যাট্রিবিউট সরঞ্জামটি ব্যবহার করতে পারেন:
অনন্য বৈশিষ্ট্য দ্বারা একটি ইনপুট ডেটাसेट বিভক্ত করে
এর জন্য উপলব্ধ সংস্করণ রয়েছে:
আপনার কাছে অর্গজিআইএস 10.0 বা তার চেয়ে বেশি হলে আপনি খুব সাধারণ মডেলটি দিয়ে এটি অর্জন করতে পারেন।
ফিচার আইট্রেটারের সাথে একটি মডেল তৈরি করুন যেখানে ক্ষেত্র অনুসারে গোষ্ঠীটি সেই বৈশিষ্ট্যটি নির্বাচন করতে চান যা তারপরে অনন্য ফাইলের নাম নিশ্চিত করতে ইনলাইন প্রতিস্থাপন ব্যবহার করে অনুলিপি বৈশিষ্ট্য সরঞ্জামে আউটপুট প্রেরণ করুন। মডেলটি নীচে দেখানো হয়েছে:
আমার কাছে আরক্যাপ্যাপ 10 এ কেবল অ্যাক্সেস নেই, কেবল 9.3, তবে আমি আশা করি এটি এর থেকে খুব আলাদা হবে না।
আপনি পাইথনে একটি সাধারণ স্ক্রিপ্ট তৈরি করতে পারেন, যা বিভিন্ন মানগুলির জন্য আপনার অ্যাট্রিবিউট ফিল্ডটি পরীক্ষা করে এবং তারপরে তাদের প্রত্যেকের জন্য আপনার আসল শেপফাইলে একটি নির্বাচন অপারেশন চালানো হয়।
আপনি যদি পাইথন স্ক্রিপ্টিংয়ের সাথে পরিচিত না হন তবে আপনাকে কেবল আইডিএল (পাইথন জিইউআই) খুলতে হবে একটি নতুন ফাইল তৈরি করুন এবং নীচের কোডটি অনুলিপি করুন। আপনার মাই_শ্যাপিল ফাইল, আউটপুটডির এবং মাই_ট্রিবিউটের কোডটি মানিয়ে নেওয়ার পরে এটি কাজ করা উচিত।
# Script created to separate one shapefile in multiple ones by one specific
# attribute
# Example for a Inputfile called "my_shapefile" and a field called "my_attribute"
import arcgisscripting
# Starts Geoprocessing
gp = arcgisscripting.create(9.3)
gp.OverWriteOutput = 1
#Set Input Output variables
inputFile = u"C:\\GISTemp\\My_Shapefile.shp" #<-- CHANGE
outDir = u"C:\\GISTemp\\" #<-- CHANGE
# Reads My_shapefile for different values in the attribute
rows = gp.searchcursor(inputFile)
row = rows.next()
attribute_types = set([])
while row:
attribute_types.add(row.my_attribute) #<-- CHANGE my_attribute to the name of your attribute
row = rows.next()
# Output a Shapefile for each different attribute
for each_attribute in attribute_types:
outSHP = outDir + each_attribute + u".shp"
print outSHP
gp.Select_analysis (inputFile, outSHP, "\"my_attribute\" = '" + each_attribute + "'") #<-- CHANGE my_attribute to the name of your attribute
del rows, row, attribute_types, gp
#END
আপনি কি এখানে আর্কম্যাপ 10 এর জন্য আপডেট অ্যাট্রিবিউট সরঞ্জাম দ্বারা স্প্লিট স্তরটি দেখেছেন ? যদি এটি কাজ না করে তবে আপনি আপনার প্রয়োজনের জন্য স্প্লিট (বিশ্লেষণ) ব্যবহার করতে পারেন ।
ইনপুট বৈশিষ্ট্যগুলি বিভক্ত করা একাধিক আউটপুট বৈশিষ্ট্য শ্রেণীর একটি উপসেট তৈরি করে। স্প্লিট ফিল্ডের অনন্য মানগুলি আউটপুট বৈশিষ্ট্য শ্রেণীর নাম তৈরি করে। এগুলি লক্ষ্য কর্মক্ষেত্রে সংরক্ষিত হয়।
উদাহরণ কোড:
import arcpy
arcpy.env.workspace = "c:/data"
arcpy.Split_analysis("Habitat_Analysis.gdb/vegtype", "climate.shp", "Zone",
"C:/output/Output.gdb", "1 Meters")
Split By Attribute
কার্যকারিতা বর্ণনা করে এবং আপনার উত্তর বেশিরভাগ সম্পর্কে Split [By Geometry]
।
আমি @ আলেকজান্ডারনেটো স্ক্রিপ্টটি ব্যবহার করেছি এবং এটি আর্কজিআইএস ১০.০ ব্যবহারকারীদের জন্য আপডেট করেছি । মূলত আপনাকে এখন "আরকিজিস্ক্রিপ্টিং" এর পরিবর্তে "আরকিপি" আমদানি করতে হবে:
# Script created to separate one shapefile in multiple ones by one specific
# attribute
# Example for a Inputfile called "my_shapefile" and a field called "my_attribute"
import arcpy
#Set Input Output variables
inputFile = u"D:\DXF-Export\my_shapefile.shp" #<-- CHANGE
outDir = u"D:\DXF-Export\\" #<-- CHANGE
# Reads My_shapefile for different values in the attribute
rows = arcpy.SearchCursor(inputFile)
row = rows.next()
attribute_types = set([])
while row:
attribute_types.add(row.my_attribute) #<-- CHANGE my_attribute to the name of your attribute
row = rows.next()
# Output a Shapefile for each different attribute
for each_attribute in attribute_types:
outSHP = outDir + each_attribute + u".shp"
print outSHP
arcpy.Select_analysis (inputFile, outSHP, "\"my_attribute\" = '" + each_attribute + "'") #<-- CHANGE my_attribute to the name of your attribute
del rows, row, attribute_types
#END
এটি এটি করার একটি আরও সহজ উপায় ... এবং এটি একটি জিডিবিতে আউটপুট দেয়।
http://www.umesc.usgs.gov/management/dss/split_by_attribute_tool.html
ইউএসজিএস থেকে সরঞ্জামটি ডাউনলোড করুন, 1 ঘন্টার জন্য আমি যা চেষ্টা করেছিলাম তা করতে আমাকে 3 মিনিট সময় নিয়েছিল।
আমি জানি আপনি মডেল বিল্ডারে একটি পুনরায় ব্যবহার করতে পারেন, তবে আপনি যদি এখানে পাইথন ব্যবহার করতে পছন্দ করেন তবে আমি এখানে এসেছি। ইনপুট shpfile, ক্ষেত্রগুলি (মাল্টিভ্যালু, ইনপুট থেকে প্রাপ্ত) এবং ওয়ার্কস্পেস হিসাবে প্যারামিটারগুলি সহ একটি সরঞ্জামবক্সে স্ক্রিপ্ট যুক্ত করুন। এই স্ক্রিপ্টটি আপনার নির্বাচিত ক্ষেত্রগুলির উপর ভিত্তি করে শেফফিলকে একাধিক শেফফায়লে বিভক্ত করবে এবং এগুলি আপনার পছন্দের ফোল্ডারে আউটপুট দেবে।
import arcpy, re
arcpy.env.overwriteOutput = True
Input = arcpy.GetParameterAsText(0)
Flds = "%s" % (arcpy.GetParameterAsText(1))
OutWorkspace = arcpy.GetParameterAsText(2)
myre = re.compile(";")
FldsSplit = myre.split(Flds)
sort = "%s A" % (FldsSplit[0])
rows = arcpy.SearchCursor(Input, "", "", Flds, sort)
for row in rows:
var = []
for r in range(len(FldsSplit)):
var.append(row.getValue(FldsSplit[r]))
Query = ''
Name = ''
for x in range(len(var)):
if x == 0:
fildz = FldsSplit[x]
Name = var[x] + "_"
Query += (""" "%s" = '%s'""" % (fildz, var[x]))
if x > 0:
fildz = FldsSplit[x]
Name += var[x] + "_"
Query += (""" AND "%s" = '%s' """ % (fildz, var[x]))
OutputShp = OutWorkspace + r"\%s.shp" % (Name)
arcpy.Select_analysis(Input, OutputShp, Query)
পরিশেষে আমি এটি সার্চকার্সার এবং সিলেক্ট_অ্যানালাইসিসের সাথে কাজ করেছি
arcpy.env.workspace = strInPath
# create a set to hold the attributes
attributes=set([])
# ---- create a list of feature classes in the current workspace ----
listOfFeatures = arcpy.SearchCursor(strInPath,"","",strFieldName,"")
for row in listOfFeatures:
attributes.add(row.getValue(strFieldName))
count=1
try:
for row in attributes:
stroOutputClass = strBaseName + "_" +str(count)# (str(row.getValue(strFieldName))).replace('/','_')
strOutputFeatureClass = os.path.join(strOutGDBPath, stroOutputClass)
arcpy.Select_analysis(strInPath,strOutputFeatureClass,strQueryExp)#"["+strFieldName+"]"+"='"+row+"'")
count=count+1
del attributes
except:
arcpy.AddMessage('Error found')
আমি মডেলবিল্ডারের আইট্রেট বৈশিষ্ট্য নির্বাচন সরঞ্জামগুলির সাথে পরিচিত নই, তবে পাইথন কোড হিসাবে কেবল রফতানি করে ইঙ্গিত দেয় যে তাদের আরকি ব্যবহার করে বলা যেতে পারে।
# Created on: 2015-05-19 15:26:10.00000
# (generated by ArcGIS/ModelBuilder)
# Description:
# ---------------------------------------------------------------------------
# Import arcpy module
import arcpy
# Load required toolboxes
arcpy.ImportToolbox("Model Functions")
# Local variables:
Selected_Features = ""
Value = "1"
# Process: Iterate Feature Selection
arcpy.IterateFeatureSelection_mb("", "", "false")
আপনি কোনও বৈশিষ্ট্য শ্রেণীর স্বতন্ত্র বৈশিষ্ট্যগুলি লুপ করতে একটি অনুসন্ধান কার্সার ব্যবহার করতে পারেন এবং অনন্য বৈশিষ্ট্য শ্রেণিতে কেবল জ্যামিতি লিখতে পারেন। এই উদাহরণে আমি যুক্তরাষ্ট্রে একটি বৈশিষ্ট্য বর্গ ব্যবহার করি এবং রাজ্যগুলিকে নতুন শেফফাইলে রপ্তানি করি:
import arcpy
# This is a path to an ESRI FC of the USA
states = r'C:\Program Files (x86)\ArcGIS\Desktop10.2\TemplateData\TemplateData.gdb\USA\states'
out_path = r'C:\temp'
with arcpy.da.SearchCursor(states, ["STATE_NAME", "SHAPE@"]) as cursor:
for row in cursor:
out_name = str(row[0]) # Define the output shapefile name (e.g. "Hawaii")
arcpy.FeatureClassToFeatureClass_conversion(row[1], out_path, out_name)
cursor
অপারেশনও প্রয়োজন ।
প্রতিটি বৈশিষ্ট্য রফতানি করতে আপনি অনুলিপি বৈশিষ্ট্যগুলির (ডেটা ম্যানেজমেন্ট) এর মধ্যে জ্যামিতি টোকেন (শ্যাপি @) ব্যবহার করতে পারেন ।
import arcpy, os
shp = r'C:\temp\yourSHP.shp'
outws = r'C:\temp'
with arcpy.da.SearchCursor(shp, ["OBJECTID","SHAPE@"]) as cursor:
for row in cursor:
outfc = os.path.join(outws, "fc" + str(row[0]))
arcpy.CopyFeatures_management(row[1], outfc)
আরকিপিতে, কার্সাররা সম্মান স্তর / টেবিলভিউ নির্বাচনগুলি সম্মান করে। মতে পাইথন কোড ব্যবহার ডেস্কটপের জন্য ArcGIS নির্বাচিত বৈশিষ্ট্য তালিকা পথ? , আপনি কেবল বৈশিষ্ট্য নির্বাচন পুনরাবৃত্তি করতে পারেন।
তবে আপনি যদি আরকিপি ব্যবহার করে একটি নির্বাচন করতে চান তবে, সিলেক্টায়ারবাইঅ্যাট্রিবিউট_ম্যানেজমেন্ট সরঞ্জামটি ব্যবহার করুন ।
Split By Attributes
ক্রমাগত পৃথক উত্পন্ন.dbf
টেবিল, না পৃথক বৈশিষ্ট্য ক্লাস। তবে, আরকজিআইএস ডেস্কটপ 10.6 এ, একই সরঞ্জামটি সঠিকভাবে পৃথক আকারের ফাইলগুলি তৈরি করে । আমি বুঝতে পারি না কেন এবং ফোল্ডার বা জিওডাটাবেস উভয় ক্ষেত্রে ওয়ার্কিং ডিরেক্টরি সেট করার চেষ্টা করে একই ফলাফলগুলি পেয়েছি।