मेरे पास बहुतायत से एक विस्तृत आकृति है जिसमें बहुभुज / बहुभुज विशेषताएं हैं (फ़ाइल लगभग 500mb है)। यह वास्तव में समूची दुनिया की एक आकृति है, जिसमें समुद्र तट की विशेषताएं हैं। मुझे ग्रिड का उपयोग करके इस डेटा को विभाजित करने की आवश्यकता है। स्पष्ट होने के लिए, मैं डेटा को 'सॉर्ट' नहीं करना चाहता, लेकिन वास्तव में बहुभुज को टाइलों में काट देता हूं। मुझे लगता है कि यह सवाल पहले पूछा गया है, लेकिन मैंने जो समाधान पाया वह मेरे लिए काम नहीं किया।
मैंने कोशिश की:
क्यूजीआईएस का उपयोग करना और एक वेक्टर ग्रिड के साथ मेरी आकृति सामग्री को इंटरसेप्ट करना - परिणाम भयानक हैं। अधिकांश प्रमुख भूमाफिया जादुई रूप से गायब हो जाते हैं, हालांकि ऐसा लगता है कि भूमि के छोटे टुकड़े कभी-कभी इसे बनाते हैं। मुझे ध्यान देना चाहिए कि यह विधि बहुत सरल डेटा (यानी कम अंक) के साथ वास्तव में अच्छी तरह से काम करती है
ओजीआर के अंतर्ग्रहण उपकरणों का उपयोग करना। मैंने इसे ogr2ogr और यहां तक कि अपने स्वयं के C ++ टूल को रोल करके दोनों की कोशिश की। उन दोनों को QGIS जैसी ही समस्या है। वे सरल फ़ाइलों के लिए भी इस समस्या का प्रदर्शन नहीं करते हैं, लेकिन अधिक जटिल लोगों को विफल करते हैं। संदर्भ के लिए, मैं ऑस्ट्रेलिया और न्यूज़ीलैंड के आकार के आकार का उपयोग कर रहा हूँ, आकार में 20mb से कम है, और QGIS और OGR दोनों इसे 'ग्रिडिफाई' करने में विफल हैं।
किसी ने एक बिंदु पर PostGIS का उपयोग करने का सुझाव दिया, क्योंकि इसमें एक चौराहे का कार्य होता है - लेकिन PostGIS के ST_Intersect में उसी GEOS बैक एंड का उपयोग किया जाता है जैसा OGR करता है। वास्तव में वे दोनों एक ही कार्य को कहते हैं जहाँ तक मैं बता सकता हूँ, इसलिए मुझे नहीं लगता कि PostGIS विभिन्न परिणाम देगा।
मैं सुझाव की तलाश में था कि मैं और क्या प्रयास कर सकता हूं। मुझे एक मजबूत एप्लिकेशन या टूलकिट की आवश्यकता है जो टाइलों में अत्यधिक विस्तृत आकार के फाइल को विभाजित कर सकते हैं।
संपादित करें: कुछ और जानकारी जोड़ना
सिंबांगु के जवाब में:
शेपफाइल मूल रूप से OpenStreetMap से तटीय डेटा है। यह 'प्रोसीड_पी' फाइल का मर्ज किया गया संस्करण है (इसलिए इसकी टाइलों में विभाजन नहीं हुआ है) जो मुझे उनकी देव सूची को ईमेल करके मिला है। ध्यान दें कि टाइलों का उनका विभाजन (ओवरलैप के साथ 100 किमी x 100 किमी की दूरी पर) जरूरी नहीं है कि मैं क्या चाहता हूं - मैं ओवरलैप नहीं चाहता हूं, और मुझे ग्रिड आकार चुनने की स्वतंत्रता चाहिए, या मैं बस उपयोग करूंगा डिफ़ॉल्ट संसाधित_प।
डिफ़ॉल्ट रूप से कोस्टलाइन डेटा में QGIS द्वारा रिपोर्ट की गई ज्यामिति त्रुटियां हैं। मैं इन त्रुटियों को एक छोटे उपकरण के साथ ठीक करता हूं, जिन्हें मैंने कुछ कोड का उपयोग करके पाया था जो मुझे विशेष रूप से इस समस्या को हल करने के लिए डिज़ाइन किया गया था (तटीय डेटा में ज्यामिति त्रुटियों की मरम्मत: https://github.com/tudelft-gist/prepair )। इस उपकरण के साथ फ़ाइलों के ऊपर चलना लगभग सभी त्रुटियों को ठीक करता है क्यूजीआईएस उठाता है। मैं केवल फाइलों को साफ करने के बाद चौराहा करने का प्रयास करता हूं।
वास्तव में मैंने QGIS का उपयोग क्या किया है: यह सुनिश्चित करने के लिए डेटा खोलें कि यह QGIS में ठीक लग रहा है। एक निर्दिष्ट रिक्ति के साथ वेक्टर ग्रिड का उपयोग करके टाइल्स की एक परत बनाकर इसे टाइलों में विभाजित करने का प्रयास करें, और फिर दो परतों को पार करना - न जाना। एक छोटे डेटा सेट का उपयोग करने का प्रयास करें - एक छोटे डेटा सेट की कोशिश करने के लिए ओशिनिया (ऑस, एनजेड) में सुविधाओं का चयन करें - यह आकार फ़ाइल का आकार <20mb है। फिर से इसे विभाजित करने का प्रयास करें, काम नहीं करता है।
मैंने OGR के साथ क्या किया: ogr2ogr ने सीधे '-pat' और '-clipsrc' विकल्प का उपयोग spat_extent के साथ किया। एक छोटा C ++ टूल भी लिखा है जो WKT पर काम करता है, इसलिए मैं ogr2ogr का उपयोग करके आकृति को WKT में रूपांतरित करता हूं, फिर टेक्स्ट फ़ाइल को मेरे एप्लिकेशन में फ़ीड करें। यह फ़ाइल के माध्यम से चलता है और यहां प्रलेखित () विधि प्रलेखित है: http://www.gdal.org/ogr/classOGRGeometry.html । मुझे लगता है कि यह सीधे ogr2ogr का उपयोग करने के समान सटीक काम करता है।
ब्रेंट के जवाब में:
- ऐसा होता है। सब कुछ WGS84 लाट / लोन में है
- मैंने सोचा होगा कि विपरीत सच है - कि ग्रिड टाइल्स के दिए गए सेट के लिए, यह खंडित सुविधाओं के एक समूह के बजाय एक विशाल मल्टीपिलगॉन को इंटरसेप्ट करने में अधिक समय लेगा, जो प्रत्येक टाइल पर अधिक स्थानिक रूप से स्थानीय हो सकता है, लेकिन यह एक दिलचस्प सुझाव - मैं इसे आज़माऊँगा और वापस रिपोर्ट करूँगा।
- प्रक्रिया के दौरान कोई विशेषता फ़ील्ड नहीं रखी गई हैं, मुझे केवल ज्यामिति में दिलचस्पी है।
- मुझे यकीन नहीं है, लेकिन मुझे लगता है कि आप कह रहे हैं कि मुझे ऐसे पॉलीगनों का चयन करना चाहिए जो किसी दिए गए ग्रिड टाइल को ओवरलैप करते हैं और फिर चौराहे का प्रदर्शन करते हैं। यह QGIS के साथ मैन्युअल रूप से बहुत बोझिल है। मेरा उपकरण पहले से ही एक सीमा बॉक्स की जांच के साथ एक निश्चित सीमा तक करता है। थोड़ी गति है, लेकिन अंतिम परिणाम अभी भी खराब है और बिल्कुल अलग नहीं है।
- यह एक विकल्प नहीं है। अभी मैं डेटा को विभाजित करने की कोशिश कर रहा हूं ताकि इसका 1 डिस लेट x 1 डिग्रेड लोन हो, और मैं एक सामान्य / मजबूत कार्यप्रणाली की तलाश कर रहा हूं जो सभी मामलों के साथ काम करती हो। मैंने ग्रिड आकार बढ़ाने की कोशिश की है (यानी 10x10) यह देखने के लिए कि क्या मुझे बेहतर परिणाम मिलेंगे और मुझे ग्रिड आकार और आउटपुट की गुणवत्ता के बीच कोई संबंध नहीं दिखता है।
# 2 संपादित करें:
मैंने इसे और अधिक के साथ खेलने की कोशिश की है और सामान्य तौर पर ऐसा लगता है कि परिणाम GEOS का उपयोग करते हुए और QGIS के साथ दोनों अविश्वसनीय हैं (जो कि fTools का उपयोग करता है, मुझे नहीं पता कि क्या बदले में वह फिर से GEOS का उपयोग करता है)। ग्रिड के आकार को बताने में मैं गलत था कि इसका परिणामों से कोई लेना-देना नहीं है - ग्रिड जितना बड़ा होगा, परिणाम उतने ही अच्छे होंगे (यह जानना अच्छा है लेकिन फिर भी समाधान नहीं है)। यहाँ वास्तव में काम कर रहे ग्रिड का एक स्क्रीनशॉट है जो ज्यादातर काम करता है, लेकिन एक टाइल में आंशिक रूप से विफल रहा:
ज्यामिति साफ है - QGIS "Check Validity" टूल के साथ 0 त्रुटियां दिखाता है। मैं इस समस्या को एक कदम से कदम फैशन में नहीं देख रहा हूं; यह देखते हुए कि कुछ विशेषताएं किसी डेटासेट पर प्रतिच्छेदन को विफल करती हैं या नहीं, यह तब बड़ा होता है जब इसकी दृष्टि स्पष्ट नहीं होती (और यह छोटी टाइलों के साथ नहीं होगी) व्यावहारिक नहीं है।