ArcGIS计算多个面要素范围内栅格数据各数值的面积

  本文介绍在ArcMap软件中,基于面积制表工具(也就是Tabulate Area工具),基于1面要素数据集1栅格数据,计算每一个面要素中各栅格数据分布面积的方法。

  首先,来看一下本文的需求。现有一个矢量面要素集,其由多个椭圆形的面图层组成;同时还有一个栅格数据底图,其表示不同的地物类型。如下图所示,黄色的圆形就是要素数据集,而其下方红色、粉色、蓝色等区域就是栅格数据。

  我们现在希望,对于要素数据集中的每一个面要素(也就是上图中的每一个椭圆形),计算其中不同地物类型各自的面积。

  接下来,就可以开始操作。首先需要注意,如果需要求取面积,那么需要保证图层的坐标系是投影坐标系,如下图所示。如果不是的话,可以参考文章ArcGIS矢量图层投影与地理坐标系转为投影坐标系——ArcMap(https://blog.csdn.net/zhebushibiaoshifu/article/details/115216717)中的方法,将地理坐标系转为投影坐标系

  接下来,依次选择“Spatial Analyst Tools.tbx”→“Zonal”→“Tabulate Area”工具,如下图所示。

  接下来,配置工具的参数,如下图所示。其中,第一个参数就是矢量面要素,第三个参数则是栅格文件数据;第二个参数需要注意,这个是用来指定——究竟要以哪个字段来确定要素的分组的;这里按照大家的实际情况来选择即可。但是,对于第二个参数需要注意,如果这个参数选择的是一个均为汉字的字段,后期分组时只保留字段的前3个汉字,这就需要保证我们每一个要素的这个字段的前3个字不能有一样的。所以如果大家是希望让每一个要素单独为一组,那么就直接选择其FID字段就可以——因为这个字段是ArcMap软件自动生成的,有点类似数据库中的主键,其可以保证每一个要素的这个数值都不重复。

  执行上述工具,我们将得到1张结果表,如下图所示。通过在其名称上方右键的方式,可以选择“Open”将其打开。

  其中,得到的结果如上图所示。可以看到,标黄的那一列就是我这里作为分组依据的那一列(也就是前述第二个参数);其后的4列,也就是VALUE_10VALUE_30等这4列,就是我这里栅格数据中的4种地物类型,这4列的数值就是——这种地物类型,在对应的椭圆形面要素中的面积。

  至此,大功告成。

欢迎关注:疯狂学习GIS

### 将栅格数据转换为点要素并获取值 在GIS软件中,将栅格数据转换为点要素的过程通常涉及两个主要步骤:一是将栅格像元中心转换成点要素;二是提取这些点对应的栅格属性值。以下是具体的操作方法: #### 使用ArcGIS实现栅格转点及赋值 利用ArcGIS中的工具可以高效完成这一过程。首先,在ArcToolbox里找到“转换工具”下的“栅格转点”,该工具能够把输入的栅格文件转化为由各像元中心构成的一组点要素[^1]。 ```python import arcpy from arcpy import env # 设置工作空间 env.workspace = "C:/data" # 输入栅格路径 in_raster = "elevation.tif" # 输出点要素类路径 out_point_features = "raster_to_points.shp" arcpy.conversion.RasterToPoint(in_raster, out_point_features) ``` 接着为了给新创建出来的点要素赋予来自原栅格数值信息,则需调用“提取多值至点”命令[^4]。 ```python # 定义要从中提取值的栅格列表 rasters_list = ["dem", "slope"] for raster in rasters_list: # 执行Extract Multi Values To Points arcpy.sa.ExtractMultiValuesToPoints(out_point_features, [[raster, raster]]) ``` 上述脚本展示了如何自动化批量处理多个栅格图层的情况,对于单个栅格而言只需调整`rasters_list`变量即可适应需求。 #### 利用Google Earth Engine执行相同任务 除了桌端的应用程序外,云服务平台如Google Earth Engine也支持此类操作。下给出了一段JavaScript代码片段用于说明怎样在线地实施从栅格矢量(即点集合)的变化,并读取相应的位置处的地表温度值[^3]。 ```javascript // 加载Landsat8表反射率产品作为示例栅格数据集 var image = ee.Image('LANDSAT/LC08/C01/T1_SR/LC08_044034_20140318'); // 创建一个随机分布于研究区内的采样点几何对象数组 var points = ee.FeatureCollection.randomPoints({ region: image.geometry(), points: 50, }); // 提取每个点位上的NDVI指数 var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI'); points = points.map(function(feature){ var value = ndvi.reduceRegion({reducer:ee.Reducer.first(), geometry:feature.geometry()}); return feature.set(value); }); ``` 这段代码先定义了一个基于 Landsat 8 影像计算得到 NDVI 的表达式,随后选取若干离散地点作为样本,最后遍历所有特征项并将它们关联起来形成带有属性字段的新实体。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯狂学习GIS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值