本文介绍在ArcMap软件中,求取点要素在栅格图像中所处行号、列号的方法。
如下图所示,我们已知一张栅格图像以及其上的几个点要素;本文就以此数据为例,介绍获取点要素所处行列号的方法。
其中,本文所用的栅格图层与点要素图层都不含有任何地理参考信息。如下图所示,其为栅格图像的属性面板,这里“Spatial Reference”显示的是<Undefined>
,且“XY Coordinate System”显示的是Unknow
(如下图红色区域部分);且图像的空间范围是用四个没有任何单位、没有任何意义的数据表示(如下图绿色区域部分)。
如下图所示,其为点要素图层的属性面板;可以看到该图层同样不含任何地理参考信息,且图层的空间范围亦是用四个没有任何单位、没有任何意义的数据表示。
这里需要注意,如果大家的数据(栅格图像与点要素图层)含有地理参考信息(比如同时含有地理坐标系或同时含有投影坐标系),同样是可以求取点要素所处行列号的。但如果大家的数据是一个含有地理参考信息,一个不含有(比如栅格图像含有地理参考信息,而点要素图层不含有),那么需要首先对不含有地理参考信息的图层添加坐标系,保持两个图层坐标系一致,才可以进行下面的操作;同样,如果是两个图层一个含有投影坐标系,一个含有地理坐标系,那么也需要进行坐标系的统一才可以。简单来说,要么两个图层都没有任何坐标系,要么两个图层都有地理坐标系,要么两个图层都有投影坐标系,才可以进行后面的操作。
首先,我们在点要素图层名称处右键,选择“Open Attribute Table”选项。
接下来,在属性表左上方选择“Table Options”→“Add Field...”选项。
在弹出的“Add Field”窗口中,配置字段名称。这个字段是我们后期用来存放点要素在图像中的X
值,因此命名为X
类似的名称即可;字段类型为“Float”或“Double”,下面的精度可以配置也可以不配置。
再次执行同样的操作,建立第二个字段,后期存放点要素在图像中的Y
值。
配置完毕后,如下图所示。
随后,在刚刚建立的第一个字段名称处右键,选择“Calculate Geometry...”。
在弹出的“Calculate Geometry”窗口中,“Property”选择为“X Coordinate of Point”,不要选中最下方的“Calculate selected records only”勾选项(如果该项可选的话)。
对另一个字段执行同样的操作,但是“Property”选择为“Y Coordinate of Point”即可。
随后,可以看到这两个字段都已经有了具体的数值;这两个数值就表示每一个点在栅格图像中的位置。若要准确来说,这两个值其实是每一个点在ArcMap软件当前坐标下的X
、Y
值。
接下来,我们即可开始计算。这里有两种方法,一种是在ArcMap软件的字段计算器中直接计算,还有一种是将属性表导出后到Excel等软件中计算。这里因为我要对多个图像中的点要素进行计算,因此就选择用第二种方法。
首先,在属性表左上方选择“Table Options”→“Clear Selection”选项,确保我们导出数据时没有遗漏。
随后,在ArcMap软件选择“Toolboxes”→“System Toolboxes”→“Conversion Tools.tbx”→“Excel”→“Table To Excel”。
选择我们需要导出属性表的点要素,并配置输出路径与文件名称。
接下来,我们需要在ArcMap软件左侧的图层列表中,右键选择栅格影像图层,并选择“Properties...”进行查看。首先,需要记录一下栅格影像的像素大小,如下图所示。
随后,记录栅格影像的最顶处坐标值与最左侧坐标值;如下图所示。
随后,在Excel中分别用公式=INT(ABS((B$3-G3)/E$3)+1)
与=INT(ABS((C$3-H3)/E$3)+1)
来计算点要素所处的行列号。如下图所示,其中,B$3
表示我们刚刚记录的栅格图像最左侧坐标值(也就是-0.5
),C$3
表示栅格图像最顶处坐标值(也就是0.5
);E$3
表示栅格图像的像素大小(取一个边长即可,也就是1
);G
列与H
列分别为刚刚我们为点要素图层新建的两个字段X
与Y
,J
列与K
列分别为两个公式计算得到的结果。大家对照着下图与上方两张图来看应该会更加清楚。
随后,上述第一个公式计算得到的就是点要素在栅格图像中的列号,第二个公式得到的就是点要素的行号。