如何在C++中提取GeoTIFF指定(x,y)坐标处的数据?
单图层GeoTIFF指定坐标值提取的C++最小工作流程需求
我是一名R用户,对C并不熟悉。需要一套C工作流程,用于获取单图层GeoTIFF中指定(x,y)坐标处的值。该GeoTIFF的图层为二维数组,每个单元存储FLT4S类型的浮点数,代表特定位置的海床深度,坐标参考系统为通用横轴墨卡托(UTM),单位为米。
R中的实现示例
library(terra) # 加载GeoTIFF # * 这是苏格兰西海岸外的海床深度图 f <- "path/to/dat_gebco.tif" (r <- terra::rast(f))
class : SpatRaster
dimensions : 264, 190, 1 (nrow, ncol, nlyr)
resolution : 100, 100 (x, y)
extent : 695492.1, 714492.1, 6246657, 6273057 (xmin, xmax, ymin, ymax)
coord. ref. : WGS 84 / UTM zone 29N (EPSG:32629)
source : dat_gebco.tif
name : map_value
min value : 0.1994156
max value : 201.8856354
# 提取指定(x, y)处的深度值 # (坐标单位为米,与GeoTIFF一致) terra::extract(r, cbind(707087.7, 6266045))
map_value
1 191.285
我知道terra底层基于C实现,terra::extract()最终会调用SpatRaster::extract*()系列C函数,但我无法梳理出实现上述功能的最小工作流程。需要说明的是,我的场景中坐标对与GeoTIFF(UTM投影)的单位均为米,这可能会简化代码实现。
内容的提问来源于stack exchange,提问作者Edward Lavender
相关产品推荐
相关产品推荐

