ब्याज के एक क्षेत्र को कवर करने के लिए शेपफाइल से बहुभुज की न्यूनतम संख्या निर्धारित करें


10

मेरे पास एक बड़ी संख्या के आकार-प्रकार हैं जो एक विश्लेषण के लिए रुचि के क्षेत्रों का प्रतिनिधित्व करते हैं जो उपग्रह इमेजरी (IKONOS, RapidEye, आदि) के विभिन्न स्रोतों का उपयोग करके आयोजित किया जाएगा। दुर्भाग्य से, इमेजरी उदाहरण के लिए लैंडसैट जैसे पाथ्रो सिस्टम का उपयोग नहीं करता है, इसलिए विस्तार बहुत भिन्न होते हैं।

मेरे पास प्रत्येक एओआई के लिए अलग-अलग इमेजरी अधिग्रहणों के विस्तार का प्रतिनिधित्व करने वाले आकार एफ़ाइल्स हैं, जिनमें से सभी को पहले से ही स्वीकार्य माना गया है। इनमें से कुछ शेपफाइल्स में 500 या अधिक बहुभुज हैं।

मुझे एक दृष्टिकोण खोजने की आवश्यकता है, अधिमानतः एक जो कि स्वचालित हो सकता है (पायथन और आर्कइन्फो 10 अधिमानतः, एफओएसएस स्वीकार्य होगा) मेरे हित के प्रत्येक क्षेत्र को कवर करने के लिए सबसे कम संख्या में बहुभुज निर्धारित करने के लिए।


3
पूर्ण सामान्यता में, यह एक एनपी कठिन समस्या है इसलिए इसे कुछ शक्तिशाली सॉफ्टवेयर की आवश्यकता होती है। एक दृष्टिकोण इसे पूर्णांक रैखिक कार्यक्रम के रूप में फ्रेम करना है: बहुभुज AOI को "परमाणु" बहुभुज में विभाजित करते हैं और प्रत्येक मूल बहुभुज या तो पूरी तरह से कवर करता है या प्रत्येक परमाणु बहुभुज को कवर नहीं करता है। इस जानकारी को बाइनरी वैक्टर में एन्कोड किया जा सकता है। आप ऐसे वैक्टर की संख्या को कम करना चाहते हैं, जिनका योग प्रत्येक घटक में 1 या बड़ा है। इसी तरह की समस्याओं को हल करने के काम के उदाहरण mathematica.stackexchange.com/a/6888 और gis.stackexchange.com/a/27678 पर हैं
व्हिबर

जवाबों:


3

जैसा कि उच्च गुणवत्ता के समाधान को खोजने के लिए इस प्रकार की समस्या को सामान्य रूप से स्पष्ट करने के बारे में बताया गया है, लेकिन यह दृष्टिकोण आपको काम के बिना काफी हद तक बंद कर सकता है। यहाँ निम्नलिखित मान्यताओं के आधार पर कुछ छद्म कोड है:

  1. ब्याज का क्षेत्र
  2. बहुभुज वाई का सेट जो पूरी तरह से ए को कवर करता है

    Start loop
     Iterate through Y
       Select the polygon x from Y that has greatest area of intersection with A
    
     Clip A with polygon x
     Remove x from Y 
     If A is null then end program

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


0

ठीक है, तो आपके पास क्षेत्र ए है जो कुछ क्षेत्र का प्रतिनिधित्व करता है और इमेजरी एक्स्टेंट का एक गुच्छा है जिसे सेट वाई के रूप में परिभाषित किया जा सकता है।

अगर मेरे पास यह सही है, तो आप विभिन्न कार्यों का एक गुच्छा कर सकते हैं:

  1. क्षेत्र ए द्वारा इमेजरी एक्सटेंशन की कतरन
  2. एक्स्टेंट पॉलीगॉन का उपयोग करके स्थान का चयन करें और पूरी तरह से विकल्प शामिल हैं

फिर आप प्रत्येक के क्षेत्रों की जांच कर सकते हैं और निर्धारित कर सकते हैं कि क्या आपके पास आर्किपी और कर्सर का उपयोग करके कुछ स्थानिक ज्यामिति सॉर्ट करके बहुभुज का चयन करना है।

उममीद है कि इससे मदद मिलेगी।


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