सामान्य जीआईएस में बहुभुज कोने का क्रम: दक्षिणावर्त या वामावर्त


23

दो दिन पहले मैंने ईएसआरआई शेपफाइल्स में बहुभुज के कोने के लिए आंतरिक भंडारण आदेश के बारे में एक प्रश्न पूछा था। उस प्रश्न का उत्तर दिया गया था ( क्या पॉलीगॉन को दक्षिणावर्त या वामावर्त आकार में संग्रहीत किया जाता है? ) और इसका उत्तर एक पुरानी पोस्ट में भी दिया गया था ( बहुभुज निर्माण (दक्षिणावर्त घुमाव या नहीं) )

लेकिन अब मेरा प्रश्न अधिक सामान्य है, और मुझे नहीं पता कि इसका कोई अनूठा उत्तर है या नहीं। क्या घड़ी की दिशा केवल ESRI शेपफाइल्स या सामान्य जीआईएस प्रारूपों के लिए है? और जीआईएस सॉफ्टवेयर के लिए आंतरिक प्रतिनिधित्व के बारे में क्या? उदाहरण के लिए, अगर मैं QGIS का उपयोग करता हूं और मैं एक * .shp युक्त पॉलीगन्स पढ़ता हूं, तो मुझे लगता है कि बाहरी बाउंड का आंतरिक प्रतिनिधित्व मूल आकार-प्रकार की तरह दक्षिणावर्त है, लेकिन QGIS द्वारा समर्थित सभी फ़ाइल स्वरूपों के बारे में क्या है? और ArcGIS के लिए? और मामले में काउंटरकॉन्वाइज में संग्रहीत पॉलीगॉन के साथ एक फ़ाइल प्रारूप मौजूद होता है, अगर ये फाइलें QGIS, ArcGIS, आदि में लोड की जाती हैं, तो अभिविन्यास आंतरिक रूप से बदल जाता है, इसलिए यदि मैं PyQGIS का उपयोग करके डेटा पढ़ता हूं, उदाहरण के लिए, पॉलीगॉन दक्षिणावर्त हैं आदेश दिया?

मेरा उद्देश्य QGIS के लिए एक प्लगइन लिखना है, लेकिन डेटा का स्रोत ESRI शेपफाइल्स या अन्य प्रारूप हो सकता है। जैसा कि मुझे उनके azimuths का उपयोग करके बहुभुज के लगातार पक्षों के बीच के कोणों की जांच करने की आवश्यकता है, मुझे यह जानने की आवश्यकता है कि क्या आदेश दक्षिणावर्त है। एक समाधान प्रत्येक बहुभुज के क्षेत्र की गणना कर रहा है और, अगर मुझे सही ढंग से याद है, अगर यह सकारात्मक है, तो आदेश दक्षिणावर्त है और यदि नकारात्मक है तो वामावर्त है।

क्षेत्र संगणना एक गहन कार्य नहीं है, इसलिए यह मेरे प्लगइन को इतना धीमा नहीं करेगा। लेकिन क्यूजीआईएस के विशेष मामले में, कोई भी जानता है कि क्या यह मूल स्रोत में आदेश की परवाह किए बिना पॉलीगॉन को दक्षिणावर्त या वामावर्त में संग्रहीत करता है? अब तक मैं ESRI शेपफाइल्स और लेयर में निर्देशांक के साथ काम कर रहा हूं ।getFeatures ()। जियोमेट्री ()। asPolygon () बाहरी बॉर्डर के लिए क्लॉक वाइज और छेदों के लिए वामावर्त, जैसे कि मूल * .shp में संग्रहीत किया जाता है।


यह इस बात पर निर्भर करता है कि डेटा कैसे संग्रहीत किया जाता है। ओरेकल वामावर्त है gis.stackexchange.com/questions/20817/...
Mapperz

@ मैपरज़, आपका लिंक docs.oracle.com/cd/B10501_01/appdev.920/a96630/… की ओर जाता है, जिसमें स्पष्ट रूप से लिखा गया है, Polygons are oriented correctly. (Exterior ring boundaries must be oriented counterclockwise, and interior ring boundaries must be oriented clockwise.)जिसका अर्थ है कि Oracle काउंटरक्लॉकवाइज है।
user30184

जवाबों:


27

