भेद करने वाली रेखाएं जो स्पर्श करने वाली रेखाओं से काटती हैं?


9

मैं आर्कगिस 10 में इन मामलों के बीच अंतर कैसे कर सकता हूं?

  • केस 1 : एक लाइन के दोनों छोर एक और लाइन को स्पर्श करते हैं
  • केस 2 : दोनों एंडपॉइंट्स उस लाइन पर उलझते हैं जो इसे इंटरसेप्ट करता है

मैं ट्रिम लाइन फ़ंक्शन को देख रहा हूं लेकिन यह वह नहीं है जो मैं चाहता हूं (विनाशकारी)।

वास्तविक विश्व उपयोग का मामला एक फ्रीवे के दोनों रोडवेज को जोड़ने वाले सर्विस रोडों और सड़कों के अन्य मामलों के बीच अंतर करने का है।

यहां छवि विवरण दर्ज करें यहां छवि विवरण दर्ज करें

जवाबों:


13

एक समय में एकल सुविधा के लिए, आप सामान्य रूप से सामान्य रूप से स्थान का चयन करके संवाद का उपयोग करते हुए इस आसानी से कर सकते हैं , लाइन ओवरले पर लाइन के लिए स्थानिक संबंध प्रकारों के लिए एक गाइड के रूप में निम्न कुंजी का उपयोग करके ( स्थान का चयन करें: ग्राफिक उदाहरण से ):

छवि
(स्रोत: arcgis.com )

लाइन का उपयोग करके लाइन का चयन करें

इंटरसेक्ट ए, सी, डी, ई, एफ, जी, एच, आई, जे

CONTAINS जी, एच

COMPLETELY_CONTAINS जी

CONTAINS_CLEMENTINI जी, एच

एफ के साथ, एच

COMPLETELY_WITHIN एफ

WithIN_CLEMENTINI F, H

ARE_IDENTICAL_TO H

BOUNDARY_TOUCHES C, E

इस मामले में प्रासंगिक संबंध प्रकार हैं INTERSECTऔर BOUNDARY_TOUCHES। जैसा कि आप ऊपर दिए गए आरेख से देख सकते हैं, आप उन BOUNDARY_TOUCHESविशेषताओं का चयन करने के लिए उपयोग कर सकते हैं जो लाइन के एक समापन बिंदु को छूते हैं। यदि वास्तव में दो सुविधाओं का चयन किया जाता है, तो आपके पास अपना केस 1 है। यदि किसी विशेषता को किसी अन्य सुविधाओं द्वारा नहीं छुआ गया है, लेकिन केवल उनके द्वारा प्रतिच्छेद किया गया है, तो BOUNDARY_TOUCHESकुछ भी नहीं चुनेंगे। INTERSECTवे सभी सुविधाओं का चयन करेंगे जो इस बात की परवाह किए बिना कि वे किसी समापन बिंदु पर स्पर्श करते हैं या नहीं। तो अगर आपको पता है कि एंडपॉइंट्स को छूने वाले फीचर्स नहीं हैं, लेकिन आपको लगता है कि फीचर्स इंटरसेक्टिंग हैं, तो आपके पास अपना केस 2 है।

प्रक्रिया को स्वचालित करने के लिए आप फ़ीचर क्लास या लेयर में प्रत्येक फ़ीचर के लिए टच और चौराहों की संख्या की गणना करने के लिए निम्न पायथन स्क्रिप्ट ( स्क्रिप्ट टूल के रूप में लागू करें ) को लागू कर सकते हैं।

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

नीचे दिए गए स्क्रीनशॉट के उदाहरणों के दो मामलों के उदाहरणों के लिए देखें: ArcMap स्क्रीनशॉट विभिन्न लाइन चौराहे / स्पर्श रिश्तों को दिखा रहा है

ध्यान दें कि वास्तविक दुनिया के आंकड़ों के साथ, आमतौर पर सड़क खंडों को चौराहों पर तोड़ दिया जाता है, और केवल तभी सड़कें बनती हैं, जब सड़कें एक दूसरे से एक इंटरचेंज या पुल पर गुजरती हैं। तो आम तौर पर आपके पास छूने के रूप में प्रतिच्छेदन की समान संख्या होती है।

