टाइल उत्पन्न करने के लिए प्रदाताओं से प्राप्त कस्टम टिफ़ छवि पर gdal2tiles का उपयोग कैसे करें


10

मेरे पास एक उच्च-रिज़ॉल्यूशन वाली छवि के लिए टाइलें बनाने के लिए मैं थोड़ा संघर्ष कर रहा हूं। हमारे पास वर्तमान छवि एक बहुत बड़ी (+ 20 जीबी) छवि है, जिसे जियोफाई फ़ाइल के रूप में सहेजा गया है।बड़ी जीटीएफ छवि

मैं gdal2tiles कमांड लाइन उपयोगिता का उपयोग करके टाइलें उत्पन्न करना चाहता हूं और फिर टाइलें प्रदान करने के लिए टीएमएस इमेजरी प्रदाता का उपयोग करके इसे सीज़ियम में खोलकर देख सकता हूं। Gdalinfo का उपयोग करते हुए, यहाँ छवि के कुछ विवरण दिए गए हैं:

Driver: GTiff/GeoTIFF
Files: image.tif
Size is 52250, 56119
Coordinate System is:
PROJCS["WGS 84 / UTM zone 35S",
    GEOGCS["WGS 84",
        DATUM["WGS_1984",
            SPHEROID["WGS 84",6378137,298.257223563,
                AUTHORITY["EPSG","7030"]],
            AUTHORITY["EPSG","6326"]],
        PRIMEM["Greenwich",0],
        UNIT["degree",0.0174532925199433],
        AUTHORITY["EPSG","4326"]],
    PROJECTION["Transverse_Mercator"],
    PARAMETER["latitude_of_origin",0],
    PARAMETER["central_meridian",27],
    PARAMETER["scale_factor",0.9996],
    PARAMETER["false_easting",500000],
    PARAMETER["false_northing",10000000],
    UNIT["meters",1],
    AUTHORITY["EPSG","32735"]]
Origin = (606276.000000000000000,7197873.000000000000000)
Pixel Size = (0.500000000000000,-0.500000000000000)
Metadata:
  AREA_OR_POINT=Area
  TIFFTAG_MAXSAMPLEVALUE=13165
  TIFFTAG_MINSAMPLEVALUE=1
  TIFFTAG_RESOLUTIONUNIT=2 (pixels/inch)
  TIFFTAG_SOFTWARE=ERDAS IMAGINE
  TIFFTAG_XRESOLUTION=1
  TIFFTAG_YRESOLUTION=1
Image Structure Metadata:
  INTERLEAVE=PIXEL
