[英]How to set proper projection for raster?
我正試圖繪制天氣雷達的降雨數據。 數據文件是900x900點矩陣(900x900km)。 來自原始cappi文件的投影信息:
<projection lat_lr="48.133400" lat_ul="56.186500" type="aeqd" lon_lr="25.157600" size_x="900" size_y="900" lon_ul="11.812900">
<lon_0>19.092600</lon_0>
<lat_0>52.346800</lat_0>
<ellps>+ellps=sphere</ellps>
</projection>
我正在讀取數據文件(例如: https : //meteomodel.pl/examples/out.txt )到矩陣,並轉換為柵格:
a1 = as.matrix(read.table("/home/user/out.txt", header=F, as.is=TRUE))
a1[a1==0] <- NA
maxDBz <- 95.5
minDBz <- -31.5
step <- (maxDBz - minDBz) / 254
a1 <- minDBz + (a1 * step)
r <- raster(a1)
然后我試圖設置范圍和CRS:
e <- extent(11.812900, 25.157600, 48.133400, 56.186500)
r <- setExtent(r, e)
crs(r) <- "+proj=aeqd +lat_0=52.346800 +lon_0=19.092600 +x_0=900 +y_0=900 +ellps=sphere +datum=WGS84 +units=km +no_defs"
繪制數據,但投影不正確:
https://meteomodel.pl/examples/Rplot01.png
來自波蘭氣象和水管理研究所的正確圖像:
https://meteomodel.pl/examples/cappi.png
我究竟做錯了什么?
你做錯了是使用lon / lat crs設置范圍,而數據有"+proj=aeqd
。這些需要匹配。我不知道正確的范圍是什么,但你可以像這樣近似:
p <- "+proj=aeqd +lat_0=52.346800 +lon_0=19.092600 +x_0=900 +y_0=900 +ellps=sphere +datum=WGS84 +units=km +no_defs"
e <- extent(11.812900, 25.157600, 48.133400, 56.186500)
r <- raster()
extent(r) <- e
rr <- projectExtent(r, p)
extent(rr)
#class : Extent
#xmin : -541.0182
#xmax : 452.2122
#ymin : -488.8849
#ymax : 431.1854
提供的txt文件表示您想要的范圍
e <- extent(-449997.470, 451000.522, -451003.637, 449998.274)
這表明你的單位中的單位應該是m
而不是km
p <- "+proj=aeqd +lat_0=52.346800 +lon_0=19.092600 +x_0=900 +y_0=900 +ellps=sphere +units=m "
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.