अधिक सामान्य मामले के लिए, आप जाँच कर किसी भी खतरे की तलाश कर सकते हैं कि क्या "NUM_INTERSECTIONS" > "NUM_TOUCHES"


विस्तृत जवाब के लिए धन्यवाद। मुझे स्क्रिप्ट टूल में बदलने में थोड़ी परेशानी होती है (जब मैं किसी लेयर को चुनने की कोशिश करता हूं तो यह जम जाता है) लेकिन मुझे विश्वास है कि दृष्टिकोण मान्य है।
18x पर mvxel

एक और टिप्पणी: मुझे फ़ील्ड नाम की लंबाई को 10 चार्ट से कम करना था (शायद इसलिए कि परत स्रोत एक आकृति है)।
मुवेक्सेल

ऐसा लगता है कि एक आर्कजीआईएस प्रलेखन छवि के लिए एक यूआरएल है जो इस उत्तर की शुरुआत में भटक गया है।
PolyGeo

@PolyGeo कौन सा? मुझे ठीक लगता है।
ब्लाह 238

यह अजीब है, पहली तस्वीर (चौथी पंक्ति के बारे में क्या होगी) कल एक छोटे से क्रॉस के रूप में दिखाई दे रही थी। आज यह ठीक लग रहा है। मुझे लगता है कि मैंने इसे उस ब्राउज़र (जिसे मैं अभी उपयोग कर रहा हूं) में देखा है आईओएस क्लाइंट के बजाय जो मैं अक्सर उपयोग करता हूं।
PolyGeo

2

कार्यक्षेत्र में विभाजन रेखा (डेटा प्रबंधन)

"एक विशेषता वर्ग युक्त रेखाएँ बनाता है जो इनपुट लाइनों या बहुभुज की सीमाओं को उनके शीर्ष पर विभाजित करके उत्पन्न होती हैं"

ध्यान रखें।

यहां छवि विवरण दर्ज करें

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//00170000003z000000


मुझे यकीन नहीं है कि यह कैसे मेरी मदद करने वाला है, लेकिन मुझे एहसास है कि मैं स्पष्ट कर सकता था कि मुझे थोड़ा बेहतर हासिल करने की आवश्यकता क्या है। प्रश्न संपादित किया।
मुवेक्सेल

-1

कैसे फीचर लेयर को कॉपी करने, लाइनों को ट्रिम करने के बारे में, फिर ट्रिम की गई सुविधा की तुलना मूल में सेट की गई विशेषताओं को खोजने के लिए करें? सुंदर नहीं, लगभग निश्चित रूप से अजगर का उपयोग करने की आवश्यकता होती है, लेकिन ऐसा लगता है कि इसे काम करना चाहिए।


-1

आप नेटवर्क के नोड्स भी निकाल सकते हैं। 1 के मामले में आपको 4 की वैधता के साथ प्रत्येक में 2 नोड मिलेंगे। अगर 2 में कोई नोड नहीं है।


क्या आप सुझाव दे सकते हैं कि आर्कगिस में यह कैसे किया जाए?
blah238

आप किसी ऐसे स्क्रिप्ट या टूल का उपयोग कर सकते हैं जो अद्वितीय आईडी को पॉलीलाइन में जोड़ने के लिए है जो कि और से नोड्स हैं। मुझे पता है कि आर्किड्रो ऐसा करता है, लेकिन मुझे यकीन है कि वेबसाइट पर ऐसी स्क्रिप्ट्स हैं जो ऐसा करती हैं। फिर एक गैर-प्रोग्रामिंग तरीके से आप फ़्रीक्वेंसी टूल को फ़ील्ड से चला सकते हैं और फिर नोड फ़ील्ड पर और उन्हें योग कर सकते हैं, इससे आपको नोड वैलिडिटी मिलती है जिसे आप नोड्स का प्रतिनिधित्व करने वाले पॉइंट लेयर में वापस शामिल हो सकते हैं।
हॉर्नबीड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.