जटिल जियोप्रोसेसिंग वर्कफ़्लोज़ को संभालने के लिए PostGIS का उपयोग कैसे करें?


12

हमारा संगठन PostGIS के लिए हमारे जियोप्रोसेसिंग वर्कफ़्लो को आगे बढ़ाने पर विचार कर रहा है। वर्तमान में हम आर्कबिस का उपयोग कर रहे हैं, जिसमें मॉडलब्यूस्टल में उपयोग किए जाने वाले कस्टम पायथन उपकरणों की अधिकता है। हम अपने अधिकांश डेटा को PostGIS में ले जा रहे हैं, जो विभिन्न प्रकार के ऐप्स द्वारा उपभोग किए जाते हैं, और अब हम पूछ रहे हैं कि क्या यह डेटा प्रोसेसिंग के साथ-साथ प्रदर्शन भी करता है।

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

आप में से जो अपने डेटा प्रोसेसिंग करने के लिए PostGIS का उपयोग करते हैं, क्या आपके पास संगठन, उपयोग करने के लिए उपकरण आदि के लिए कोई सलाह है?

  • क्या आप इसका उपयोग QGIS अजगर प्रसंस्करण के साथ करते हैं?
  • क्या लोग गैर-वेब प्रसंस्करण के लिए पायथन ओआरएम का उपयोग कर रहे हैं? मैं GeoDjango का उपयोग करने की ओर झुकाव रहा हूं क्योंकि इसमें PostGIS के लिए पायथन ORM है। डेटा को संसाधित करने के लिए PostGIS का उपयोग करने के हमारे शुरुआती परीक्षण में पायथन कोड में कई बड़े SQL टेक्स्ट ब्लॉक हैं और हम सोच रहे हैं कि GeoDjango ORM अधिक प्रबंधनीय और पठनीय कोड बनाने में मदद कर सकता है। वहाँ भी GeoAlchemy ORM है जो PostGIS के साथ समान रूप से बातचीत करता है, और Django के रूप में वेब-विशिष्ट के रूप में प्रकट नहीं होता है।

मैंने PostGIS का उपयोग करने वाले लोगों के बारे में नहीं सुना है कि मैं जितने लोगों को QGIS या ArcGIS का उपयोग करते हुए देखता हूं, उतना ही मैं यह जानना चाहता हूं कि क्या यह एक तुलनीय विकल्प है।


1
क्या आपकी सभी प्रक्रिया "बैकएंड" है? मैं एक Django या GeoDjango उपयोगकर्ता नहीं हूं, लेकिन मुझे लगता है कि वे केवल विकासशील वेबसाइटों के लिए उन उत्पादों के बारे में सोचते हैं (और अधिक परेशानी की तुलना में वे IMHO हैं)। क्यों नहीं शेल या अजगर लिपियों का एक गुच्छा (पाठ्यक्रम के यूनिक्स) कमांड लाइन पर या समय-समय पर "क्रोन" के माध्यम से चलता है? (कम क्लिक-क्लिक मेरे दिमाग में हमेशा बेहतर होता है।) आप शायद इन व्यवस्थित रूप से व्यवस्थित करना चाहते हैं, कम से कम आने वाली डेटा स्ट्रीम द्वारा। इसके अलावा, Postgis शायद QGIS के बिना आपके डेटा को स्लाइस और पासा कर सकते हैं - आपके मन में किस प्रकार के संचालन हैं?
forkandwait

1
हां, हमारा प्रसंस्करण बैकेंड है। हालाँकि, हम अंततः ग्राहकों के लिए अपने डेटा को देखने और संपादित करने के लिए एक OpenLayers वेब मानचित्र रखेंगे। हम ऐप के उपयोगकर्ता और व्यवस्थापक खातों के लिए Django का उपयोग कर सकते हैं। यदि ऐसा है, तो मैंने सोचा कि प्रसंस्करण के लिए जियोडजैंगो को देखने के लिए एक और कारण हो सकता है, भले ही Django मुख्य रूप से वेबसाइटों के लिए बनाया गया था। Django प्रस्तुति के साथ इस बड़े पैमाने पर प्रसंस्करण से पता चलता है कि Django सिर्फ वेब साइटों के लिए नहीं है: स्लाइडशेयर.net
Tanner

