真的狗398 2024-04-22 00:04 采纳率: 0%
浏览 13

关于matlab通过地理参数R,把地理坐标转换成行列号

我导入进入的DEM,然后读取了一个info,我通过map2pix函数,转换不对正确的行列号,有负值,我用pix2map转换回来,反而还是对的

  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-22 00:04
    关注

    引自免费微信小程序:皆我百晓生

    在MATLAB中,如果你正在处理地理数据并尝试将地理坐标转换为图像的行、列索引,可能会遇到一些挑战,特别是在边界条件和投影方式上。你提到使用了map2pix函数,这可能来自GIS工具箱中的某个版本。不过,从MATLAB R2014b开始,推荐使用geotransformworldToPixel函数来进行这样的转换。

    首先,确保你的DEM(数字高程模型)数据集和info文件包含了必要的地理信息。这些信息通常包含在.img.tif等文件的元数据中,或者在一个单独的 .tfw 文件中。

    下面是一个详细的步骤指南,以及如何使用MATLAB进行转换:

    1. 读取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;
    
    1. 定义你的地理坐标点:
    % 假设你有一个经纬度坐标点列表(经度,纬度)
    latLonPoints = [lat1, lon1; lat2, lon2; ...];
    
    1. 使用geotransformworldToPixel进行转换:
    % 将地理坐标转换为像素坐标
    [rows, cols] = worldToPixel(geoTransform, latLonPoints(:,2), latLonPoints(:,1));
    

    注意:在上述代码中,worldToPixel函数的第一个参数是地理变换矩阵,它由六个元素组成,表示地图坐标的偏移量、尺度因子和旋转角度。第二和第三个参数分别是经度和纬度的向量。返回的是对应的行和列索引。

    如果你仍然遇到负值或其他问题,可能是由于地理变换矩阵的设置不正确,或者是输入的经纬度坐标超出了图像范围。检查你的地理信息是否准确,并确认输入的经纬度是在DEM覆盖范围内。

    另外,如果使用pix2map后结果正确,那么可能是因为原始的map2pix计算存在错误,或者输入的坐标格式不匹配。使用MATLAB官方提供的函数可以减少这类问题。

    请确保你的DEM数据和info文件都包含了正确的地理信息,这样转换结果才会准确。如果你仍然有问题,提供具体的错误信息或者详细的数据结构,我可以进一步协助解决。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月22日

悬赏问题

  • ¥15 flask实现搜索框访问数据库
  • ¥15 mrk3399刷完安卓11后投屏调试只能显示一个设备
  • ¥20 白日门传奇少一个启动区服和启动服务器的快捷键,东西都是全的 , 他们说套一个出来就行了 但我就是弄不好,谁看看,
  • ¥100 如何用js写一个游戏云存档
  • ¥15 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题
  • ¥15 multisim电路设计
  • ¥20 用keil,写代码解决两个问题,用库函数