OGC विनिर्देश में, जिसे [यहाँ], ( http://www.opengeospatial.org/standards/sfs ) डाउनलोड किया जा सकता है :

"बहुभुज रोटेशन इस मानक द्वारा परिभाषित नहीं है; वास्तविक बहुभुज रोटेशन एक दक्षिणावर्त या काउंटर-क्लॉकवाइज दिशा में हो सकता है।"

में ओरेकल डॉक्स , यह स्पष्ट रूप से कहा गया है कि बाहरी रिंग सीमाओं वामावर्त उन्मुख होते हैं, और इंटीरियर अंगूठी सीमाओं, दक्षिणावर्त। इसी तरह, SQL सर्वर स्थानिक में, भूगोल डेटाटाइप बाहरी रिंग के लिए एक काउंटर-क्लॉकवाइज नियम का पालन करता है, और आंतरिक रिंग के लिए क्लॉकवाइज - अधिक जानकारी के लिए इस माइक्रो सॉफ्ट ब्लॉग को देखें। पोस्टगिस इसे या तो रास्ते की अनुमति देता है, ज्यामितीयों के लिए, और ऐसे कार्य हैं जो बहुभुज की ज्यामिति को दाएं या बाएं हाथ के नियम का पालन करने के लिए मजबूर करेंगे, ST_ForceRHR और ForceLHR देखें । जेटीएस / जियोस ने दाएं हाथ के नियम का पालन किया है, अर्थात, बाहरी रिंग का एक दक्षिणावर्त अभिविन्यास, इसलिए यह थोड़ा अस्पष्ट है, वास्तव में।

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


@ Mxfh की टिप्पणी से: OGC की ओपनगिस सिंपल फीचर्स एक्सेस (ISO 19125-1) संस्करण 1.2.1 दस्तावेज़ के रूप में बाहरी रिंगों के लिए एक काउंटर-क्लॉकवाइज दिशा निर्दिष्ट करता है [OGC 06-103r4] 6.1.11.1/page 26 के लिए opengeospatial.org / मानकों / SFA। बदलाव को 2006 के नवीनतम संस्करण 1.1.0 और 1.2.0 के बीच पेश किया गया। 2005 से आप जिस फुटनोट का हवाला दे रहे हैं, वह अपडेट नहीं किया गया है


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

हाँ, यह ज्यामिति के लिए डब्ल्यूकेटी का भी सच है। भूगोल के लिए यह स्पष्ट रूप से अधिक मायने रखता है।
जॉन पॉवेल

यह बहुत सच है;)
व्हाइटबॉक्सडेव

@HiteboxDev नेस्टेड रिंग्स के वैकल्पिक वाइंडिंग ऑर्डर का कारण यह है कि शॉलेस मेथड के साथ क्षेत्र की गणना रिंग दिशा के आधार पर हस्ताक्षरित क्षेत्रों की गणना करती है। पहले क्रम के सामान्य नेस्टेड रिंग में छेद माना जाता है और बाहरी रिंग की वैकल्पिक दिशा होती है। उनका योगदान क्षेत्र मूल्य नकारात्मक है। जहां बाहरी रिंग सकारात्मक है; तो भी आदेश के नेस्टेड छल्ले हैं। इसलिए सभी रिंग विशेषताओं का कुल क्षेत्र सभी हस्ताक्षरित क्षेत्रों का योग है।
mxfh

1
@ mxfh: सख्ती से बोलना, "नेस्टेड रिंग्स के वाइंडिंग ऑर्डर" OCG (और कई अन्य) पॉलीगन्स के लिए मूट है .... क्योंकि इसकी अनुमति नहीं है। दूसरे के "छेद" के अंदर एक नेस्टेड बहुभुज का प्रतिनिधित्व करने का तरीका एक मल्टीप्लगॉन का उपयोग करना होगा ... इस मामले में, प्रत्येक घटक बहुभुज मूल घुमावदार नियमों का पालन करता है। ठीक है, ठीक है: यह "नेस्टेड लिनियरिंग्स" की वाइंडिंग को वैकल्पिक करने के लिए समान है ... लेकिन केवल यह इंगित करता है कि यह बहुभुज नहीं है - प्रति se - जो इसे अनुमति देता है, लेकिन मल्टीपोलियन की परिभाषा।
दान एच।

23

भौगोलिक समन्वय प्रणालियों के लिए अस्पष्टता को रोकने के लिए रिंग (सीमा) निर्देशों की आवश्यकता होती है जो एक सीमित सतह को कवर करते हैं, क्योंकि सीमा दो क्षेत्रों को परिभाषित करेगी, एक बायीं ओर और एक सीमा के दाईं ओर। यह निर्धारित करना कि उन दो क्षेत्रों में से कौन सा बड़ा है संभव है, लेकिन फिर भी अस्पष्टता छोड़ देता है।

यहाँ उनके विनिर्देशों द्वारा विभिन्न स्वरूपों में बहुभुज की बाहरी रिंग दिशाओं का अवलोकन किया गया है:

शेपफाइल्स और सरल सुविधाओं के घुमावदार क्रम का चित्रण

  • WTC / GML / KML और विभिन्न SQL कार्यान्वयन में उपयोग की जाने वाली सरल फ़ीचर एक्सेस (ISO 19125-1):

    • बाहरी रिंग: काउंटर-क्लॉकवाइज
    • आंतरिक वलय (छिद्र): दक्षिणावर्त दिशा।

    एक बहुभुज एक प्लानर सतह है जो 1 बाहरी सीमा और 0 या अधिक आंतरिक सीमाओं द्वारा परिभाषित है। प्रत्येक आंतरिक सीमा बहुभुज के एक छेद को परिभाषित करती है। [...]

    बाहरी सीमा रेखा रेखांकन सतह के "शीर्ष" को परिभाषित करता है जो सतह का वह भाग है जहां से बाहरी सीमा एक दक्षिणावर्त दिशा में सीमा को पार करती दिखाई देती है । आंतरिक LinearRings विपरीत रुख होगा, और के रूप में प्रकट दक्षिणावर्त जब "टॉप" ... से देखा सरल फ़ीचर पहुँच चश्मा

    अधिकांश कार्यान्वयनों में एक पॉलीगॉन में रिंग्स का क्रम महत्वपूर्ण है (जैसा कि शेपफाइल्स के विपरीत है)

    छेद के साथ एक बहुभुज के लिए, इसकी पहली सबलेमेंट इसकी बाहरी रिंग है, दूसरी सबलेमेंट इसकी पहली आंतरिक रिंग है, इसकी तीसरी सबलेमेंट इसकी दूसरी आंतरिक रिंग है, और इसी तरह। ओरेकल स्थानिक

    गहरा घोंसला, उर्फ द्वीप-इन-ए-लेक-ऑन-ए-आइलैंड -... को मल्टीपॉलीगोन ( चित्रा 2.10 (4 देखें) ) के रूप में प्रतिनिधित्व किया जाना है , क्योंकि आंतरिक रिंगों में केवल एक बाहरी सीमा और गहरे घोंसले हो सकते हैं। परिभाषित नहीं हैं।

  • ESRI शेपफाइल्स / SHP :

    • बाहरी वलय: दक्षिणावर्त
    • आंतरिक रिंग: काउंटर-क्लॉकवाइज

    एक बहुभुज में एक या अधिक छल्ले होते हैं। एक अंगूठी चार या अधिक बिंदुओं का एक जुड़ा हुआ क्रम है जो एक बंद, गैर-आत्म-प्रतिच्छेदन लूप बनाती है। बहुभुज में कई बाहरी रिंग हो सकते हैं । एक अंगूठी के लिए कोने या अभिविन्यास का क्रम इंगित करता है कि अंगूठी के किस तरफ बहुभुज का आंतरिक भाग है। शीर्ष क्रम में अंगूठी के साथ चलने वाले पर्यवेक्षक के दाईं ओर का पड़ोस बहुभुज के अंदर का पड़ोस है। बहुभुजों में छिद्रों को परिभाषित करने वाले वल्र्ड के वर्टिकल एक वामावर्त दिशा में होते हैं । एकल, वलयित बहुभुज के लिए वर्टेक्स हमेशा घड़ी की दिशा में होते हैं । [...]

    अंक सरणी में छल्ले का क्रम महत्वपूर्ण नहीं है। ESRI श्वेतपत्र

    चूंकि कई बाहरी सीमाओं को द्वीप-इन-द-लेक-ऑन-ए-इन-आइलैंड कॉन्फ़िगरेशन की अनुमति है, इस बहुभुज परिभाषा के साथ संभव है। Topologically एक झील में द्वीप सिर्फ एक और दक्षिणावर्त बाहरी रिंग होगा। प्रभावी रूप से यह एक ईएसआरआई शेपफाइल बहुभुज को एक साधारण फीचर मल्टीपोलियन बनाता है

    यदि आप अंकों को सही ढंग से क्रमबद्ध नहीं करते हैं, तो आपके पास केवल बहुभुज ओवरलैपिंग होंगे। pyshp

  • GeoJSON (RFC7946) :

    ध्यान दें: मूल GeoJSON 2008 युक्ति में कोई घुमावदार आदेश लागू नहीं था

    • घुमावदार आदेश: बाहरी रिंग काउंटर-क्लॉकवाइज (दाएं हाथ का नियम) है
    • आंतरिक वलय दक्षिणावर्त हैं
    • छल्ले का क्रम महत्वपूर्ण है:

      बहु-रिंग के साथ बहुभुज के लिए, पहले बाहरी रिंग होनी चाहिए और किसी अन्य को आंतरिक रिंग या छेद होना चाहिए। GeoJSON कल्पना

  • TopoJSON : बाहरी रिंग्स को डिफ़ॉल्ट रूप से क्लॉकवाइज बनाता है

शेपफाइल्स और सरल सुविधाओं के घुमावदार क्रम का चित्रण

भ्रमण:

