天天看点

ArcGIS中任意选点获取栅格点的行列号

本人在arcgis中从栅格影像中任意选取代表点,但是只能得到点的地理坐标(单位:米)。而代入MATLAB获得该点信息必须要得到该点的行列号。几经周折,终于得到一毕业学长的提示,找到MATLAB中自带的函数map2pix解决问题。现提供代码如下,仅供各位参考:

%程序用于将arcgis中选点的地理坐标x,y转化为栅格影像数据的行列值

clc,clear all;

%读取影像坐标信息

path1='C:\Users\hongLiang\Desktop\graph Of the Paper\tvdi - Band_1021.tfw';

R = worldfileread(path1);

%输入代表点的地理坐标信息

xArr=[337534.037000,418849.340000,293550.789000,434961.890000,250309.658000,579420.669000,376670.474000,489423.750000,...

 348525.157000,271670.394000,278450.893000,395062.633000,295934.056000,295934.056000,456791.070000,414319.629000];

yArr=[3149544.901000,3135776.099000,2800939.887000,3261782.986000,3179205.782000,3191586.340000,2967300.524000,...

 3197098.577000,2861594.128000,2760617.994000,2737525.636000,3170668.673000,3079553.702000,3079553.702000,3150314.340000,3231377.910000];

len=length(xArr);

for i=1:len

    %用map2pix函数得到坐标点的行列值,但是得到的有负值,此处可以取个绝对值

    [row,col] = map2pix(R,xArr(i),yArr(i));

    %取绝对值

    row=abs(row);col=abs(col);

    %取整

    row=round(row);col=round(col);

    Col(i)=col;

    Row(i)=row;

end

继续阅读