अवतल हल के लिए परिभाषा, एल्गोरिथम और व्यावहारिक समाधान क्या हैं? [बन्द है]


116

उत्तल पतवार

आकृति के उत्तल पतवार को इस प्रकार परिभाषित किया गया है:

गणित में, उत्तल पतवार या उत्तल लिफ़ाफ़े को X के सेट के लिए एक वास्तविक सदिश स्थान V में न्यूनतम उत्तल सेट होता है जिसमें X ( विकिपीडिया ) होता है।

विकिपीडिया एक रबर बैंड सादृश्य का उपयोग करके इसे अच्छी तरह से देखता है, और इसकी गणना करने के लिए कुछ अच्छे एल्गोरिदम हैं

अवतल हल

नीचे की छवि में लाल रेखा का उपयोग करके एक अवतल पतवार की कल्पना की जाती है (नीली रेखा उत्तल पतवार की कल्पना करती है)। सहज रूप से, यह एक बहुभुज है जो सभी बिंदुओं को गले लगाता है, लेकिन उत्तल पतवार की तुलना में कम (न्यूनतम) क्षेत्र है। नतीजतन, बहुभुज की सीमा लंबाई लंबी है।

एक अवतल पतवार कुछ वास्तविक दुनिया की समस्याओं का समाधान हो सकता है (उदाहरण के लिए एक शहर की उचित सीमा का पता लगाना)।

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

मैं एक अवतल हल की धारणा के लिए एक उचित परिभाषा, एल्गोरिथ्म और व्यावहारिक समाधान खोजने में विफल रहा हूं। घास विकी कुछ विवरण और छवियों है , और वहाँ में एक वाणिज्यिक समाधान है concavehull.com

कोई विचार, एल्गोरिदम और लिंक?


आप किस संदर्भ में अवतल पतवार / अल्फ़ा आकार उत्पन्न करना चाहते हैं? PostGIS, ArcMap, एक वेब-मैप, अपने खुद के सॉफ्टवेयर में?
बुकमार्क करें

PostGIS और मेरे अपने पायथन स्क्रिप्ट दोनों।
एडम मटन

क्या अवतल पतवार एल्गोरिथ्म के कार्यान्वयन का एक C ++ लिनक्स-संगत संस्करण है?
सिल्व 255

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

कम्प्यूटेशनल ज्यामिति एल्गोरिदम लाइब्रेरी (CGAL) अल्फा आकार के साथ एक C ++ पुस्तकालय है। इसमें लिनक्स डाउनलोड है और इसे संस्करण> = 4.0 के लिए GPL / LGPL के रूप में लाइसेंस प्राप्त है।
क्लेविस

जवाबों:


57

जैसा कि स्कव बताते हैं , आप α- आकृतियों का कार्यान्वयन चाहते हैं

अल्फा आकृतियों को उत्तल पतवार का सामान्यीकरण माना जा सकता है। उन्हें पहली बार 1981 में वर्णित किया गया था:

एडेल्सब्रनर, एच।; किर्कपैट्रिक, डी।; सेडेल, आर।; , "विमान में बिंदुओं के एक सेट के आकार पर," सूचना सिद्धांत, IEEE लेनदेन पर, vol.29, no.4, पीपी। 551- 559, जुलाई 1983।

आपके लिए रुचि रखने वाले वातावरण के लिए खुला स्रोत कार्यान्वयन मौजूद है:

PostGIS

यदि आप PostGIS स्टैक का उपयोग कर रहे हैं, तो pgRout का वैकल्पिक ड्राइविंग डिस्टेंस एक्सटेंशन एक अल्फा आकार कार्यान्वयन को उजागर करता है। मुझे यकीन नहीं है कि आप अल्फा पैरामीटर को अलग-अलग कर सकते हैं, हालांकि।

उपयोग नीचे है:

SELECT the_geom AS alpha_shape 
FROM 
  points_as_polygon(
    'SELECT id, ST_X(your_geom) AS x, ST_Y(your_geom) AS y FROM your_table');

अजगर

संभवत: कई अजगर मॉड्यूल हैं जिनका आप उपयोग कर सकते हैं। मैंने सीजीएएल , सी ++ कम्प्यूटेशनल ज्यामिति पुस्तकालय के बारे में अच्छी बातें सुनी हैं । पायथन रैपर सीजीएएल के कुछ हिस्सों के लिए मौजूद हैं, जिसमें सीजीएएल के अल्फा आकार कार्यान्वयन को पायथन में शामिल करना शामिल है

ज्ञात हो कि CGAL के कुछ हिस्सों को QPL के तहत लाइसेंस प्राप्त है, जिसका अर्थ है कि यदि आप अपना कार्यक्रम वितरित करते हैं, CGAL से जुड़ा हुआ है, तो आपको इसे QPL के तहत जारी करने की आवश्यकता हो सकती है। यदि आप अपने प्रोग्राम कोड या बायनेरिज़ को पुनर्वितरित नहीं करते हैं, तो अपना कोड स्वामित्व रखना ठीक है।


मैं संकलन करने के लिए CGAL के अजगर रैपर नहीं पा सकता --- ऐसा लगता है कि ये कुछ समय में समर्थित नहीं हुए हैं और अब CGAL के हालिया संस्करण के साथ काम नहीं कर रहे हैं।
conradlee

2
@fmark: आपके द्वारा पोस्ट किया गया दूसरा लिंक मृत प्रतीत होता है।
राडेक

1
@fmark PostGIS लिंक जानलेवा लगता है ..
radek

41

यहाँ तुम क्या देख रहे हो।

आप कार्यक्रम को डाउनलोड और परीक्षण कर सकते हैं: (जावा में, जीपीएल लाइसेंस के तहत)

वैकल्पिक शब्द

एल्गोरिथ्म प्रस्तुत कागज वहाँ है:

डकहम, एम।, कुलिक, एल।, वर्बॉयस, एमएफ, गैल्टन, ए (2008) विमान में बिंदुओं के एक सेट के आकार की विशेषता के लिए सरल बहुभुज की कुशल पीढ़ी। पैटर्न मान्यता v41, 3224-3236


29

यह अल्फा आकृतियों का एक विशिष्ट अनुप्रयोग प्रतीत होता है , जो मेरे पढ़ने से इस समस्या का एक सामान्य रूप है। आर में अल्फ़ौल मॉड्यूल है , जिसमें अल्फा आकृतियों की गणना करने पर उत्कृष्ट प्रलेखन है । अल्फा आकृतियों पर इस विस्तृत पृष्ठभूमि की भी जाँच करें । यदि आप केवल उत्तल / अवतल पतवार की गणना करना चाहते हैं, तो लेज़बोररी , अंतिम भाग का हिस्सा देखें , यह अच्छी तरह से तराजू और लाखों इनपुट बिंदुओं को संभाल सकता है।

अंत में, फ़्लिकर द्वारा अल्फा आकृतियों के इस दिलचस्प अनुप्रयोग ने कुछ समय पहले राउंड किए, जो उपयोगकर्ता द्वारा उत्पन्न पॉइंट सामग्री को एकत्र करने के लिए उनकी उपयोगिता दर्शाते हैं:

फ़्लिकर से टेक्सास के अल्फ़ा पतवार


1
OMG स्रोत FORTRAN :-)
एडम मटन

यदि C ++ में क्लॉज़ पैकेज लिखा गया है, तो यह आपके लिए बेहतर है; लेकिन CGAL पर लाइसेंस के साथ सावधान रहना: github.com/straup/Clustr
SCW

2
अच्छा वास्तविक दुनिया उदाहरण है।
डेविड एफएफ


19

मैंने एक अत्यधिक कुशल उपकरण बनाया, जिसे [लेसबाउंडरी] [1,2] कहा जाता है, जो एलएएस / एलएजेड / एसएचपी / एएससीआईआई प्रारूप में LIDAR के लिए एक अवतल पतवार की गणना करता है और परिणाम को ESRI शेपफाइल फॉर्मेट या जियो में वेक्टर सीमा बहुभुज के रूप में संग्रहीत करता है। - KML फ़ाइल को संदर्भित करता है।

यहाँ एक उदाहरण रन है:

C:\lastools\bin>lasboundary -i SerpentMound.las -o SerpentMound_boundary.shp
reading 3265110 points and computing convex hull for 3265110 points
growing inward towards concave hull (with concavity = 50)
outputting the concave hull
concave hull has 1639 points

कुछ परिणाम चित्र यहाँ हैं


10

R- क्रियान्वयन अल्फा-आकार के बारे में, "SP ऑब्जेक्ट्स में अल्फा-आकार परिवर्तित करना" के बारे में एक लेख है

यह अल्फ़ाज़, सपा और spgrass6 http://casoilresource.lawr.ucdavis.edu/drupal/node/919 पर आधारित है


10

यहां एक आर फ़ंक्शन है जो अल्फा हल मॉडल को लागू करता है। आउटपुट एक sp बहुभुज वस्तु है। कृपया शीर्ष लेख में उदाहरण देखें। इसके लिए sp, अल्फुल और maptools पैकेज की आवश्यकता होती है।

** अद्यतन (०१-१५-२०१-201) अल्फ़ौल पैकेज द्वारा उत्पादित परिणामस्वरूप वस्तुओं में कई बदलाव हुए हैं। जैसे, मुझे फ़ंक्शन को फिर से लिखने की आवश्यकता थी। मैंने स्पैटियल ईको पैकेज में एक उत्तल फ़ंक्शन जोड़ा। हालांकि, अल्फ़ुल पैकेज में लाइसेंस प्रतिबंधों के कारण यह फ़ंक्शन केवल GitHub पर विकास संस्करण में उपलब्ध है। विकास संस्करण का उपयोग करके स्थापित किया जा सकता है:

library(devtools)
install_github("jeffreyevans/spatialEco")

यहाँ फ़ंक्शन उपयोग का एक उदाहरण है

library(sp)
library(spatialEco)
data(meuse)
 coordinates(meuse) = ~x+y
a <- convexHull(meuse, alpha=100000)
  plot(a)
    points(meuse, pch=19)

परिणामी SpatialLinesDataFrame को SpatialPolygonsDataFrame में बदलें

library(sf)
a <- sf::st_as_sf(a) 
a <- sf::st_polygonize(a)
class( a <- as(a, "Spatial") )
  plot(a)

एकाधिक अल्फा मानों का परीक्षण करें

par(mfcol=c(2,2))
   for (a in c(500, 1500, 5000, 100000)) {
   ch <- convexHull(meuse, alpha = a)
     plot(ch)
      points(meuse, pch=19)
        title( paste0("alpha=", a))      
   }

विभिन्न आहल अल्फा पैरामीटर


+1 क्या आप बता सकते हैं कि यह अल्फा आकृतियों के पैकेज से कैसे भिन्न है ?
व्हिबर

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

प्रोग्रामिंग भाषा क्या है?
एडम मैटन

धन्यवाद @JeffreyEvans मैं यह काम पाने में कामयाब रहा। क्या आप संभवतः मापदंडों की व्याख्या कर सकते हैं? मैं लिंक किए गए jstatsoft कागज पर एक नज़र है, लेकिन यह बहुत अभेद्य है।
12

9