1
बैकएंड काम के लिए, मैं PostGIS, थोड़ा ogr2ogr, एक स्क्रिप्टिंग भाषा (पायथन, रूबी, Tcl, जो भी हो), और एक यूनिक्स कमांड लाइन का उपयोग करूंगा। मैं Django को इसमें शामिल करने से बचने की कोशिश कर रहा हूं, इसके अलावा अपने डेटाबेस को यथासंभव इसके साथ संगत रखने के लिए। फिर बाद में, जरूरत पड़ने पर उस पर फ्रंट एंड लगा दें। मेरा नियम है: कम clickey = अधिक उत्पादक (हालांकि GIS विश्लेषकों को clickey-clickey बकवास के साथ अधिक सहज महसूस होता है ... मेरा मतलब है "सहज ज्ञान युक्त इंटरफेस")।
forkandwait 16

स्लाइडशेयर के बारे में - जो कि पागलपन से जटिल लगता है, और शायद उपयुक्त है यदि आप अपनी प्रसंस्करण शक्ति को बनाए रखने की कोशिश कर रहे हैं, लेकिन अन्यथा प्रबंधन करने के लिए बुरे सपने।
forkandwait

1
सामान्य के एक जोड़े etl आप उपयोगी पा सकते हैं कि सवाल: " स्थानिक ईटीएल तुलना " और " क्या कोई सुरक्षित एफएमई विकल्प है? "
RyanKDalton

जवाबों:


8

मैं वास्तव में जियोप्रोसेसिंग उद्देश्यों के लिए PostGIS का उपयोग करना पसंद करता हूं।

मेरे दो मुख्य अनुनाद हैं:

1) डेटाबेस में जटिल कार्यों को करने के लिए अक्सर बहुत तेजी से होता है क्योंकि आपको सही क्रम में चीजों को करने के लिए क्वेरी प्लानर की मदद मिलती है।

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

मेरे वर्कफ़्लो, यदि कार्यों में बहुत सारे "चरणों" का उपयोग किया जाता है, जैसे कुछ:
1- कार्य के स्वरूप के आधार पर क्वेरी या इसके सभी भागों का निर्माण करें
2- डेटासेट के छोटे हिस्से पर क्वेरी का परीक्षण करें यह देखें कि यह कैसा प्रदर्शन करता है
3- यदि आवश्यक हो तो कुछ ट्विक करें
4- संपूर्ण डेटासेट पर क्वेरी चलाएँ
5- कुछ नोट्स के साथ टेक्स्ट फ़ाइल में लाइनों को सहेजें।
यह सब अक्सर आर्कजीआईएस शुरू करने के रूप में तेजी से होता है और लाइसेंस सर्वर से लाइसेंस की प्रतीक्षा करता है।


5

हम एक नंबर के उत्पादन के लिए PostGIS और कुछ प्रकार के पायथन प्रोग्रामिंग वातावरण का उपयोग करते हैं जो हमने विकसित की गई वेब सेवाओं को जियोप्रोसेसिंग करते हैं; कोई शिकायत नहीं!

अगर आप किसी वेब एप्लिकेशन के लिए सुविधाओं के साथ (या विशेष रूप से) काम कर रहे हैं तो GeoDjango एक शानदार विकल्प है। यह PostGIS रेखापुंज या PostGIS 2.0 के रेखापुंज डेटा प्रकार का समर्थन नहीं करता है। यह मूल रूप से Django के नवीनतम संस्करण के साथ आता है आप Django में कस्टम, कच्चे SQL प्रश्नों का उपयोग करके रेखापुंज समर्थन और समग्र मजबूती की कमी के लिए बना सकते हैं।

अधिक मजबूत जियोप्रोसेसिंग अनुप्रयोगों के लिए, और विशेष रूप से यदि आप ऑब्जेक्ट-रिलेशनल मॉडल का उपयोग करना चाहते हैं, तो GeoAlchemy2 का प्रयास करें। मूल GeoAlchemy लाइब्रेरी, जो SQLAlchemy का विस्तार करती है, फीचर डेटा के लिए समर्थन प्रदान करती है; GeoAlchemy2 PostGIS 2.0 में नए रेखापुंज डेटा प्रकार के लिए (सीमित) समर्थन प्रदान करके इसका विस्तार करता है।

और फिर, GDAL और OGR के लिए हमेशा पायथन बाइंडिंग है!


YMMV, लेकिन मुझे लगता है कि ऑब्जेक्ट-रिलेशनल लाइब्रेरीज़ वास्तव में सादे पुराने एसक्यूएल में कुछ भी नहीं जोड़ते हैं। जैसा कि मैंने एक अन्य टिप्पणी में कहा, यह विशेष रूप से सुनने के लिए सबसे दिलचस्प होगा।
forkandwait

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

3

