我导入进入的DEM,然后读取了一个info,我通过map2pix函数,转换不对正确的行列号,有负值,我用pix2map转换回来,反而还是对的
5条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
在MATLAB中,如果你正在处理地理数据并尝试将地理坐标转换为图像的行、列索引,可能会遇到一些挑战,特别是在边界条件和投影方式上。你提到使用了
map2pix
函数,这可能来自GIS工具箱中的某个版本。不过,从MATLAB R2014b开始,推荐使用geotransform
和worldToPixel
函数来进行这样的转换。首先,确保你的DEM(数字高程模型)数据集和info文件包含了必要的地理信息。这些信息通常包含在
.img
、.tif
等文件的元数据中,或者在一个单独的.tfw
文件中。下面是一个详细的步骤指南,以及如何使用MATLAB进行转换:
- 读取DEM数据和相关信息:
% 读取DEM数据(例如一个TIFF文件) dem = imread('your_dem_file.tif'); % 如果DEM数据没有地理信息,你需要从外部源获取地理信息矩阵(例如从 .tfw 文件) % info = geotiffinfo('your_info_file.tfw'); % 或者,如果dem本身包含地理信息,则可以直接从dem对象提取 info = iminfo(dem); % 提取必要的地理变换参数 geoTransform = info.GeoTransform;
- 定义你的地理坐标点:
% 假设你有一个经纬度坐标点列表(经度,纬度) latLonPoints = [lat1, lon1; lat2, lon2; ...];
- 使用
geotransform
和worldToPixel
进行转换:
% 将地理坐标转换为像素坐标 [rows, cols] = worldToPixel(geoTransform, latLonPoints(:,2), latLonPoints(:,1));
注意:在上述代码中,
worldToPixel
函数的第一个参数是地理变换矩阵,它由六个元素组成,表示地图坐标的偏移量、尺度因子和旋转角度。第二和第三个参数分别是经度和纬度的向量。返回的是对应的行和列索引。如果你仍然遇到负值或其他问题,可能是由于地理变换矩阵的设置不正确,或者是输入的经纬度坐标超出了图像范围。检查你的地理信息是否准确,并确认输入的经纬度是在DEM覆盖范围内。
另外,如果使用
pix2map
后结果正确,那么可能是因为原始的map2pix
计算存在错误,或者输入的坐标格式不匹配。使用MATLAB官方提供的函数可以减少这类问题。请确保你的DEM数据和info文件都包含了正确的地理信息,这样转换结果才会准确。如果你仍然有问题,提供具体的错误信息或者详细的数据结构,我可以进一步协助解决。
解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 flask实现搜索框访问数据库
- ¥15 mrk3399刷完安卓11后投屏调试只能显示一个设备
- ¥20 白日门传奇少一个启动区服和启动服务器的快捷键,东西都是全的 , 他们说套一个出来就行了 但我就是弄不好,谁看看,
- ¥100 如何用js写一个游戏云存档
- ¥15 ansys fluent计算闪退
- ¥15 有关wireshark抓包的问题
- ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
- ¥15 向数据表用newid方式插入GUID问题
- ¥15 multisim电路设计
- ¥20 用keil,写代码解决两个问题,用库函数