首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从x y UTM值中获取栅格矩阵中的正确列值和行值

从x y UTM值中获取栅格矩阵中的正确列值和行值
EN

Stack Overflow用户
提问于 2019-02-03 03:21:04
回答 1查看 188关注 0票数 2

我正在尝试使用rayshader包函数render_label呈现文本。

以WGS84 UTM表示的栅格:

代码语言:javascript
复制
localtif = raster::raster("G:\\My Drive\\Dem_12m.tif")

Link to download the raster.

标高矩阵:

代码语言:javascript
复制
elmat = matrix(raster::extract(localtif,raster::extent(localtif),buffer=1000),
               nrow=ncol(localtif),ncol=nrow(localtif))

我的rgl渲染:

代码语言:javascript
复制
elmat %>%
  sphere_shade(texture = "desert") %>%
  add_water(detect_water(elmat), color="desert") %>%
  add_shadow(ray_shade(elmat,zscale=3,maxsearch = 300),0.5) %>%
  add_shadow(ambmat,0.5) %>%
  plot_3d(elmat,zscale=10,fov=0,theta=135,zoom=0.75,phi=45, windowsize = c(1000,800))

从x和y获取行号和列号:

代码语言:javascript
复制
  xy<-rowColFromCell(localtif, extract(localtif,SpatialPoints(cbind( 678349.471, 9197957.733)), cellnumbers=TRUE)[1])

渲染文本:

代码语言:javascript
复制
  render_label(elmat,x=xy[2],y=xy[1], z=4000,zscale=50,
             text = "El Pico del Diablo",textsize = 10,linewidth = 5, freetype = F)

文本似乎出现在DEM模型中的错误位置。我得到了这些xy值:

代码语言:javascript
复制
> xy
     row col
[1,] 611 278 

使用试错法,我发现正确的值是row = 180和col = 278。我还收到以下警告:

代码语言:javascript
复制
Warning message:
In rgl.texts(x = 278L, y = 103.72, z = -611L, text = "El Pico del Diablo",  :
  "bitmap" family only supports cex = 1
EN

回答 1

Stack Overflow用户

发布于 2020-10-21 01:42:33

我也遇到了同样的问题,并找到了解决方案。

我对你的代码做了如下修改:

代码语言:javascript
复制
El_Pico_del_Diablo <- data.frame(lat= X.XX, long= -XX.XX) ###latitude and longitude in decimals. 

在我的例子中,我的经度位置是负的。

代码语言:javascript
复制
elmat %>%
  sphere_shade(texture = "desert") %>%
  add_water(detect_water(elmat), color="desert") %>%
  add_shadow(ray_shade(elmat,zscale=3,maxsearch = 300),0.5) %>%
  add_shadow(ambmat,0.5) %>%
  plot_3d(elmat,zscale=10,fov=0,theta=135,zoom=0.75,phi=45, windowsize = c(1000,800))

render_label(elmat, lat = El_Pico_del_Diablo$lat, long = El_Pico_del_Diablo$long,
             extent = attr(localtif, "extent"),
             altitude=100, zscale=10, text = "El Pico del Diablo",freetype=F, textsize = 5)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54496653

复制
相关文章

相似问题

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