हालांकि संभव है, यह कल्पना करना कठिन है कि आप डेटाबेस इंजन या वेब फ्रेमवर्क के अंदर बहुत जियोप्रोसेसिंग करना चाहते हैं। मैं आपको अंतर्निहित कोड लाइब्रेरी - जियोस, प्रोज .4, और गाल्ड को देखने की सलाह देता हूं। तीनों के लिए पायथन बाइंडिंग या लाइब्रेरी हैं। देखने का एक अन्य विकल्प QGIS के लिए Sextante जियोप्रोसेस प्लगइन है, क्योंकि यह मॉडल / वर्कफ़्लो बिल्डिंग की अनुमति देता है।

कुछ अन्य विचार:

PostGIS के उपयोग से इंकार न करें। यह अच्छी भंडारण और सर्वर क्षमता प्रदान करता है, और SQL के बावजूद कुछ जियोस और प्रोज.4 कार्यक्षमता को उजागर करता है। यह भी उल्लेखित अन्य उपकरणों के साथ अच्छा खेलता है: Django, QGIS, और पायथन।

उपरोक्त Sextante प्लगइन के संभावित उपयोग के अलावा, QGIS विज़ुअलाइज़ेशन के लिए अच्छा है, पोस्टग्रेज के साथ काम करने के लिए कुछ उपकरण हैं, और इसमें पायथन कंसोल भी शामिल है।

यदि आप ORM की तलाश कर रहे हैं और एक वेब फ्रंट एंड चाहते हैं, तो Django करेगा। यदि आपको कम-से-सेक्सी इंटरफ़ेस से कोई आपत्ति नहीं है, तो व्यवस्थापक पृष्ठ आपको अपेक्षाकृत कम प्रयास के साथ एक CRUD इंटरफ़ेस देंगे - यहां तक ​​कि अगर आप GeoDjango का उपयोग करते हैं, तो ज्यामिति संपादन भी।


2
हालांकि मैं इस बात से सहमत हूं कि कोई व्यक्ति जियोप्रोसेसिंग करने के लिए एक वेब फ्रेमवर्क का उपयोग नहीं करेगा, मैं दृढ़ता से असहमत हूं कि कोई व्यक्ति जिप्रोसेरिंग करने के लिए PostGIS (या किसी अन्य डेटाबेस इंजन) का उपयोग नहीं करेगा। हमें चर्चा में आगे बढ़ने के लिए बारीकियों की आवश्यकता है, लेकिन मैं PostGIS और SQL का उपयोग करते हुए बहुत बड़ी मात्रा में ज्यामिति स्लाइसिंग / डीशिंग और पॉइंट-इन-पॉली विश्लेषण करता हूं।
forkandwait

2
@forkandwait ओह, मैं आपसे PostGIS पर सहमत हूं। हालाँकि, मुझे यह आभास हुआ कि वे कई छोटी लिपियों का उपयोग करते हैं, जिन्हें वे प्रत्येक प्रोजेक्ट के लिए अलग-अलग श्रृंखला बना सकते हैं। मेरा लक्ष्य उन्हें अंतर्निहित पुस्तकालयों की जांच करने के लिए प्राप्त करना था ताकि वे जो भी पर्यावरण के लिए सबसे अच्छा काम कर सकें।
21

3

ईटीएल पर एक नज़र डालें , विशेष रूप से, स्थानिक संचालन के लिए एफएमई (या ओपन सोर्स जियो केटल )।

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

FME का एकमात्र नुकसान यह है कि इसमें पैसा खर्च होता है। लेकिन मुझे लगता है कि यह इसके लायक है।

FME का उपयोग करने का एक विकल्प शायद GDAL और OGR है और साथ ही शायद पायथन के साथ मिलकर इसे बाँध सकता है। या, जैसा कि आप कहते हैं, यह सब PostgreSQL में कर रहा है। मुझे लगता है कि स्थानिक डेटा के परिवर्तन में ETL की एक मजबूत भूमिका है, और यह बहुत कुछ करता है जो आप अपने डेटाबेस में नहीं कर सकते।

मैंने इसका उपयोग नहीं किया है, लेकिन GeoServer WPS का कार्यान्वयन प्रदान करता है , मैंने इसका उपयोग नहीं किया है, लेकिन अन्य इस पर टिप्पणी कर सकते हैं कि यह आपके लिए कैसे उपयोगी हो सकता है?

मैं GeoDjango का उपयोग करने पर टिप्पणी नहीं कर सकता, लेकिन मुझे लगा कि यह डेटा को देखने के लिए फ्रंट-एंड की तरह एक सीएमएस था।

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