वैकल्पिक रूप से नेस्टेड रिंग्स के वाइंडिंग ऑर्डर के गणितीय तर्क यह है कि शॉलेस फॉर्मूला ( दृश्य विवरण ) के साथ क्षेत्र की गणना रिंग दिशा के आधार पर हस्ताक्षर किए गए क्षेत्रों की गणना करती है।

सामान्य नेस्टेड रिंगों (आंतरिक सीमाओं) को छिद्र माना जाता है और बाहरी रिंग की वैकल्पिक दिशा होती है। उनका योगदान हस्ताक्षरित क्षेत्र मूल्य नकारात्मक है। जहां बाहरी छल्ले सकारात्मक हैं। सभी रिंग विशेषताओं का कुल क्षेत्र सभी हस्ताक्षरित क्षेत्रों का योग है।

जैसा कि ESRI द्वारा कार्यान्वित किया गया है यह नॉलेज बेस प्रविष्टि देखें: बहुभुज के क्षेत्र को निर्धारित करने के लिए ArcGIS द्वारा किस एल्गोरिथ्म का उपयोग किया जाता है?

प्रस्तावित मनोमय

तीर के रूप में व्याख्या किए गए अक्षर के खुले सिरे:

  • एस हैप्पीफाइल: एस → ↻ →:
  • सिंपल F e atur e s: e → e (बाहर की ओर cc-wise) → e
  • GeoJSON: G (G का स्टेम तीर है) → (

4

मुझे नहीं पता है कि कोई भी आपके प्रश्न के लिए एक निश्चित उत्तर देने में सक्षम होगा क्योंकि प्रत्येक वेक्टर फ़ाइल प्रारूप अलग है और प्रत्येक जीआईएस, इन आंकड़ों को कैसे आंतरिक रूप से संभालता है, इसके संदर्भ में भी अलग होगा। लेकिन मैं आपको निश्चित रूप से बता सकता हूं कि दक्षिणावर्त ऑर्डर केवल ESRI शेपफाइल्स के लिए नहीं है। ऐसे अन्य प्रारूप हैं जो आंतरिक छेद बहुभुज के लिए बाहरी रिंगों और काउंटर-क्लॉकवाइज के लिए घड़ी के समान क्रम का उपयोग करते हैं। उदाहरण के लिए, JTS वेक्टर बहुभुज संरचना एक समान प्रारूप का उपयोग करती है। वास्तव में, यह यहां कहा गया है , ऐतिहासिक रूप से यह ईएसआरआई दृष्टिकोण के समान था। मैं यह भी निश्चित रूप से कह सकता हूं कि नहीं, सभी प्रारूपों की यह आवश्यकता नहीं है। उदाहरण के लिए, GeoJSON प्रारूप विनिर्देशोंउनके बहुभुज प्रारूप में कोने के क्रम के बारे में ऐसी कोई आवश्यकता नहीं है। एम एल विनिर्देश वास्तव में राज्य:

बहुभुज के लिए वामावर्त क्रम में निर्दिष्ट किया जाना चाहिए। बहुभुज "राइट-हैंड-रूल" का पालन करते हैं, जिसमें कहा गया है कि यदि आप अपने दाहिने हाथ की उंगलियों को उस दिशा में रखते हैं जिसमें निर्देशांक निर्दिष्ट हैं, तो आपका अंगूठा बहुभुज के सामान्य ज्यामितीय दिशा में इंगित करता है।

तो विकल्पों की पूरी श्रृंखला मौजूद है और इसे वहां लागू किया गया है। यह एक जंगली दुनिया है!


1
ध्यान दें कि KML के "राइट-हैंड नियम" को पारंपरिक रूप से "लेफ्ट हैंड रूल" कहा जाता है (जब आप अपनी बाहों के साथ परिधि चलते हैं, तो आपका बायाँ हाथ फिगर के अंदर होगा)। Esri में कई दृष्टिकोण हैं, क्योंकि आकारफाइल एकमात्र प्रारूप है जो दाहिने हाथ के नियम का उपयोग करता है (एंटरप्राइज़ जियोडेट डेटाबेस आंतरिक रूप से बाएं हाथ के नियम का उपयोग करता है, लेकिन 'C' API आपको किसी भी क्रम में अनुरोध करने देगा)। जीएमएल को केवल यह चाहिए कि आंतरिक रिंग बाहरी रिंगों के विपरीत क्रम में हों, और पहली रिंग बाहरी हो।
विंस

@ मुझे नहीं पता था कि क्या यह पागल नहीं है? मुझे बताने के लिए धन्यवाद। मुझे लगता है कि मुझे GML का दृष्टिकोण सबसे अच्छा लगा; जब तक वे विपरीत हैं तब तक ऑर्डर देने से कोई फर्क नहीं पड़ता। यह काफी काम की बात है।
व्हाइटबॉक्सडेव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.