पारदर्शी पहाड़ी बनाना?


34

मैं एक संयोजन के माध्यम से सुरुचिपूर्ण पारदर्शी पहाड़ियों को प्राप्त करता हूं gdalऔर convert। आमतौर पर उपयोग की जाने वाली ग्रे-आधारित पहाड़ियों की तुलना में, इस तरह की पारदर्शी हिलशैड बहुत शांत होती हैं क्योंकि उन्हें पृष्ठभूमि की पृष्ठभूमि और अन्य ऊपरी परतों (सड़कों, बाइडिंग) के बीच रखा जा सकता है ताकि पृष्ठभूमि का प्रकार और रंग जो भी हो, एक 3 डी महसूस हो सके।

यह काम किस प्रकार करता है

चाल: एक ग्रे स्केल पहाड़ियों के साथ शुरू करके gdal hillshade, चाल ग्रे चैनल के मूल्यों को लेने के लिए है, प्रत्येक मूल्य को उल्टा करें, और इस परिणाम को एक नए अपारदर्शिता चैनल में प्रवाहित करें। ब्लैक पिक्सेल [0,0,0] बन जाता है [0,0,0,255] (अपारदर्शिता = 255), ग्रे पिक्सेल [120,120,120] कम हो जाता है [120,120,120,135] (अपारदर्शिता = 135, उर्फ ​​255-120), सफ़ेद पिक्सेल [255,255,255] पारदर्शी बनें [255,255,255,0] (अपारदर्शिता = 0, उर्फ ​​255-255) और इसी तरह। हिल्स के शेड अपारदर्शी और काले रंग के होते हैं , मैदान उत्तरोत्तर पारदर्शी (सफेद) हो जाते हैं । वैचारिक रूप से, पिक्सेल का बैंड समीकरण कुछ इस प्रकार है:

alpha_value([0])    = 255-0 = 255;   // black pixels get full opacity
alpha_value([Grey]) = 255-Grey;
// grey pixels get 255-GreyValue opacity.
alpha_value([255])  = 255-255 = 0  // white pixels get null opacity !

इस दृष्टिकोण पर एक निर्धारित वीडियो के लिए, एक फ़ोटोशॉप डिज़ाइनर द्वारा समझाया गया, फ़ोटोशॉप में शेडेड रिलीफ जोड़ें (16mins) देखें।

सवाल

ETOPO या SRTM व्युत्पन्न ग्रे-आधारित पहाड़ियों ( gdaldem hillshade crop_xl.tmp.tif shadedrelief.tmp.tif -s 111120 -z 5 -az 315 -alt 60 -compute_edges, यहाँ डाउनलोड करने के लिए उपलब्ध फ़ाइल ) को इनपुट के रूप में लेना ...

... इस तरह की .tif फ़ाइलों पर गाल या अन्य गैर-जीआईएस-विनाशकारी तरीके से ऊपरी रूप से उद्धृत चाल को कैसे किया जाए?

ध्यान दें कि मैं जीआईएस गुण (जियोलोकेशन) रखना चाहता हूं।

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


1
संदर्भ डेटा टिफ में कैसे संग्रहीत किया जाता है, इस पर निर्भर करते हुए, यह उतना आसान हो सकता है जितना कि टिफ़ से जुड़ी विश्व फ़ाइल का नाम बदलना।
स्टीव

@ यह: यह .tif फ़ाइलों के लिए ऐसे SRTM या ETOPO से रेखापुंज से उत्पन्नgdaldem hillshade etopo_crop.tif shadedrelief.tmp.tif -s 111120 -z 5 -az 315 -alt 60 -compute_edges
Hugolpz

मुझे लगता है कि -b बैंड , -mask बैंड , -एक्सपैंड ग्रे केgdal_tranlate संयोजन के साथ । rgb | rgba साथ में सूत्र के साथ जाने का तरीका हो सकता है, लेकिन मैंने कभी बैंड को नहीं छुआ और मैं अभी भी काफी क्लूलेस हूं। opacity=-(px_grey_value)+255
हगोलपज़


क्या आपने समन्वय, सेल आकार और संदर्भ प्रणाली को फिर से लिखने के लिए gdal_edit.py की कोशिश की है?
राडोक्सु

जवाबों:


42

संक्षेप

नीचे दी गई 3 छवियों के प्रत्येक सेट को "ग्रे (बैंड) + अपारदर्शिता (बैंड) = पारदर्शी परिणाम" जैसे पढ़ा जाना चाहिए । आप इन प्रक्रियाओं को संबंधित गिथब होस्टेड मेकफाइल के माध्यम से मिनटों में परीक्षण कर सकते हैं । प्रक्रिया # 3 वह है जो मैं सुझाता हूं, 170 (मजबूत छाया रखता है) और 220 (सभी छाया रखता है) के बीच की सीमा के साथ। प्रक्रिया 3 सबसे मजबूत छाया प्रदान करती है और ग्रे-वाइटनिंग प्रभाव से बचती है। आवश्यकतानुसार परिणामस्वरूप परत की समग्र अपारदर्शिता को अनुकूलित करें। आवश्यकतानुसार समीकरणों में --calc="<equation>"सुधार किया जा सकता है gdal_calc

इस दृष्टिकोण पर एक निर्धारित वीडियो के लिए, एक फ़ोटोशॉप डिज़ाइनर द्वारा समझाया गया, फ़ोटोशॉप में शेडेड रिलीफ जोड़ें (16mins) देखें।

पृष्ठभूमि

gdaldem hillshadeपिक्सल वैल्यू रेंज के साथ एक बैंड ग्रे स्केल फाइल तैयार करता है = [1-255], सबसे गहरे छाया से लेकर सबसे प्रबुद्ध पिक्सेल तक उर्फ। समतल क्षेत्रों के लिए, px = 221 (#DDDDDD)। NoDataValueपिक्सल डिफॉल्ट नोडोडैवल्यू प्राप्त करते हैं 0, साथ ही, इनपुट और आउटपुट में सबसे गहरा काला है और होना चाहिए 1। अपारदर्शिता बैंड परिभाषित नहीं होने से, अपारदर्शिता 100% है

gdaldem hillshade input.tif hillshade.tmp.tif -s 111120 -z 5 -az 315 -alt 60 -compute_edges

hillshade.tmp.tif

हम एक 2 अपारदर्शिता बैंड को परिभाषित और नियंत्रित करना चाहते हैं!

उद्देश्य

हम एक ग्रेस्केल बैंड चाहते हैं -b 1, यह पहाडी है। गदल से, यह एक ग्रे बैंड है जिसमें निरंतर रेंज जैसे px = [1-255] है। हम गैर-प्रासंगिक क्षेत्रों (# 2) को काट सकते हैं, या इसे px = 1 पर काला कर सकते हैं और अपारदर्शिता बैंड (# 3) पर भरोसा कर सकते हैं।

हम एक अपारदर्शिता बैंड चाहते हैं -b 2, आम तौर पर पहाड़ियों का उलटा या उससे संबंधित कार्य। हम गैर-प्रासंगिक क्षेत्रों (# 2) को काट सकते हैं। यह इस तरह के px = [1-255] opacities की एक सतत श्रृंखला होनी चाहिए, अन्य कोई लालित्य नहीं है।

gdal_calcदोनों का उपयोग इनपुट फाइल ए, बी, सी ... से पिक्सल पर गणित कर सकते हैं और बूलियन मानों की जांच कर सकते हैं A<220, जैसे कि 1 (सच्चा) या 0 (गलत) रिटर्न। यह सशर्त पथरी की अनुमति देता है। यदि स्थिति झूठी है, तो समीकरण का संबंधित भाग शून्य है।

1. ग्रे पहाड़ियों को पारदर्शी बनाया

निम्नलिखित मानक gdal hillshadeग्रैस और व्हिटर क्षेत्रों के साथ बहुत अच्छे दो-बैंड परिणाम प्रदान करता है जो तेजी से पारदर्शी बना है:

# hillshade px=A, opacity is its invert: px=255-A
gdal_calc.py -A ./hillshade.tmp.tif  --outfile=./opacity.tif --calc="255-A"
# assigns to relevant bands -b 1 and -b 2
gdalbuildvrt -separate ./final.vrt ./hillshade.tmp.tif ./opacity.tif

hillshade.tmp.tif # 1, opacity.tif # 1, अंतिम

2. छद्म फसल के माध्यम से अनुकूलन (-b 1 और -बी 2)

पर -b 1(पिक्सेलस) पिक्सल के 2/3 नंगे आंखों के लिए अदृश्य हो जाते हैं जब अपारदर्शिता -b 2को जोड़ा जाता है, फिर भी, ये पिक्सेल विभिन्न व्हिटर -b 1और कम अपारदर्शिता -b 2मान रखते हैं। उन्हें सभी सफेद पारदर्शी [255,1]पिक्सेल बनाए जा सकते हैं , जिससे बेहतर संपीड़न दर की अनुमति मिलती है:

# filter the color band, keep greyness of relevant shadows below limit
gdal_calc.py -A ./hillshade.tmp.tif  --outfile=./color_crop.tmp.tif \
    --calc="255*(A>220) +      A*(A<=220)"
# filter the opacity band, keep opacity of relevant shadows below limit
gdal_calc.py -A ./hillshade.tmp.tif  --outfile=./opacity_crop.tmp.tif \
    --calc="  1*(A>220) +(256-A)*(A<=220)"
# gdalbuildvrt -separate ./final.vrt ./color_crop.tmp.tif ./opacity_crop.tmp.tif
# gdal_translate -co COMPRESS=LZW -co ALPHA=YES ./final.vrt ./final_crop.tif

# 2, color.tif (फसली) # 2, opacity.tif (फसली) # 2, final_crop.tif

3. आगे-बी 1 अनुकूलन (फसल + काला)

चूँकि हमारे पास एक प्रगतिशील अपारदर्शिता बैंड -b 2है जिस पर भरोसा करने के लिए, हम -b 1पिक्सेल को या तो सफेद px = 255 के माध्यम से 255*(A>220), या काले px = 1 के माध्यम से बना सकते हैं 1*(A>220)

gdal_calc.py -A ./hillshade.tmp.tif  --outfile=./color.tmp.tif \
   --calc="255*(A>220) + 1*(A<=220)"
# gdal_calc.py -A ./hillshade.tmp.tif  --outfile=./opacity_crop.tmp.tif \
#  --calc="  1*(A>220) +(256-A)*(A<=220)".
# gdalbuildvrt -separate ./final.vrt ./color.tmp.tif ./opacity_crop.tif
# gdal_translate -co COMPRESS=LZW -co ALPHA=YES ./final.vrt ./final.tif

# 3, color.tif # 2, opacity.tif (फसली) # 3, अंतिम

यह परिणाम मजबूत छाया दिखाता है

परिणाम

मैदान के पूर्व ग्रे क्षेत्रों को हटाने और अवांछित लेकिन सर्वव्यापी ग्रेइंग-लुप्त होती प्रभाव को हटाने के लिए तत्काल उद्देश्य के लिए एक पारदर्शी पहाड़ी बनाएं । अंतिम दृश्य उत्पाद पर बढ़ा हुआ बायप्रोडक्ट एक नियंत्रित नियंत्रण है। वर्णित प्रक्रिया सबसे ग्रे और सभी सफेद पिक्सेल को हटा देती है। पारदर्शी-से-काली पहाड़ियों द्वारा ओवरले होने पर रंगीन पृष्ठभूमि की सादे छवि अपने चुने हुए रंगों को बनाए रखेगी, केवल छाया वाले क्षेत्रों को गहरा किया जाएगा। नीचे # 2 (बाएं) और # 3 (दाएं) प्रक्रिया की तुलना।

अवलोकन :

प्रक्रिया की तुलना # 2 (बाएं) और # 3 (दाएं), सामान्य दृश्य।

ज़ूम करें, कृपया छाया पर ध्यान दें (पहले बनाम बाद में):

प्रक्रिया की तुलना # 2 (बाएं) और # 3 (दाएं), विवरण देखें।

आगे के अनुकूलन

सफेद क्षेत्र : 3 डी के एहसास को बढ़ाने के लिए सबसे प्रबुद्ध क्षेत्रों को रखने की इच्छा भी हो सकती है। यह वास्तव में मामूली दहलीज परिवर्तनों के साथ इस वर्तमान दृष्टिकोण का सममित होगा, फिर दोनों आउटपुटों का मर्ज gdal_calc के माध्यम से होगा। यह मैदान 100% पारदर्शी, सबसे गहरा छाया और सबसे हल्का प्रबुद्ध क्षेत्र अपारदर्शी होगा।

चौरसाई: एक बेहतर अंतिम परिणाम प्राप्त करने के लिए इनपुट पहाड़ियों को पूर्व- चौरसाई किया जा सकता है, GRASS का उपयोग करते हुए चौरसाई डेम देखें ?

समग्र पहाडी ( समग्र पहाडी कैसे बनाये? )।

ऊबड़ खाबड़ पहाड़ियों के रूप में दिलचस्प है ( विवरण )

टिप्पणियाँ

  • फ्लैट क्षेत्र सीमा में gdal hillshadeउत्पादन समतल क्षेत्रों अंकन px = 221 (#DDDDDD = [221,221,221]) है। इसके अलावा, हिलशेड का px = 221 इन-शैडो स्लोप (A <221) और इन-लाइट स्लोप (A> 221) पिक्सल के बीच की छवियों को विभाजित करता है।
  • Px में एक प्रोसेसिंग थ्रेशोल्ड = [१20०-२२०] जैसा कि अच्छा साबित हुआ है, यह आंखों के ध्यान देने योग्य छाया के करीब १००% रहता है, जो खुद बमुश्किल राहत क्षेत्र के १५-३५% तक खड़े होते हैं।
  • फ़ाइलइज़ > संपीडन: अंतिम 1। # 1, # 2, # 3 से बाहर है ~ बिना संपीड़न के 1.3MB, फिर ~ 0.3-0.16MB संपीड़न के बाद, 80% की बचत!
  • Filesize> क्रॉपिंग: # 1 में .326KB से, फसल का रंग और अपारदर्शिता (# 2) 310kb पर मिलता है, काला रंग (# 3) 160kb पर मिलता है। फ़ाइलें पर प्रभाव फसल के बीच 5 ~ 50% की कमी के बीच है px = 220 और मेरे इनपुट पर सीमा।

2
+1 स्वागत को प्रोत्साहित करना।
हगोलपेज़

2
ट्यूटोरियल समाप्त हो गया। मेरी अंग्रेजी टूट सकती है, बेहिचक सुधार कर सकते हैं।
हुगोलपज़

3
जब आपको अपने आप को जवाब देना होता है तो यह थ्रेड एक उत्कृष्ट ट्यूटोरियल होता है, जो पहाड़ियों के बारे में बहुत सारे सवालों को छूता है। बहुत बढ़िया!
केर्स्टन

आपका ट्यूटोरियल सिर्फ काम है। अच्छा कार्य। क्या आप कृपया मेरे प्रश्न के उत्तर पर विचार कर सकते हैं => यहाँ ? क्या इस तरह का जियोफाईट बनाना संभव है। अल्फा बैंड के साथ ग्रेस्केल?
सैंडथॉर्न

1
नमस्कार @sandthorn, इसके लिए मेरे प्यार के बावजूद मैं इस क्षेत्र में नहीं हूँ। उत्तर खोजने की लागत मेरे -2018 की तुलना में 2018 के लिए अधिक होगी। आशा है कि मेरा सामान आपके मुद्दे के लिए सही दिशा में ले जाएगा!
हुगोलपज़

7

अन्य परतों के साथ संयोजन के लिए अधिक उपयुक्त गैर-ग्रे कैनवास का एक ही परिणाम प्राप्त करने का एक और तरीका है, gdaldem में 'संयुक्त' विकल्प।

यह एक ढलान और पहाड़ी छाया करता है और दोनों को एक ऑपरेशन में जोड़ता है। 0 ढलान के क्षेत्र सफेद हैं। 90 डिग्री ढलान के क्षेत्र ढलान छाया के लिए काले होते हैं, जिसमें पहाड़ी परत द्वारा कुछ रोशनी जोड़ी जाती है।

gdaldem hillshade -combined -compute_edges infile outfile.tif

फिर अन्य परतों पर इसे 'ड्रेप' करने के लिए एक बहु परत कंपोजिंग मोड का उपयोग करें।

स्टैंडर्ड / कंबाइंड हिल्सडिंग

मानक हिल्सडिंग

OSM बेस लेयर के साथ संयुक्त शेडिंग गुणा (लगभग 50%) OSM बेस लेयर के साथ संयुक्त शेडिंग गुणा


2

gdal+ convertआधारित वर्कफ़्लो

एक gdal+ convertसमाधान है जो अच्छे दृश्य परिणाम देता है। इस समाधान के साथ परेशानी यह है कि convertभौगोलिक संकेत को नष्ट कर देता है जिसे आपको फिर से बहाल करना होगा। यह चलाने के लिए कार्रवाई की संख्या बढ़ाता है।

# Basic crop
gdal_translate -projwin 67 35.92 99 5 ../data/noaa/ETOPO1_Ice_g_geotiff.tif crop_xl.tmp.tif
# Grey-based hillshade
gdaldem hillshade crop_xl.tmp.tif shadedrelief.tmp.tif -s 111120 -z 5 -az 315 -alt 60 -compute_edges
# create a transparent hillshade:
convert shadedrelief.tmp.tif -fuzz 7% -fill "#FFFFFF" -opaque "#DDDDDD"  whited.jpg # makes all grey values white to lighten the filesize
convert whited.jpg -alpha copy -channel alpha -negate +channel trans.png # <=== TRICK HERE.
# Restore georeferencing & reproject            
gdal_translate -a_ullr 67 35.92 99 5 trans.png trans.tmp.gis.tif
gdalwarp -s_srs EPSG:4326 -t_srs ESPG:3857 ./trans.tmp.gis.tif ./trans_reproj.tmp.gis.tif
# Compress from 11MB to 2MB:
gdal_translate -co COMPRESS=LZW -co ALPHA=YES ./trans_reproj.tmp.gis.tif ./trans.gis.tif

कमांड 4 स्पष्टीकरण के लिए, देखें: https://stackoverflow.com/a/23018544/1974961

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