在使用google earth engine導(dǎo)出圖像時,遇到輸出圖像全黑且數(shù)值為零的問題,通常是由于`export.image.todrive`函數(shù)中`region`參數(shù)設(shè)置不當(dāng),導(dǎo)致僅導(dǎo)出了單個像素,或因gis軟件默認(rèn)可視化設(shè)置無法正確拉伸單像素值所致。本文將深入探討這一常見問題,并提供詳細(xì)的解決方案和最佳實(shí)踐,確保您能夠成功導(dǎo)出并可視化處理結(jié)果。
在使用Google Earth Engine (GEE) 進(jìn)行遙感數(shù)據(jù)處理后,用戶常會將處理結(jié)果導(dǎo)出到Google Drive或Google Cloud Storage。然而,有時導(dǎo)出的GeoTIFF圖像在ArcGIS、QGIS等GIS軟件中打開時,卻顯示為全黑,并且檢查像素值發(fā)現(xiàn)全部為零。這通常不是數(shù)據(jù)處理錯誤,而是導(dǎo)出參數(shù)配置不當(dāng)或后續(xù)可視化操作不當(dāng)引起的。
region參數(shù)設(shè)置不當(dāng): 這是最常見的原因。在Export.image.toDrive函數(shù)中,region參數(shù)定義了要導(dǎo)出圖像的地理范圍。如果將region設(shè)置為一個單一的ee.Geometry.Point對象,GEE只會導(dǎo)出該點(diǎn)所在的單個像素。
可視化拉伸問題: 即使導(dǎo)出了正確的區(qū)域,如果數(shù)據(jù)的動態(tài)范圍很小或者值集中在某個特定區(qū)間,GIS軟件的默認(rèn)拉伸方式(如Min-Max拉伸)可能無法有效顯示圖像細(xì)節(jié),導(dǎo)致圖像看起來很暗甚至全黑。對于浮點(diǎn)型數(shù)據(jù),尤其需要注意。
解決此問題的關(guān)鍵在于正確配置Export.image.toDrive函數(shù)的region參數(shù),并理解GIS軟件中的可視化設(shè)置。
確保region參數(shù)定義了一個有意義的地理區(qū)域,而不是一個單一的點(diǎn)。
使用輸入圖像的幾何范圍: 如果您希望導(dǎo)出整個輸入圖像或處理結(jié)果的范圍,可以使用圖像本身的幾何范圍作為導(dǎo)出區(qū)域。
Export.image.toDrive({ image: constrained, // 待導(dǎo)出的圖像 description: 'unmix_result', // 導(dǎo)出任務(wù)描述 scale: 30, // 導(dǎo)出分辨率,例如Landsat為30米 region: image.geometry(), // 使用原始輸入圖像的幾何范圍 maxPixels: 1e9, // 最大像素?cái)?shù),避免導(dǎo)出任務(wù)因像素過多而失敗 fileFormat: 'GeoTIFF' // 文件格式 });
在上述代碼中,image.geometry()會獲取用于分析的原始影像的邊界框,從而導(dǎo)出整個影像區(qū)域。
使用自定義的感興趣區(qū)域 (AOI): 如果您只想導(dǎo)出特定區(qū)域,應(yīng)定義一個多邊形(ee.Geometry.Polygon)或特征集合(ee.FeatureCollection)作為region。
// 假設(shè)您已經(jīng)定義了一個名為 'aoi' 的多邊形幾何對象 var aoi = ee.Geometry.Polygon([ [[-122.41, 37.77], [-122.41, 37.78], [-122.42, 37.78], [-122.42, 37.77]] ]); Export.image.toDrive({ image: constrained, description: 'unmix_aoi_result', scale: 30, region: aoi, // 使用自定義AOI maxPixels: 1e9, fileFormat: 'GeoTIFF' });
使用當(dāng)前地圖視圖的邊界: 在交互式開發(fā)中,有時您可能想導(dǎo)出當(dāng)前地圖視窗內(nèi)的數(shù)據(jù)。
Export.image.toDrive({ image: constrained, description: 'unmix_map_view', scale: 30, region: Map.getBounds(true), // 導(dǎo)出當(dāng)前地圖視圖的邊界 maxPixels: 1e9, fileFormat: 'GeoTIFF' });
scale參數(shù)定義了導(dǎo)出圖像的像素分辨率(以米為單位)。
針對原問題中region: point導(dǎo)致的問題,修正后的導(dǎo)出代碼如下:
// ... (之前的圖像處理和解混代碼) ... // Constrained: constraining the result to be non-negative and sum to one. var constrained = image.unmix([bareMean, vegMean, waterMean, snowMean], true, true); Map.addLayer(constrained, {}, 'constrained fractions'); // Export output to Google Drive Export.image.toDrive({ image: constrained, description: 'unmix_result_corrected', // 更改描述以區(qū)分 scale: 30, // 建議使用原始數(shù)據(jù)分辨率,如30米 region: image.geometry(), // 關(guān)鍵修正:使用原始圖像的幾何范圍 maxPixels: 1e9, fileFormat: 'GeoTIFF' });
在上述修正中,我們將region從point改為了image.geometry(),這將確保導(dǎo)出的是整個處理后的圖像區(qū)域,而不是單個像素。同時,將scale調(diào)整為30,以保持Landsat數(shù)據(jù)的原始分辨率。
即使導(dǎo)出了正確的圖像,在GIS軟件中打開時仍可能需要手動調(diào)整顯示設(shè)置:
當(dāng)Google Earth Engine導(dǎo)出的圖像顯示為全黑或零值時,首要排查的是Export.image.toDrive函數(shù)中region參數(shù)的設(shè)置。確保region定義了一個合適的地理范圍(例如,image.geometry()或自定義的AOI),而不是一個單一的像素點(diǎn)。同時,注意scale參數(shù)的設(shè)置,并在GIS軟件中通過調(diào)整可視化拉伸方式和調(diào)色板來正確顯示導(dǎo)出的數(shù)據(jù)。通過這些步驟,您將能夠有效地導(dǎo)出并可視化GEE處理結(jié)果。
以上就是Google Earth Engine導(dǎo)出圖像全黑與零值問題的解析與解決方案的詳細(xì)內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!
每個人都需要一臺速度更快、更穩(wěn)定的 PC。隨著時間的推移,垃圾文件、舊注冊表數(shù)據(jù)和不必要的后臺進(jìn)程會占用資源并降低性能。幸運(yùn)的是,許多工具可以讓 Windows 保持平穩(wěn)運(yùn)行。
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號