बहुभुज सुविधाओं के विस्तार का अनुकरण


13

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

यह अवधारणा को चित्रित करने का काम करता है, लेकिन निश्चित रूप से यथार्थवादी परिणाम प्रदान नहीं करता है। यह मेरे बारे में सोच रहा था कि यह कैसे एक समान तरीके से किया जा सकता है जो कम समान परिणाम प्रदान करता है, विभिन्न दिशाओं में तेल को निर्देशित करने वाली धाराओं के प्रभाव की नकल / फीका करना क्योंकि यह फैलता है।

एक सामान्य अर्थ में, मैं एक वर्कफ़्लो की तलाश कर रहा हूँ जो निम्नलिखित दिए गए इनपुट बहुभुज सुविधा को पूरा करेगा:

  • एक नया बहुभुज सुविधा बनाएं जो मूल क्षेत्र से बड़ा हो (जैसे 10 वर्ग किमी।) या शायद एक निर्दिष्ट कारक (जैसे 5%)
  • नए बहुभुज की सुविधा एक मनमाने आकार की होगी, जिसमें कैविटी के साथ ...
  • नए बहुभुज की विशेषता में मूल बहुभुज सुविधा होगी (यह बिंदु एक सौदा ब्रेकर नहीं है, लेकिन अच्छा होगा)

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

मैं ईएसआरआई दुनिया में काम कर रहा हूं, लेकिन अन्य पैकेज / प्लेटफॉर्म को शामिल करने वाले समाधान निश्चित रूप से स्वागत योग्य हैं (हालांकि मैं उनका परीक्षण करने में सक्षम नहीं हो सकता)। सामान्य एल्गोरिदम, स्यूडोकोड और कोड भी ठीक हैं।


2
दिलचस्प और अभिनव समाधान हैं, लेकिन मैं निहितार्थ के बारे में चिंतित हूं कि इस तरह के अभ्यास से तेल फैल के साथ कुछ भी करना होगा। इसमें शामिल वैज्ञानिक जानकारी की मात्रा उसकी नाभि पर टकटकी लगाए दार्शनिक के लिए उपलब्ध नहीं है। ज़रूर, यह पॉलीगॉन को चारों ओर फैलाने के लिए मजेदार है - मुझे याद है कि एक ईएसआरआई प्रतिनिधि को आर्कवे 2 के साथ फायर सिमुलेशन के लिए ऐसा करने का वर्णन करता है '96 - लेकिन आप कैसे कहते हैं कि इस प्रक्रिया को मनमाना और संभवतः भ्रामक है?
whuber

1
@whuber - मैं दावा नहीं कर रहा हूं कि परिणाम कुछ भी होगा लेकिन मनमाना होगा। एक मनमाना परिणाम होने के नाते मैं सक्रिय रूप से सवाल में मांग कर रहा हूँ। आप सही हैं कि परिणाम वास्तविक दुनिया के समान नहीं होंगे। यही कारण है कि मैंने सवाल का शीर्षक जैसा कि मैंने किया था ("एक तेल रिसाव के विस्तार का अनुकरण" के विपरीत)। मैं कम्प्यूटेशनल ज्यामिति / जीआईएस कार्यप्रणाली पहलू में दिलचस्पी रखता हूं, किसी भी विशिष्ट डोमेन में इसका आवेदन नहीं। तेल स्पिल भाग एक दिलचस्प स्थानिक समस्या के बारे में सोचने के लिए बस प्रेरणा था। मैं कोशिश करूँगा और इस प्रश्न में स्पष्ट करूँगा।
जेम्स एम

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

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

जवाबों:


7

अभिनंदन

यहाँ मुझे लगता है कि यह PostGIS में करने का थोड़ा मजेदार तरीका है। मुझे लगता है कि इसे बढ़ाया जा सकता है इसलिए विस्तार वर्तमान का प्रतिनिधित्व करते हुए कुछ अलंकरण का अनुसरण करता है। लेकिन अब यह सिर्फ एक दिशा में फैलता है।

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

इसलिए परिणाम 50 पॉलीगॉन बड़ा और बड़ा हो रहा है। प्रत्येक बड़ा बहुभुज सभी छोटे बहुभुजों को पूरी तरह से ओवरलैप करता है।

परिणाम देखने के लिए आप इसे http://postgisonline.org/map.php पर आज़मा सकते हैं

बस नीचे दिए गए sql-code को कॉपी करें और "map1" पर क्लिक करें

RECURSIVE t (the_geom, n) AS (Select 'POLYGON के साथ ((10 10,8 13, 10 15, 12 14, 15 15, 16 12, 15 10, 10 10))' :: ज्यामिति AS__om, 1 as n यूनिअन ऑल सिलेक्ट ST_Convexhull (ST_Collect (ST_Simplify (ST_Buffer) (ST_Transscale (a_geom, 1.3, 2.7,1,1), 1), 0.1), the_geom), n + 1 as n FROM t WHERE n <50) select__geom ;