JTS ( http://tsusiatsoftware.net/jts/main.html ) एक उत्तल हल कार्यान्वयन प्रदान करता है। मार्टिन डेविस ने कार्यों में अल्फा शेप अल्गोरिथम होने का भी उल्लेख किया है ताकि आप एसवीएन रिपॉजिटरी को यह देखने के लिए देख सकें कि क्या यह अभी तक है यदि आप चाहते हैं।


अभी तक कोई अवतल पतवार / अल्फ़ा आकार का कार्यान्वयन जून 2012 तक नहीं हुआ जहाँ तक मैं बता सकता हूँ।
ब्लाह 238

मई 2013 में अभी भी कुछ भी नहीं।
क्रिसेंट फ्रेश

क्या JTS जिंदा है? अंतिम संस्करण 19 दिसंबर, 2006 से है। vividsolutions.com/jts/JTSHome.htm
एंजेलवेरा

जवाब में लिंक की कोशिश
इयान Turton

JTS अब Github पर है, और दृष्टिकोण संस्करण 1.15 है: github.com/locationtech/jts हालाँकि जहाँ तक मैं बता सकता हूँ, वहाँ अभी भी एक अल्फा आकार कार्यान्वयन प्रतीत नहीं होता है।
कॉलिन वुडबरी

9

जेटीएस के बारे में बोलते हुए, आप जेटीएस लाइब्रेरी में हेरफेर के लिए जियोस्क्रिप्ट का उपयोग कर सकते हैं। उत्तल पतवार के बारे में एक लेख के लिए http://geoscriptblog.blogspot.com/2010/06/unwrapped-jts-with-python.html । GeoScript कार्यान्वयन जावास्क्रिप्ट, पायथन, स्काला और ग्रूवी में उपलब्ध हैं। आधिकारिक वेबसाइट: http://geoscript.org


7

यहाँ C में लिखा गया एक कार्यक्रम है जो उत्तल पतवारों, अल्फा आकृतियों, डेलौनी त्रिकोणताओं और वोरोनोई संस्करणों की गणना करता है:

  • हल - केन क्लार्कसन (2002)

सी और जावा कार्यान्वयन के साथ एक और उत्तल पतवार एल्गोरिथ्म यहाँ है:


7

इस पोस्ट के लिए पिछले उत्तरों को जोड़ने के लिए, कम से कम क्यूजीआईएस 2.6 के रूप में अवतल पतवार एल्गोरिथ्म है

पैरामीटर्स
इनपुट पॉइंट लेयर [वेक्टर: पॉइंट]
यहाँ पैरामीटर विवरण रखें

थ्रेसहोल्ड (0-1, जहां 1 उत्तल हल के बराबर है) [संख्या]
पैरामीटर विवरण यहां रखें
डिफ़ॉल्ट: 0.3

छेद की अनुमति दें [बूलियन]
पैरामीटर विवरण यहां रखें
डिफ़ॉल्ट: यह सच है

सिंगलपार्ट्स ज्यामितीय [बूलियन] में मल्टीपार्ट जियोमेट्री को विभाजित
करें: डिफ़ॉल्ट: गलत

आउटपुट कॉन्क्लेव पतवार [वेक्टर]
यहाँ आउटपुट विवरण डालते हैं

कंसोल उपयोग
प्रसंस्करण। क्रुनाल ('क्यूगिस: अवतल', इनपुट, अल्फा, छेद, no_multigeometry, आउटपुट)

इसके अलावा, एस्री में एक उपकरण न्यूनतम बाउंडिंग ज्यामिति (डेटा प्रबंधन) है

जो आपको ज्यामिति प्रकार चुनने की अनुमति देता है, जिसमें उत्तल पतवार शामिल है

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



3

अपने प्रश्न के "उचित परिभाषा" भाग के साथ मदद करने के लिए; आपने https://en.wikipedia.org/wiki/Convex_hull को देखा होगा और अच्छी तरह से "उचित" परिभाषा पर विचार किया जा सकता है, लेकिन इसमें कमी पाई गई, इसलिए शायद एक अधिक "उपयोगी" परिभाषा है:

उत्तल पतवार के अंदर हर बिंदु के लिए , पतवार के भीतर किसी भी बिंदु तक एक सीधी रेखा केवल पतवार को काटती है।

यह उपयोगी है क्योंकि एक बिंदु जिसे आप इसके माध्यम से एक रेखा का निर्माण कर सकते हैं और पतवार के खंडों के निर्माण के लिए परीक्षण कर सकते हैं।

  • कोई चौराहा बिंदु पतवार में नहीं है।
  • एक चौराहा बिंदु पतवार पर है।
  • दो चौराहे बिंदु पतवार के भीतर हैं
  • एक सीधी रेखा एक उत्तल पतवार को दो बार से अधिक नहीं काट सकती है

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