首页 > 其他分享 >ArcGIS计算某个点落在遥感影像中的行数与列数

ArcGIS计算某个点落在遥感影像中的行数与列数

时间:2023-09-05 22:02:11浏览次数:38  
标签:要素 栅格 含有 图像 ArcGIS 点落 列数 图层 坐标系

  本文介绍在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软件当前坐标下的XY值。

  接下来,我们即可开始计算。这里有两种方法,一种是在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列分别为刚刚我们为点要素图层新建的两个字段XYJ列与K列分别为两个公式计算得到的结果。大家对照着下图与上方两张图来看应该会更加清楚。

  随后,上述第一个公式计算得到的就是点要素在栅格图像中的列号,第二个公式得到的就是点要素的行号

  至此,大功告成。

标签:要素,栅格,含有,图像,ArcGIS,点落,列数,图层,坐标系
From: https://blog.51cto.com/fkxxgis/7380280

相关文章

  • sqlserver中怎么将一列数据拼接成一个字符串
     SELECTb.name+','FROM dbo.TechnologyColorajoin[dbo].[CustomColor]b ona.customcolorid=b.id WHEREProductId=345882800324677FORxmlPATH('')SELECT需要合并的字段+','FROM表名FORXMLPATH(''......
  • Excel多列数据转为一行数据
    wps中filter+index+row+column+iferror函数组合使用 一、函数组合    在日常办公中,经常会使用到wps处理数据,在处理数据中会使用一些函数,可以事半功倍大大提高工作效率。  wps经典函数组合:filter+index+row+column+iferror  filter函数:可以返回多条数据  index......
  • ArcGIS for javascript 加载天地图瓦片
    ArcGISforjavascript(4.27)加载天地图瓦片importMapfrom"@arcgis/core/Map";importMapViewfrom'@arcgis/core/views/MapView';importWebTileLayerfrom'@arcgis/core/layers/WebTileLayer';constvecLayer=newWebTileLayer('ht......
  • ArcGIS Javascript sdk中API keys 的说明
    ArcGISJavascriptsdk中APIkeys的说明关于ArcGIS的APIkey具体使用ArcGIS有那些底图用到了APIkeys,那些没有用到可以参考下面表格,最新改动请参考官网BasemapsforusewithAPIkeysUseofthesebasemapsrequiresanArcGISDevelopersubscription.Tolearnmoreabout......
  • 如何在linux下快速查看一个文件的列数
     使用`awk`命令:```bashawk'{printNF;exit}'文件名```这个命令将打印文件的第一行的列数,并立即退出。如果只关心文件的第一行列数,这是一个快速的方法。使用`head`命令:```bashhead-n1文件名|awk'{printNF}'```这个命令将打印文件的第一行,并通过管道将其传递给......
  • R语言神经网络模型预测多元时间序列数据可视化|附代码数据
    全文链接:http://tecdat.cn/?p=32198最近我们被客户要求撰写关于神经网络的研究报告,包括一些图形和统计输出。多元时间序列建模一直是吸引了来自经济,金融和交通等各个领域的研究人员的主题 ( 点击文末“阅读原文”获取完整代码数据******** )。多元时间序列预测的一个基本假设......
  • ArcGIS安装包免费分享|附安装教程
    :::block-1DataAssassin全网同号,数据免费获取请关注公众号DataAssassin,如有问题请添加公众号联系作者。感谢您的关注。:::ArcGIS介绍ArcGIS是Esri公司开发的一款全面的系统,用户可用其来收集、组织、管理、分析、交流和发布地理信息。作为世界领先的地理信息系统(GIS)构......
  • ARIMA模型,ARIMAX模型预测冰淇淋消费时间序列数据|附代码数据
    全文下载链接:http://tecdat.cn/?p=22511最近我们被客户要求撰写关于ARIMAX的研究报告,包括一些图形和统计输出。标准的ARIMA(移动平均自回归模型)模型允许只根据预测变量的过去值进行预测。该模型假定一个变量的未来的值线性地取决于其过去的值,以及过去(随机)影响的值。ARIMAX模型......
  • 2024年秋招赛码网刷题-判断奇偶数、读取未给出行列数的矩阵
    1defis_even(n):2return1ifn%2==0else034n=int(input())56result=is_even(n)7print(result)#最后一行不能用return因为return只能在函数内部使用。在顶层代码中用return不合法 ......
  • python语言学习-------------------------------------csv模块将有规律的分隔符去掉,转
    上代码:importcsvf=open("C:/Users/Administrator/Desktop/11.txt",'r')withf:reader=csv.reader(f,delimiter=",")forrowinreader:foreinrow:print(e)实现效果如下: G:\Python3.8解释器\python.exeC:/U......