यदि आप केवल 30 से बहुभुज देखना चाहते हैं: वें पुनरावृति आप अंत में t और अर्धविराम के बीच
सीमा 1 ऑफसेट 30 जोड़ सकते हैं

उन 50 बहुभुजों को बनाने में लगभग 50 एमएस का उपयोग होता है, इसलिए बहुत अधिक इंतजार किए बिना मॉडल का विस्तार करना संभव होना चाहिए।

सादर निकलैस

यह भी एक अच्छा मुझे लगता है:

RECURSIVE t (the_geom, n) AS (Select 'POLYGON के साथ ((10 10,8 13, 10 15, 12 14, 15 15, 16 12, 15 10, 10 10))' :: ज्यामिति AS__om, 1 as n UNION ALL SELECT st_convexhull (ST_collect (ST_Simplify (ST_Buffer (ST_Transscale (the_geom, 1.1 * n, 15,1,1)), 0.2 * n), 0.1), the_geom), n + 1 as n FROM t WHERE n <50)। The_geom FROM t सेलेक्ट करें

विस्तार मोड़ सही अनुकरण


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

हां, स्थानिक एसक्यूएल के साथ बहुत सारे पॉज़िबाइलाइट्स हैं। उपरोक्त क्वेरी पुनरावर्ती भाग की वजह से सामान्य से थोड़ा अधिक कठिन है। शुरू करने में मदद करने के लिए बहुत से बढ़िया स्रोत हैं।
निकलैस एवन

3

ह्वीलर के कैविएट महत्वपूर्ण हैं, और जब तक आप केवल उदाहरण के उद्देश्य से ऐसा कर रहे हैं और फ्लूड डायनेमिक्स में नहीं खींचना चाहते, जो संभव है लेकिन समस्या को जटिल करता है।

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


2

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

मैं एंडी डब्ल्यू से सहमत हूं कि सीमा को बिंदुओं में गिराना पूर्व-आवश्यकता हो सकती है। आपको सटीक परिणाम प्राप्त करने के लिए अंकों की संख्या को घनीभूत करने की आवश्यकता हो सकती है।

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


1

मुझे आश्चर्य नहीं होगा अगर किसी ने वास्तव में इसी तरह के सिमुलेशन किए हैं, लेकिन यहां मैं सोचता हूं कि मैं परियोजना से संपर्क करूंगा (ओशनिक प्रक्रियाओं के बारे में कोई पूर्व ज्ञान नहीं होगा जो तेल रिसाव को फैलाना होगा)।

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

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

यह एक बहुत अच्छी परियोजना की तरह लग रहा है, और जब आपके समाप्त होने पर चित्र पोस्ट करते हैं।


0

बस इस तरह के एक सवाल उत्पन्न कर सकते हैं परिणाम की विविधता को स्पष्ट करने के लिए, मैं उस समाधान पर निपटाऊंगा जब मैं सवाल पोस्ट कर रहा था। मैं अगले कुछ दिनों में इसे लागू करने का मौका मिलने की उम्मीद कर रहा हूं, और जब मैं ऐसा करूंगा, तब इसे पोस्ट करूंगा।

  1. बहुभुज को एक बाइनरी रेखापुंज में व्यवस्थित करें।
  2. बेतरतीब ढंग से रखे गए 0 और 1 मानों के साथ 1 के परिणाम से बड़ा एक रेखापुंज बनाएँ। 0 और 1 मानों का वितरण उस राशि से मेल खाता है जिसे बहुभुज का विस्तार करने की आवश्यकता है। तो अगर बहुभुज को 5 वर्ग किमी का विस्तार करना है। अपने लक्ष्य तक पहुँचने के लिए, वहाँ 5 वर्ग किमी होगा। 1 कोशिकाओं के लायक।
  3. (1) और (2) के संघ परिणाम।
  4. (3) के परिणाम से सभी कोशिकाओं को निकालें जो मूल rasterized बहुभुज से सटे नहीं हैं।
  5. (4) के परिणामों को (2) मूल rasterized बहुभुज के स्थान पर फ़ीड करें, और तब तक दोहराएं जब तक कि (1) कोशिकाओं की संख्या लक्ष्य क्षेत्र से मेल नहीं खाती।

यह शायद ऐसा करने का सबसे कुशल तरीका नहीं है, लेकिन यह काम करना चाहिए। यह विचार एक शहरी विकास मॉडलिंग अभ्यास पर आधारित है जो एक उच्च-वर्ष वर्ग करता है। उनके यादृच्छिक रेखापुंज को विकास के लिए उपयुक्तता के आधार पर बनाया गया है, और उनके पास क्षेत्र की सीमाएं नहीं हैं, लेकिन यादृच्छिक विकास का हिस्सा अनिवार्य रूप से समान है।

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