首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为栅格设置合适的投影?

如何为栅格设置合适的投影?
EN

Stack Overflow用户
提问于 2019-05-23 00:01:10
回答 1查看 40关注 0票数 0

我在尝试绘制天气雷达的降雨量数据。数据文件为900x900点矩阵(900x900 is )。来自原始cappi文件的投影信息:

代码语言:javascript
复制
<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 )到矩阵,并转换为栅格:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-23 00:42:40

您正在做的错误是使用经度/纬度crs设置范围,而数据具有"+proj=aeqd。这些需要匹配。我不知道正确的范围是什么,但您可以这样近似:

代码语言:javascript
复制
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文件建议您想要的范围是

代码语言:javascript
复制
e <- extent(-449997.470, 451000.522, -451003.637, 449998.274) 

这表明您的crs中的单元应该是m,而不是km

代码语言:javascript
复制
p <- "+proj=aeqd +lat_0=52.346800 +lon_0=19.092600 +x_0=900 +y_0=900 +ellps=sphere +units=m "
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56260877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档