Corner Coordinates:
Upper Left  (  606276.000, 7197873.000) ( 28d 3'21.59"E, 25d19'55.12"S)
Lower Left  (  606276.000, 7169813.500) ( 28d 3'29.55"E, 25d35' 7.17"S)
Upper Right (  632401.000, 7197873.000) ( 28d18'55.92"E, 25d19'47.60"S)
Lower Right (  632401.000, 7169813.500) ( 28d19' 5.85"E, 25d34'59.57"S)
Center      (  619338.500, 7183843.250) ( 28d11'13.23"E, 25d27'27.58"S)
Band 1 Block=512x512 Type=UInt16, ColorInterp=Gray
Band 2 Block=512x512 Type=UInt16, ColorInterp=Undefined
Band 3 Block=512x512 Type=UInt16, ColorInterp=Undefined
Band 4 Block=512x512 Type=UInt16, ColorInterp=Undefined

मेरी पहली कोशिश यह थी कि छवि को भूतावेश करने के लिए gdal_translate का उपयोग किया जाए, और फिर जीजीपीएस: 3857 में प्रोजेक्शन को बदलने के लिए gdalwarp का उपयोग करें, जैसा कि सीज़ियम द्वारा आवश्यक है (एपीआई संदर्भ देखें)

gdal_translate -of VRT -a_srs EPSG:4326 -gcp 606275 7197875 28.055987 -25.331974 -gcp 606275 7169814 28.058200 -25.585326 -gcp 632400.5 7197875 28.31553 -25.329876 -gcp 632400.5 7169814 28.318286 -25.583209 image.tif newImage1.vrt
gdalwarp -of VRT -t_srs EPSG:3857 newImage1.vrt newImage2.vrt

हालाँकि, मुझे निम्न में से कई त्रुटियां हैं:

त्रुटि 1: अक्षांश या देशांतर सीमा से अधिक हो गया

एक और तरीका मैंने आजमाया कि सीधे gdal2tiles का उपयोग करें, और टाइल्स का निर्माण करें:

gdal2tiles.py image.tif

इसने एक सबफ़ोल्डर के साथ एक फ़ोल्डर बनाया (18 लेबल के रूप में) केवल ज़ूम स्तर था जिस पर टाइल बनाई गई थीं। हालाँकि, जो चित्र मुझे यहाँ मिलते हैं, वे पूरी तरह से "गलत" और "धुंधले" हैं।

टाइल्स में से एक का एक उदाहरण:

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

इस छवि के लिए टाइल बनाने के लिए कोई सुझाव gdal2tiles का उपयोग करके एक विशिष्ट क्षेत्र की बड़ी छवि है ताकि मैं इसे सीज़ियम में लोड और देख सकूं?

अपडेट करें

इसलिए, @ iant के सुझाव की कोशिश करने के बाद, मैंने निम्नलिखित आदेशों का उपयोग किया:

gdalwarp -co TILED=YES -co COMPRESS=DEFLATE -co BIGTIFF=YES -t_srs EPSG:3857 image.tif newImage.tif

यह कमांड पूरी तरह से ठीक काम करती है जब तक कि मुझे निम्नलिखित त्रुटि नहीं मिली:

त्रुटि 1: TIFFFillTile: पंक्ति 43520, कर्नल 47104 में त्रुटि पढ़ें; 35788250 बाइट्स मिले, 37421449 की उम्मीद

निश्चित नहीं है कि इस त्रुटि का क्या मतलब है, मैंने इसे फिलहाल के लिए छोड़ दिया और अभी भी एक अंतिम छवि "newImage.tif" प्राप्त की, जो कि गल्पवर्प स्टेप द्वारा निर्मित है। इसका उपयोग करके मैंने gdal2tiles.py कहा

gdal2tiles.py newImage.tif

इसने सबफ़ोल्डर्स 10-18 के साथ एक फ़ोल्डर का उत्पादन किया (और पहले की तरह केवल एक ज़ूम स्तर 18 नहीं था)। यह किसी भी कंसोल त्रुटियों के बिना, सीज़ियम में पूरी तरह से ठीक पढ़ता है, लेकिन छवि अभी भी "गलत" दिखती है:

छवि को सीज़ियम में लोड किया गया

मैं विचार कर रहा हूं कि मेरा मुद्दा @ user30184 के अनुसार हो सकता है "... gald2tiles के लिए स्रोत डेटा अच्छी तरह से सूट नहीं करता है।" हालांकि जब तक हमारा प्रदाता हमें गदल के साथ उपयोग के लिए कुछ प्रदान करने में सक्षम है, यह मेरे पास है।

मैं विचार कर रहा था कि गदल से बचने के लिए एक बैंड को अल्फा चैनल के रूप में समझने के लिए शायद बैंड में से एक को हटा दिया जाए। कोई सुझाव?


आप छवि को जियोफेरेंस क्यों करना चाहते हैं? इसमें पहले से ही सभी सीआरएस की जानकारी है।
आंद्रे जे

जवाबों:


7

मुझे लगता है कि आपको इसका उपयोग करने की आवश्यकता है:

gdalwarp -co TILED=YES -co COMPRESS=DEFLATE -t_srs EPSG:3857 newImage.tif image.tif

और फिर इसे टाइल करें:

gdal2tiles.py newImage.tif

यदि आपकी फ़ाइल बहुत बड़ी है तो इसमें कुछ समय लगता है।


-जे पैरामीटर के साथ आप ज़ूम स्तर को नियंत्रित कर सकते हैं, क्या आपने इसे पहले से ही आज़माया था? और ध्यान दें कि आपकी छवि में 4 बैंड हैं जो विशेष रूप से अप्रत्याशित परिणामों का कारण बन सकते हैं क्योंकि आप 16 बिट डेटा से निपटते हैं। कुछ पूर्वप्रक्रिया की आवश्यकता हो सकती है
user30184

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

@ user30184 मैंने कोशिश नहीं की कि अभी तक नहीं। मुझे कैसे पता चलेगा कि ज़ूम स्तर क्या होना चाहिए? या जैसा मैं चाहता हूं, क्या मैं उन्हें निर्दिष्ट कर सकता हूं? मैंने सोचा था कि इस विकल्प को छोड़ कर, मैं चयनित क्षेत्र के आधार पर स्क्रिप्ट को ज़ूम स्तर निर्धारित करने दूँगा।
प्रयास

@ user30184 आपने यह भी उल्लेख किया है कि मुझे 4 बैंड वाली छवि और 16 बिट डेटा के साथ अप्रत्याशित परिणाम मिल सकते हैं। आखिर क्यों? क्या यह गदल टाइल प्रसंस्करण के लिए सही प्रारूप में नहीं है? यदि ऐसा है, तो छवि सीधे प्रदाता से प्राप्त की गई थी, फ़ाइल को सही प्रारूप में प्राप्त करने के लिए क्या कदम होंगे? अर्थात् एक GDAL झगड़ा फ़ाइल? (अगर मैं ऐसा कुछ कह सकता हूँ)
प्रयास

मुझे निम्न समस्याएं मिलीं, जैसे कि आपने @iant: g >> 35788250 बाइट्स मिले, उम्मीद है कि 37421449 ERROR 1: TIFFReadEncodedTile () विफल रहा। ERROR 1: pleiades_merge05m_2015-06-19.tif, band 1: IReadBlock X ऑफसेट 86 में विफल रहा, Y ऑफसेट 109 ERROR 1: GetBlockRef X ब्लॉक ऑफ़सेट 86, Y ब्लॉक ऑफ़सेट 109 >>>>>>>>>>>>>>> > इसे ठीक करने के लिए कोई सुझाव?
प्रयास

2

मुझे लगता है कि आपकी छवि एयरबस डीएस द्वारा 4-बैंड उत्पादों में से कुछ है:

http://www.intelligence-airbusds.com/en/4951-which-spectral-mode-do-i-choose

Gdal2tiles को पीएनजी टाइल्स में आम, दृश्य छवियों को विभाजित करने के लिए बनाया गया है। ऐसी छवियां प्रति बैंड 8 बिट्स का उपयोग करती हैं और उनके पास 4 बैंडों के एक बैंड (ग्रीसेकेल), 3 बैंड (रेड-ग्रीन-ब्लू) (रेग-ग्रीन-ब्लू + अल्फा) होते हैं।

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

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


धन्यवाद @ user30184, मैं कुछ संसाधनों पर पढ़ रहा हूं और एक समान विचार पर आया हूं। मुझे लगता है कि हमारे प्रदाताओं को "GDAL संगत" टिफ़ फ़ाइलों के साथ हमें प्रदान करने के लिए कहना सबसे अच्छा होगा, लेकिन जब तक वे हमें वापस नहीं मिलते, यह हमारे पास है। मैं विचार कर रहा था कि गदल से बचने के लिए एक बैंड को अल्फा चैनल के रूप में समझने के लिए शायद बैंड में से एक को हटा दिया जाए। कोई सुझाव?
प्रयास

छवि से एक छोटा सा उप-भाग काटने के लिए gdal_translate का उपयोग करें gdal_translate -srcwin 20000 20000 1000 1000 original.tif sample.tifइसे (नोडल क्षेत्रों से बचने के लिए बड़े ऑफसेट) करना चाहिए। QGIS के साथ इस छोटी छवि को खोलें और आपको तेजी से देखने की सेटिंग के साथ खेलने में सक्षम होना चाहिए। अल्फा चैनल के बारे में मेरा अनुमान शायद गलत है, अन्यथा परिणाम रंगीन दिखना चाहिए, न कि ग्रे।
user30184

धन्यवाद @ user30184, जैसा कि आपने सुझाव दिया था और QGIS में इसे सफलतापूर्वक खोला था। इस लिंक को देखें: drive.google.com/open?id=0B97NtaPJrVz-anRYQmxjZFludk0 अब मैं अपने मुद्दे "डिबगिंग" के बारे में कैसे जा सकता हूं? GGGwarp और gdal2tiles करने के लिए QGIS का उपयोग कर रहे हैं?
प्रयास
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.