ओपन सोर्स पायथन / पोस्टगिस प्रोटोटाइप के लिए सर्वश्रेष्ठ डिजाइन


9

मैं एक डेटा सघन वेब एप्लिकेशन लिख रहा हूं जो अपाचे के माध्यम से दिया गया है। मेरा सवाल यह है कि प्रोसेसिंग को कैसे बेहतर बनाया जाए क्योंकि इसमें कई विकल्प हैं।

मैं अपने निपटान में है OpenLayers / JQuery / जावास्क्रिप्ट, PostGIS / Postgresql (pgsql के साथ), python / psycopg2, php।

डेटाबेस में लगभग 3 मिलियन पंक्तियाँ हैं और प्रोटोटाइप वर्तमान में निम्नानुसार चलता है:

  • उपयोगकर्ता OpenLayers विंडो पर एक बिंदु पर क्लिक करता है

  • समन्वय को AJAX अनुरोध के रूप में सर्वर पर एक अजगर समारोह के माध्यम से भेजा जाता है

  • वर्तमान में मेरा आवेदन स्टेटलेस है

  • अजगर के psycopg2 का उपयोग एक pgsql संग्रहित प्रक्रिया को कॉल करने के लिए किया जाता है और WKT मानों का एक लार्ज सेट (और एक डेटा फ़ील्ड) अजगर मॉड्यूल में वापस आ जाता है

  • डेटा फ़ील्ड का उपयोग अजगर में WKT रिकॉर्ड को वर्गीकृत करने के लिए निम्नानुसार किया जाता है: सभी WKT मानों को 5 समूहों में से एक में वर्गीकृत किया जाता है। WKT मानों का लगभग 1% वास्तव में संशोधित होता है।

  • डब्ल्यूकेटी के पांच सेट / समूह पांच अलग-अलग बहुभुज बनाने के लिए बफ़र किए जाते हैं। मैं वर्तमान में ऐसा करने के लिए डेटाबेस में संग्रहीत कार्यविधि कहता हूं। यह बदले में सिर्फ ST_BUFFER का उपयोग करता है। (मैंने Shapely का उपयोग करने पर विचार किया है, लेकिन यकीन नहीं है कि GEOS लाइब्रेरी का उपयोग या तो मामले में प्रदर्शन लाभ होगा ...)

  • अंत में 5 WKT पाठ मानों को JSON स्ट्रिंग में लपेटा जाता है और OpenLayers में पाँच परतों के रूप में रेंडर करने के लिए वापस भेजा जाता है।

मुझे लग रहा है कि अड़चनें प्रारंभिक स्थानिक खोज और अंतिम बफ़रिंग चरण हैं।

मुझे लगता है कि प्रश्न है:

क्या चीजों को व्यवस्थित करने का एक बेहतर तरीका है? उदाहरण के लिए, क्या सभी डेटा प्रोसेसिंग को PostgreSQL (उदाहरण के लिए कर्सर) के साथ किया जाना चाहिए और क्या यह रखरखाव और प्रदर्शन के मामले में एक अच्छी बात होगी? वेब क्लाइंट पर लंबे समय तक WKT स्ट्रिंग्स से बचने के लिए टाइल सर्वर का उपयोग करना बेहतर होगा? आप इसे कैसे संबोधित करेंगे?


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

मैथ्यू - मैं ड्राइवटाइम पॉलीगॉन बनाने की कोशिश कर रहा हूं। मैं अवतल बहुभुज के बारे में कुछ जानता हूं, लेकिन इस तरह से कोशिश करना चाहता था, मुख्य रूप से बेहतर सटीकता के लिए। बहुभुज 200 मीटर बफ़र मल्टीलाइनस्ट्रेस (जो है: सड़कें)। मैं वर्तमान में डेटाबेस में सभी सड़कों के पूर्व-बफरिंग के विचार के साथ खेल रहा हूं, लेकिन मुझे अभी भी उन्हें मर्ज करने की आवश्यकता है। \ n #
जॉन स्टीडमैन

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

जवाबों:


3

बफरिंग अड़चन है

ST_Buffer का उपयोग करते समय आप निम्न num_seg_quarter_circle विकल्प को जोड़कर परिणामी आकृति की जटिलता को कम कर सकते हैं। यह बफरिंग और बाद के संचालन में प्रसंस्करण की मात्रा को कम करना चाहिए।

PostGIS प्रलेखन से:

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

आमतौर पर PostGIS में यदि आप मौजूदा ठीक से अनुक्रमित तालिकाओं के खिलाफ क्वेरी चलाते हैं तो आपको बेहतर प्रदर्शन मिलेगा। यह आपको कई अनुकूलन (जैसे क्लस्टरिंग) तक आसान पहुंच प्रदान करता है। 1% को संसाधित करने पर विचार करें जो अलग-अलग बदलता है, और अंत में दोनों को मर्ज करता है।


2

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

मेरा सुझाव है कि पायथन से परे, आप गणना करने और आउटपुट का उत्पादन करने के लिए MapServer और Geoserver को देखते हैं। वे दोनों इमेज टाइल्स या जियोजोन आउटपुट का उत्पादन कर सकते थे। दोनों अनुप्रयोग पश्च अंत के रूप में PostGIS का उपयोग कर सकते हैं।


धन्यवाद, डेविड। यह एक अच्छी नीति की तरह लग रहा है, जिसे मैं अपने प्रति प्रेरित कर रहा हूं। मैं इमेज टाइल्स के लिए जियो सेवर में देखूंगा। मैंने इसके लिए पूर्व में अजगर / मेपनिक का उपयोग किया है।
जॉन स्टीडमैन

दूसरी बात जो मुझे अभी पता चली है वह यह है कि एक संग्रहीत प्रक्रिया के माध्यम से पंक्तियों को वापस करना बहुत (बहुत, बहुत) धीमा है।
जॉन स्टीडमैन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.