簡體   English   中英

將HDF轉換為地理參考文件(geotiff,shapefile)

[英]Converting HDF to georeferenced file (geotiff, shapefile)

我正在處理有關海洋主要生產力的28個HDF4文件(可以在此處找到年度.tar文件: http : //orca.science.oregonstate.edu/1080.by.2160.monthly.hdf.cbpm2.v.php )目標是進行一些計算(我需要計算每個區域的濃度並獲得幾年的平均值,即在空間上合並所有文件),然后將它們轉換為可以在ArcGIS中使用的地理參考文件(最好是shapefile或geotiff)。

我嘗試了幾種轉換為ASCII或光柵文件,然后使用gdalUtils工具(例如gdal_translateget_subdatasets添加投影的方法。 但是,由於HDF4文件未按標准命名(與MODIS文件不同),因此后者不起作用,並且我無法訪問這些子集。

這是我用來轉換為柵格的代碼:

library(raster)
library(gdalUtils)

setwd("...path_to_files...")

gdalinfo("cbpm.2015060.hdf")
hdf_file <- "cbpm.2015060.hdf"

outfile="testout"
gdal_translate(hdf_file,outfile,sds=TRUE,verbose=TRUE)
file.rename(outfile,paste("CBPM_test",".tif",sep="")) 

rast <- raster("CBPM_test.tif")

wgs1984 <- CRS("+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0")
projection(rast) <- wgs1984
#crs(rast) <- "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0" 

plot(rast)

writeRaster(rast, file="CBPM_geo.tif", format='GTiff', overwrite=TRUE)

產生的投影完全關閉。 我非常感謝您提供幫助(最好是批量處理)如何做到這一點(通過任何有效的格式進行轉換)。

您尚未設置柵格的范圍,因此假設柵格的比例為1:ncols,1:nrows,這對緯度較長的數據集來說是不合適的...

gdalinfo表示其意圖是成為一個完整的領域,因此,如果我這樣做:

 extent(rast)=c(xmn=-180, xmx=180, ymn=-90, ymx=90)
 plot(rast)
 writeRaster(rast, "output.tif")

我看到的柵格具有完整的全球緯度-緯度范圍,當我將柵格加載到QGIS中時,它會與OpenStreetMap很好地覆蓋。

文件中似乎沒有足夠的元數據來進行精確的投影(地球半徑和偏心率是多少?),所以不要嘗試對這些數據進行小規模的處理...

外觀如下:

在此處輸入圖片說明

另外,您已經跳過了一些不必要的內容以閱讀本文。 您可以直接閱讀HDF並設置其范圍和投影:

> r = raster("./cbpm.2017001.hdf")

我們得到什么:

> r
class       : RasterLayer 
dimensions  : 1080, 2160, 2332800  (nrow, ncol, ncell)
resolution  : 1, 1  (x, y)
extent      : 0, 2160, 0, 1080  (xmin, xmax, ymin, ymax)
coord. ref. : NA 
data source : /home/rowlings/Downloads/HDF/cbpm.2017001.hdf 
names       : cbpm.2017001 

設定范圍:

> extent(r)=c(xmn=-180, xmx=180, ymn=-90, ymx=90)

和投影:

> projection(r)="+init=epsg:4326"

土地價值為NA:

> r[r==-9999]=NA

編寫,繪制:

> writeRaster(r,"r.tif")
> plot(r)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM