利用ArcGIS创建随机点并将对应栅格的像元值输出

本文介绍了一种从栅格数据中提取像元值的方法,包括生成随机点、按点提取像元值以及将结果输出为表格的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求:以随机点的形式将栅格数据的像元值提取至点,并将点要素数据输出成表格的形式。

操作步骤:

第一步:生成随机点。根据以下顺序找到创建随机点工具。

Data management(数据管理)工具—>Feature Class(要素类)—>Create random point(创建随机点)

Ps…此步骤需要注意的是将随机点生成的范围确定好,可以通过上述标记的通图层数据或者是面要素数据。例,以面要素数据作为限制范围,将最小距离设置为30m并输出500个随机点,得到以下结果。

  第二步:按照点位提取像元值。

Spatial Analyst Tools(空间分析工具)—>Etraction(提取工具)—>Extract values by points(按点提取值)—— 在栅格只为单波段时使用

Ps….这一步需要注意,这个工具Extract values by points只能提取单波段的像元值,输入多波段栅格进去,只会提取band1的值。

如果要一次性提取多波段的栅格数据,需要将每个波段输出,使用以下工具提取多个栅格的像元值。

Spatial Analyst Tools(空间分析工具)—>Etraction(提取工具)—> Extract Multi Values to Points(按点提取多个值)

Ps….这一步需要注意,该步骤并不会生成新的点要素,而是将提取的值直接链接在原始输入点要素的属性表上,所以注意备份原始的点要素。

第三步:将属性表另存为表格。

右键打开属性表,点击属性表下拉菜单—>Export Data 导出数据—>存储格式选择记事本(.txt)保存,之后再在表格里处理数据即可。

### 将栅格数据转换为要素获取值 在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 的表达式,随后选取若干离散地作为样本,最后遍历所有特征项将它们关联起来形成带有属性字段的新实体。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值