GDAL का उपयोग करके रास्टर डेटासेट से 'टाइल की गई छवि' कैसे काटें?


22

मैं एक ऐसे ऐप पर काम कर रहा हूं जिसमें किसी दिए गए रैस्टोरेंट के टाइल्स (jpeg) बनाने की जरूरत है। मेरा आरंभिक झुकाव gdal2tiles.py का उपयोग करना था, लेकिन इसका प्रदर्शन ऐसा लगता है कि इसमें सुधार किया जा सकता है।

यह मुझे निम्नलिखित प्रश्न पूछने की ओर अग्रसर करता है: GDAL का उपयोग करके रास्टर डेटासेट से 'टाइल की गई छवि' को काटने का सबसे तेज़ तरीका क्या होगा? और 'टाइल की गई छवि' से मेरा तात्पर्य सिर्फ एक साधारण jpeg या png से है।

मेरे प्रोटोटाइप में, मैं नौकरी करने के लिए MapServer C # MapScript बाइंडिंग का उपयोग करता हूं। यही है, मैं एक मैप ऑब्जेक्ट बनाता हूं, उन सभी टाइल सीमाओं के माध्यम से लूप करता हूं जिन्हें मुझे काटने की जरूरत है, मैप ऑब्जेक्ट्स को सेट करें, और फिर परिणामी छवि को सहेजें। इस दृष्टिकोण का प्रदर्शन gdal2tiles.py की तुलना में काफी बेहतर है, लेकिन मैं सोच रहा हूं कि क्या मैं सीधे GDAL का उपयोग करता हूं अगर मैं इसे और भी तेज नहीं बना सकता हूं। क्या कोई GDAL विधियों के साथ समान वर्कफ़्लो का सुझाव दे सकता है?

EDIT: आज कुछ और शोध के बाद, मुझे अपने सामने सही उत्तर मिला। यदि आपने FWTools डाउनलोड किया है, तो csharp \ apps फ़ोल्डर में C # GDAL बाइंडिंग प्रदर्शित करने के लिए कई वर्ग हैं। मेरे मामले में GDALRead.cs और GDALReadDirect.cs थे जो मैं देख रहा था।


2
@vadp, @markusn, @mapperz और बाकी सभी - कृपया विवरणात्मक रहें। लिंक के अलावा एक वाक्य या दो के रूप में क्यों आपको लगता है कि यह उपकरण देखने लायक है और दूसरों से अलग क्या मददगार होगा। हम चाहते हैं कि भविष्य में भी इसका उत्तर उपयोगी हो। जल्द या बाद में लिंक-रोट स्ट्राइक और अगर हमारे पास सभी यूआरएल हैं, तो यह पता लगाना मुश्किल है कि प्रोजेक्ट अगले अवतार में कहां है।
मैट विल्की

4
उपयोगकर्ता user890, क्या आप प्रश्न के अंतिम समाधान को पोस्ट कर सकते हैं और इसे बंद के रूप में चिह्नित कर सकते हैं? इस मामले में, ऐसा लगता है कि भाषा विशिष्ट बाइंडिंग का उपयोग करने से आपको अपनी आवश्यकता का प्रदर्शन मिल जाता है।
फॉक्स 27'11

मैं अपने स्वयं के पोस्ट में टिप्पणी नहीं जोड़ सकता :( लेकिन gdal_tiler.py भी मल्टीप्रोसेसिंग का समर्थन करता है, लेकिन बहुत ही क्रूर तरीके से: यह बस एक बार 'n' स्रोतों को संसाधित करता है। फिर भी यह कुछ सकारात्मक प्रभाव डालता है :)
वादिम

जवाबों:


5

किसी ने gdal2tiles.py कई प्रोसेसर का उपयोग करने के लिए समय बिताया है: समानांतर गदल

मैंने इसका उपयोग किया है और यह काम करने लगता है। यह सफलतापूर्वक सभी 4 कोर का 100% तक उपयोग करता है और मूल समय के 1/4 वें तक टाइल बनाने के लिए कुल समय में कटौती करता है।


आप gdal2tiles_parallel.py gitlab.com/GitLabRGI/geopackage-python देख सकते हैं । मैं
GeospatialInformationTech


1

मेरी कंपनी में हमने कस्टम पायथन स्क्रिप्ट लिखी, जिसमें gdal_warp का उपयोग किया गया (इससे पहले कि हम जानते थे कि gdal2tiles अस्तित्व में है)। यह तेजी से तब था जब हम कई कोर पर चलने के लिए इसे (अजगर अजगर का उपयोग करके) फिर से लिखना शुरू कर दिया। इसके अलावा इसने उच्च गुणवत्ता वाली टाइलों का उत्पादन किया (g2t पर लैंक्ज़ोस प्रक्षेप बुरा काम करता है, गदल_वरप में जिसके परिणामस्वरूप टाइल आश्चर्यजनक थे)।

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


0

MapCruncher

http://research.microsoft.com/en-us/um/redmond/projects/mapcruncher/

अच्छी तरह से काम करता है और इसका उपयोग छवियों को काटने के लिए किया जा सकता है


पारितोषिक के लिए धन्यवाद। मैं यह सब प्रोग्रामिक रूप से करना चाह रहा हूँ, यह MapCruncher के साथ संभव नहीं दिखता है?
user890

0

एक अन्य विकल्प टाइलचे (डब्ल्यूएमएस-सी) का उपयोग कर रहा है । हालाँकि मैंने कभी भी gdal2tiles का उपयोग नहीं किया है, मैं यह उम्मीद नहीं करूंगा कि टाइलचेच बेहतर प्रदर्शन लाएगा।

वैसे भी, निम्नलिखित रणनीतियाँ टाइलिंग को तेज़ कर सकती हैं:

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

0

http://code.google.com/p/tilers-tools से gdal_tiler.py स्क्रिप्ट एक उपयोगी विकल्प हो सकता है।

आमतौर पर यह gdal2tiles.py की तुलना में बहुत अच्छा प्रदर्शन दिखाता है और इसे किसी भी GDAL स्रोत (डेटासेट) के साथ काम करना चाहिए, विशेष रूप से, इसे आरजीबी के लिए स्रोत डाटासेट के रूपांतरण की आवश्यकता नहीं है।


-1

Gdal2tiles_parallel https://gitlab.com/GitLabRGI/erdc/geopackage-python यदि geopackage या MBTILES है, तो किसी भी अजगर की आवश्यकता नहीं है जो मूल रूप से gdal_translate.EXE के साथ किया जाता है। आपको एक से अधिक ज़ूम स्तर जोड़ने के लिए गलाडाडो भी चलाना होगा। मैं भी qgis / qmetatiles का उपयोग qgis डेस्कटॉप के लिए करता हूं। अभी भी कुछ भी maptiler प्रो वाणिज्यिक सॉफ्टवेयर के साथ प्रतिस्पर्धा नहीं कर सकता। यदि आपको टाइल्स के फ़ोल्डर की आवश्यकता है तो एमबीबीईएल को टीएमएस या एक्सवाईजेड में mbUtil अजगर के साथ परिवर्तित करें


लिंक अब काम नहीं करता है
एंड्रयूहेयर

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