我有大约50个马赛克数据集,有50个对应的点特征类。我的目标是将栅格单元值(抬高)附加到覆盖点。马赛克数据集全部来自单一波段光栅(仰角)。我一直在尝试在arcpy中迭代这个过程,但我得到了复杂的结果。我运行的是ArcGIS Desktop 10.6.1,所有的特征类和马赛克数据集都在同一个投影中。当我运行我的脚本时,我将得到我想要的前几次迭代的结果,但是其余的点特征类包含提取的值,这些值不存在于任何光栅中。
我不确定从马赛克数据集中提取值的最佳方法。一种似乎有效的方法是从马赛克数据集创建一个马赛克层。我一直在存储点特征类的相同地理数据库中创建马赛克层,然后运行提取。
进口arcpy从arcpy进口env进口操作系统#创建目录下所有文件夹的列表目录=“栅格和马赛克数据集文件夹的路径”文件夹=操作系统.listdir(目录)#创建点特性类列表env.工作空间=r“指向特征类的路径”文件=arcpy.ListFeatureClasses()point_path=“点特征类路径”#用于创建马赛克层arcpy.CheckOutExtension(“空间”)为我,j在邮政编码(文件夹,文件):in_workspace=我+“到每个地理数据库的路径”in_mosaic_dataset_name="镶嵌数据集名称"path_to_raster=in_workspace+in_mosaic_dataset_name outlayername=point_path+in_mosaic_dataset_name arcpy.MakeMosaicLayer_management(path_to_raster,outlayername)arcpy.sa.ExtractMultiValuesToPoints(j,outlayername)
我在ArcMap的python窗口和spyder中都运行过,在这两个实例中我都遇到了问题。前几次迭代工作正常,然后提取的栅格单元值不存在于任何栅格中。有没有更好的方法从马赛克数据集中提取栅格单元值?
干杯!
解决了!转到解决方案。
我想到了一个让它工作的方法。出于某种原因,我不知道为什么,如果你从一个马赛克数据集中运行ExtractMultiValuesToPoints,你最终会得到在栅格单元格中找不到的值。我仍然不确定这些值的来源。但是,如果您使用完全相同的数据再次运行它,您将得到所需的结果。我修改了上面的脚本,以便ExtractMultiValuesToPoints两次使用马赛克数据集。此外,我确定没有必要制作马赛克层,该工具仅从马赛克数据集工作。这个解决方案将在属性表中提供两个新列;一个是未知值,另一个是期望值。根据运行的文件数量,您可以手动删除每个表中的额外列,也可以修改脚本删除未知值的第一列。
进口arcpy从arcpy进口env进口操作系统#创建目录下所有文件夹的列表目录=“栅格和马赛克数据集文件夹的路径”文件夹=操作系统.listdir(目录)#创建点特性类列表env.工作空间=r“指向特征类的路径”文件=arcpy.ListFeatureClasses()#迭代点文件和马赛克数据集arcpy.CheckOutExtension(“空间”)为我,j在邮政编码(文件夹,文件):in_workspace=我+“到每个地理数据库的路径”in_mosaic_dataset_name="镶嵌数据集名称"path_to_raster=in_workspace+in_mosaic_dataset_name rasterlist=[path_to_raster,path_to_raster]arcpy.sa.ExtractMultiValuesToPoints(j,outlayername)
如果有人知道为什么初始运行会给你未知的值,或者这些值来自哪里,请告诉我。
干杯!
我想到了一个让它工作的方法。出于某种原因,我不知道为什么,如果你从一个马赛克数据集中运行ExtractMultiValuesToPoints,你最终会得到在栅格单元格中找不到的值。我仍然不确定这些值的来源。但是,如果您使用完全相同的数据再次运行它,您将得到所需的结果。我修改了上面的脚本,以便ExtractMultiValuesToPoints两次使用马赛克数据集。此外,我确定没有必要制作马赛克层,该工具仅从马赛克数据集工作。这个解决方案将在属性表中提供两个新列;一个是未知值,另一个是期望值。根据运行的文件数量,您可以手动删除每个表中的额外列,也可以修改脚本删除未知值的第一列。
进口arcpy从arcpy进口env进口操作系统#创建目录下所有文件夹的列表目录=“栅格和马赛克数据集文件夹的路径”文件夹=操作系统.listdir(目录)#创建点特性类列表env.工作空间=r“指向特征类的路径”文件=arcpy.ListFeatureClasses()#迭代点文件和马赛克数据集arcpy.CheckOutExtension(“空间”)为我,j在邮政编码(文件夹,文件):in_workspace=我+“到每个地理数据库的路径”in_mosaic_dataset_name="镶嵌数据集名称"path_to_raster=in_workspace+in_mosaic_dataset_name rasterlist=[path_to_raster,path_to_raster]arcpy.sa.ExtractMultiValuesToPoints(j,outlayername)
如果有人知道为什么初始运行会给你未知的值,或者这些值来自哪里,请告诉我。
干杯!