कैसे पता लगाएं कि बहुभुज में आर्क कैलकुलेटर में फ़ील्ड कैलकुलेटर का उपयोग करने वाला छेद है


10

कुछ 3 पार्टी सॉफ्टवेयर छेद (डोनट बहुभुज) के साथ बहुभुज को संभाल नहीं सकते हैं। उन्हें खोजने के लिए मैं हमेशा ArcView 3 क्षेत्र कैलकुलेटर का उपयोग करता हूं, क्योंकि:

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

हालांकि जब मैं आर्कगिस में ऐसा करने की कोशिश करता हूं, तो मुझे यह मिलता है:

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

तो सवाल यह है कि इसे आर्कजीआईएस में सही कैसे बनाया जाए।


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

मैं इसे एक कोड ब्लॉक का उपयोग करके कर सकता हूं, लेकिन यह बदसूरत है। मुख्य लाइनें prt = shp.getPart (0) करतब = arcpy.Polygon (prt)। यह करतब की गणना करने के लिए पर्याप्त है। इसने और इसकी तुलना shp.area
FelixIP

संबंधित संसाधन: gis.stackexchange.com/questions/27255 आपका क्षेत्र तुलना समाधान बदसूरत हो सकता है, लेकिन ऐसा लगता है कि यह काम करता है और फील्ड कैलकुलेटर के भीतर। उत्तर के रूप में पोस्ट करने लायक हो सकता है।
डब्ल्यू पर क्रिस डब्ल्यू

मैं इसके बजाय @Hornbydd को क्रेडिट देता हूं, क्योंकि उनका जवाब पूर्णांक, मेरी खुद की (जो मुझे बहुत पहले से पता था) की तुलना युगल से करता है
फेलिक्सिप

जवाबों:


19

भाग गणना सही उत्तर नहीं देगी । आपके पास एक बहु-भाग बहुभुज हो सकता है जिसमें कोई छेद नहीं है। परिदृश्य के लिए नीचे दी गई छवि देखें।

बहु-भाग बहुभुज

यह एक साधारण क्वेरी प्री-आर्कगिस 10 होता, क्योंकि आप आर्कबिज को यह पूछने के लिए बुला सकते थे कि क्या बहुभुज में छेद है, लेकिन ईएसआरआई ने वीबीएसस्क्रिप्टिंग वातावरण में इस समर्थन को बहुत हद तक हटा दिया है, जो अब बहुत बेकार है, वास्तव में शर्म की बात है। ...

वैसे भी आप कुछ पायथन के साथ इस सवाल को हल कर सकते हैं:

def hasHole(geom):
  parts = geom.partCount
  boundaries = geom.boundary().partCount
  if boundaries > parts:
    return 1
  else:
    return 0

अभिव्यक्ति बॉक्स में आप निम्नलिखित स्थान देंगे:

hasHole(!Shape!)

सुरुचिपूर्ण उत्तर के लिए धन्यवाद। ArcView 3 की अनुपस्थिति में मैंने जो प्रयोग किया वह कम विश्वसनीय था, मेरी टिप्पणी देखें @ChrisW
FelixIP

1

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


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