ArcPy का उपयोग करके लाइन के मध्य-बिंदु का पता लगाना?


12

जियोप्रोसेसिंग फ्रेमवर्क का उपयोग करके पॉलीलाइन के मध्य-बिंदु की गणना कैसे की जा सकती है , जैसे कि पायथन लिपि में?

Polyline.centroid संपत्ति रिटर्न सच केन्द्रक अगर यह के भीतर या सुविधा पर है, अन्यथा, लेबल बिंदु वापस आ गया है । केंद्रक शायद ही कभी गैर-सीधी रेखाओं पर स्थित हो, जो मेरे उद्देश्यों के लिए बेकार है।

अंक के लिए फ़ीचर कोने उपकरण एक मध्य का विकल्प है, लेकिन इस ArcInfo है, जो मैं वर्तमान की जरूरत नहीं है की आवश्यकता है।

एक विकल्प यह हो सकता है कि पॉलीइन्स के लिए उपायों को जोड़ा जाए और लाइन के साथ 50% से रूट इवेंट बनाया जाए।

ArcMap में कैलकुलेट जियोमेट्री विकल्प का उपयोग करने के लिए एक और समाधान है, लेकिन आदर्श रूप से मुझे इस प्रक्रिया को एक स्क्रिप्ट में स्वचालित करने की आवश्यकता है।

कोई बेहतर / तेज सुझाव?

मैं फिलहाल ArcGIS 10.0 (ArcInfo स्तर के लाइसेंस तक पहुंच के बिना) तक सीमित हूं।


4
इस प्रश्न को देखें । अंत में मैंने मध्य बिंदु को निर्धारित करने के लिए शेपली में रैखिक संदर्भ कार्यों का उपयोग किया।
माइक टी

1
मुझे लगता है कि @MikeToews के पास सही विचार है, और सिर्फ आर्कपीआईएस में रैखिक संदर्भ कार्यों का उपयोग करें इसे शेपली में लेने के विपरीत। ऐसा लगता है कि यह वह फ़ंक्शन है जो आप चाहते हैं: मेक रूट इवेंट लेयर - रैखिक संदर्भ । आप शायद मक्खी पर घटना तालिका बना सकते हैं। यह 10.1 के लिए है, लेकिन 10.0 में समान होना चाहिए।
स्थानिक

1
इस ब्लॉग में ऐसा एल्गोरिथ्म शामिल है जिसे अजगर / ArcPy में परिवर्तित किया जा सकता है: rbrundritt.wordpress.com/2008/10/14/…
PolyGeo

क्या किसी ने इसे जावास्क्रिप्ट में किया था? मैंने इसे केवल अर्कि में सफलतापूर्वक किया। साभार एज़ेकियास
एज़ेकियास

यदि आपके पास कोई नया प्रश्न है, तो कृपया प्रश्न पूछें बटन पर क्लिक करके पूछें । इस प्रश्न का लिंक शामिल करें यदि यह संदर्भ प्रदान करने में मदद करता है। - समीक्षा से
BERA

जवाबों:


23

पॉलीलाइन वर्ग एक नई पद्धति ArcGIS 10.1 में "positionAlongLine" कहलाता है। यह लाइन के शुरुआती छोर से एक निश्चित दूरी पर, या शुरू और अंत के बीच की दूरी के एक अंश के साथ एक पॉइंटगोमेट्री ऑब्जेक्ट को लौटाएगा । मध्यबिंदु को खोजने के लिए, आपको बस करने की आवश्यकता होगी । लाइनों के लिए मिडपॉइंट खोजने के लिए और उनके निर्देशांक को विशेषता तालिका में जोड़ने के लिए, आप निम्न विवरण पर फ़ील्ड कैलकुलेटर कर सकते हैं:positionAlongLine(0.5,True)

  • !Shape!.positionAlongLine(0.5,True).firstPoint.X
  • !Shape!.positionAlongLine(0.5,True).firstPoint.Y

ध्यान दें कि आपको कार्य करने के लिए फ़ील्ड कैलकुलेटर में पायथन पार्सर का उपयोग करना होगा।

यदि आप पायथन में इस पॉइंट ऑब्जेक्ट को एक्सेस करना चाहते हैं, तो आप निम्नलिखित कार्य करेंगे:

Input_shp = "C:\Temp\Line.shp"
Cursor = arcpy.SearchCursor(Input_shp)
for Feature in Cursor:
    Midpoint = Feature.shape.positionAlongLine(0.50,True).firstPoint
    print Midpoint.X
    print Midpoint.Y

धन्यवाद, यह बहुत अच्छा लग रहा है। मुझे यह उल्लेख करना चाहिए कि मैं वर्तमान में 10.0 तक सीमित हूं, इसलिए ऊपर दिए गए रूट विकल्प को अभी के लिए पर्याप्त हो सकता है
स्टीफन लीड

त्रुटि: पंक्ति में एक खराब मान है। मॉडल बिल्डर में पायथन की जाँच के साथ arcGIS10 का उपयोग करते हुए, मैंने उसी कथन का उपयोग किया:!!! .PositionAlongLine (0.5, True) .firstPoint.X
juasmilla

1

ET जियो विजार्ड लाइसेंस के साथ आप "मध्य बिंदु" और "डुप्लीकेट अंक हटाएं" (वैकल्पिक): http://www.ian-ko.com/ET_GeoWizards/UserGuide-convertPl2Pnt के विकल्प के साथ फ़ंक्शन "पॉलीलाइन टू पॉइंट" आज़मा सकते हैं । htm

आप इस तरह ईटी जियो विजार्ड्स को लागू कर सकते हैं:

toolbox_ETgeowizards = arcpy.GetParameterAsText(0) # Location ET Toolbox (Type: Toolbox)
arcpy.ImportToolbox(toolbox_ETgeowizards)

...

arcpy.ET_GPPolylineToPoints(pInFeatureClass, sOutFileName, sExportOption, bRemoveDuplicates)

ET फ़ंक्शन के इनपुट चर के लिए, कृपया देखें: http://www.ian-ko.com/ET_GeoWizards/UserGuide/Scripting/scripting_PolylineToPoint.htm

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.