একবারে কোনও একক বৈশিষ্ট্যের জন্য, আপনি সাধারনভাবে নির্বাচন করুন অবস্থান অনুসারে লোকাল সিলেক্ট ডায়ালগটি ব্যবহার করে লাইন ওভারলেগুলি ( স্থান অনুসারে নির্বাচন করুন: গ্রাফিক উদাহরণগুলি ) থেকে স্থান সম্পর্কিত সম্পর্কের জন্য গাইড হিসাবে নিম্নলিখিত কীটি ব্যবহার করে এটি খুব সহজেই ইন্টারেক্টিভ করতে পারেন :
(উত্স: আরসিগিস.কম )
লাইন ব্যবহার করে লাইন নির্বাচন করুন
ইন্টারসেক্ট এ, সি, ডি, ই, এফ, জি, এইচ, আই, জে
কন্টেইনস জি, এইচ
কমপ্লিটেল_সিএন্টেইনস জি
CONTAINS_CLEMENTINI জি, এইচ
এফ, এইচ ছাড়া
সম্পূর্ণ এফ
সহ, এফ, এইচ
ARE_IDENTICAL_TO এইচ
বাউন্ডারি_উউচেস সি, ই
এই ক্ষেত্রে সম্পর্কিত সম্পর্কের প্রকারগুলি হ'ল INTERSECT
এবং BOUNDARY_TOUCHES
। আপনি উপরের চিত্র থেকে দেখতে পাচ্ছেন, আপনি BOUNDARY_TOUCHES
এমন বৈশিষ্ট্যগুলি বেছে নিতে ব্যবহার করতে পারেন যা লাইনের শেষ প্রান্তকে স্পর্শ করে। যদি ঠিক দুটি বৈশিষ্ট্য নির্বাচিত হয় তবে আপনার কেস ১ রয়েছে a যদি কোনও বৈশিষ্ট্য অন্য কোনও বৈশিষ্ট্য দ্বারা স্পর্শ না করা হয় তবে কেবল তাদের দ্বারা ছেদ করা হয়, তবে BOUNDARY_TOUCHES
কিছুই নির্বাচন করবেন না। INTERSECT
এমন সমস্ত বৈশিষ্ট্য নির্বাচন করবে যা ছেদ করতে পারে কিনা তা নির্বিশেষে তারা শেষ পয়েন্টে স্পর্শ করে কিনা। সুতরাং যদি আপনি জানেন যে শেষের পয়েন্টগুলিকে স্পর্শ করার মতো কোনও বৈশিষ্ট্য নেই, তবে আপনি দেখতে পাচ্ছেন এমন কিছু বৈশিষ্ট্য ছেদ করছে, তবে আপনার কেস 2 রয়েছে have
প্রক্রিয়াটি স্বয়ংক্রিয় করার জন্য আপনি বৈশিষ্ট্য শ্রেণি বা স্তরের প্রতিটি বৈশিষ্ট্যের জন্য স্পর্শ এবং ছেদ সংখ্যার গণনা করতে নিম্নলিখিত পাইথন স্ক্রিপ্টটি ( ইচ্ছা করলে স্ক্রিপ্ট সরঞ্জাম হিসাবে প্রয়োগ করুন ) ব্যবহার করতে পারেন :
import arcpy
################################ Configuration #################################
numTouchesField = "NUM_TOUCHES"
numIntersectionsField = "NUM_INTERSECTIONS"
################################################################################
def countTouches(layer, feature):
"""Returns the number of times the boundary of a feature touches other
features in the same feature layer."""
return countSpatialRelation(layer, feature, "BOUNDARY_TOUCHES")
def countIntersections(layer, feature):
"""Returns the number of times a feature intersects other features in the
same feature layer."""
return countSpatialRelation(layer, feature, "INTERSECT") - 1 # Subtract 1 because the feature will always intersect its clone in the feature layer
def countSpatialRelation(layer, feature, relation):
"""Returns the number of times a feature meets the specified spatial
relationship with other features in the same feature layer."""
arcpy.SelectLayerByLocation_management(layer, relation, feature)
count = int(arcpy.GetCount_management(layer).getOutput(0))
return count
def addField(table, fieldName, fieldType):
"""Adds a fields of the given name and type to a table, unless a field with
the same name already exists."""
desc = arcpy.Describe(table)
fieldInfo = desc.fieldInfo
fieldIndex = fieldInfo.findFieldByName(fieldName)
if fieldIndex == -1:
# Field does not exist, add it
arcpy.AddField_management(table, fieldName, fieldType)
def countTouchesAndIntersections(layer):
"""Adds and populates fields describing the number of times each feature
touches and intersects other features in the feature layer."""
addField(layer, numTouchesField, "LONG")
addField(layer, numIntersectionsField, "LONG")
desc = arcpy.Describe(layer)
shapeField = desc.shapeFieldName
rows = arcpy.UpdateCursor(layer)
for row in rows:
feature = row.getValue(shapeField)
row.setValue(numTouchesField, countTouches(layer, feature))
row.setValue(numIntersectionsField, countIntersections(layer, feature))
rows.updateRow(row)
del row, rows
if __name__ == "__main__":
layer = arcpy.MakeFeatureLayer_management(arcpy.GetParameterAsText(0))
countTouchesAndIntersections(layer)
এটি একবার চলার পরে, আপনি সহজেই সেই বৈশিষ্ট্যগুলির জন্য জিজ্ঞাসা করতে পারেন যা ঠিক দু'বার স্পর্শ করে এবং ঠিক দ্বিগুণ ছেদ করে (কেস 1), এবং যেগুলি 0 বার স্পর্শ করে এবং ঠিক দ্বিগুণ ছেদ করে (কেস 2)।
উদাহরণ সংজ্ঞা প্রশ্নসমূহ:
- কেস 1 (দু'বার স্পর্শ করে, দু'বার ছেদ করে):
"NUM_TOUCHES" = 2 AND "NUM_INTERSECTIONS" = 2
- কেস 2 (কারও কাছে স্পর্শ নয়, দু'বার ছেদ করে):
"NUM_TOUCHES" = 0 AND "NUM_INTERSECTIONS" = 2
দুটি মামলার উদাহরণ খুঁজে পাওয়ার জন্য নীচের স্ক্রিনশটটি দেখুন:
মনে রাখবেন যে বাস্তব বিশ্বের ডেটা সহ, সাধারণত রাস্তার খণ্ডগুলি চৌরাস্তাগুলিতে ভেঙে যায় এবং ড্যাংলগুলি তখনই ঘটে যখন রাস্তাগুলি একে অপরের উপর দিয়ে একটি আন্তর্জাতীয় বা সেতুর পাশ দিয়ে যায়। সুতরাং সাধারণত আপনার স্পর্শ হিসাবে একই ছেদ করার বৈশিষ্ট্য একই সংখ্যা।
আরও সাধারণ ক্ষেত্রে, আপনি কিনা তা পরীক্ষা করে কোনও ঝুঁকির সন্ধান করতে চাইতে পারেন "NUM_INTERSECTIONS" > "NUM_TOUCHES"
।