Select python 脚本中的位置错误:"Fetch Geometries" window
Select by location error in python script : "Fetch Geometries" window
我有一个 python 脚本用作 ArcGIS 中 ScriptTool 的源代码,它应该 select 来自 selection 的路段,带有遮罩(多边形) feature class)。一切正常,直到我修改代码为 selection 工具生成不同的掩码。
似乎自从那次修改以来,修改后的代码和原始代码都给我在 INTERSECT 条件下的 SelectByLocation 工具执行相同的错误。
这里是原代码的具体部分:
import arcpy, os, datetime
from arcpy.sa import *
if __name__ == "__main__":
inRas = r'path\Raster_for_mask'
inRR = r'path\roads'
arcpy.env.overwriteOutput = True
# Mask creation based on the raster file
arcpy.CheckOutExtension('Spatial')
maskZIr = arcpy.Raster(inRas)>-10000
maskZIs = 'Zone_inondee'
arcpy.RasterToPolygon_conversion(maskZIr,maskZIs)
# Road features selections by the mask ############################
inRRLayer = 'inRRLayer'
arcpy.MakeFeatureLayer_management(inRR, inRRLayer)
arcpy.SelectLayerByLocation_management(inRRLayer,"INTERSECT",maskZIs)
这里是修改后的代码:
import arcpy, os, datetime
from arcpy.sa import *
if __name__ == "__main__":
inRas = r'path\Raster_for_mask'
inRR = r'path\roads'
arcpy.env.overwriteOutput = True
## Real mask to select road features that I want
maskZIr = arcpy.Raster(inRas)
maskZIr2 = SetNull(maskZIr,maskZIr,"VALUE = 0") # Erase the error zones of the raster before conversion to polygon
maskZIr3 = Int(maskZIr2)
maskZIr4 = 'Zone_inondee_multipart'
arcpy.RasterToPolygon_conversion(maskZIr3,maskZIr4)
maskZIs = 'Zone_inondee'
arcpy.Dissolve_management(maskZIr4,maskZIs) # Singlepart polygon mask
##################################
# Road features selections by the mask ############################
inRRLayer = 'inRRLayer'
arcpy.MakeFeatureLayer_management(inRR, inRRLayer)
arcpy.SelectLayerByLocation_management(inRRLayer,"INTERSECT",maskZIs)
(文件的路径是假的,只是为了演示目的)
关于错误,出现了一个名为 "AddList" 的小 window,里面只写了 "FetchGeometries",还有一个 OK 按钮。单击时,我收到 SelectByLocation_management 工具的函数执行错误(未知 999999 错误)。如果我 运行 我未修改的代码之前工作正常,也会发生这种情况。
我验证了用于 运行 和 selection 工具的两个文件,但它们的格式都正确(shapefile、掩码的多边形类型和道路的线)并且填充正确。我在互联网上到处查了一下,以前好像没有人遇到过这个问题...
查看问题的屏幕截图:http://imgur.com/jltD0zl。
问题不在于代码本身,因为它之前运行良好,但我无法追溯该错误的来源。代码块仅指示错误发生的上下文。我的直觉表明 MakeFeatureLayer_management 工具在某个时候出了问题。此外,在不制作要素层的情况下使用道路源文件会导致 selection 工具的参数无效。
所以我的问题是:您见过这个错误吗?如果是这样,是否使用相同的地理处理工具以及如何摆脱它?
谢谢大家。
有关信息我两个月前刚开始学习 python 和 arcpy 实习。这是我第一次 post 在这里,所以如果你们中的一些人不清楚我的问题,我提前道歉。
我对 ArcPy 环境也比较陌生,在 Arc 10.3 上遇到了完全相同的问题。
问题似乎是 ArcMap 失去了访问我正在使用的个人地理数据库 (MDB) 的权限,无法再对其进行读取或写入。对于文件地理数据库 (GDB) 或 Windows 文件系统上充满 shapefile 的文件夹,我没有这个问题。
在 Esri 解决这个问题之前,最好的办法似乎是尽可能避免使用个人地理数据库。
我有一个 python 脚本用作 ArcGIS 中 ScriptTool 的源代码,它应该 select 来自 selection 的路段,带有遮罩(多边形) feature class)。一切正常,直到我修改代码为 selection 工具生成不同的掩码。 似乎自从那次修改以来,修改后的代码和原始代码都给我在 INTERSECT 条件下的 SelectByLocation 工具执行相同的错误。
这里是原代码的具体部分:
import arcpy, os, datetime
from arcpy.sa import *
if __name__ == "__main__":
inRas = r'path\Raster_for_mask'
inRR = r'path\roads'
arcpy.env.overwriteOutput = True
# Mask creation based on the raster file
arcpy.CheckOutExtension('Spatial')
maskZIr = arcpy.Raster(inRas)>-10000
maskZIs = 'Zone_inondee'
arcpy.RasterToPolygon_conversion(maskZIr,maskZIs)
# Road features selections by the mask ############################
inRRLayer = 'inRRLayer'
arcpy.MakeFeatureLayer_management(inRR, inRRLayer)
arcpy.SelectLayerByLocation_management(inRRLayer,"INTERSECT",maskZIs)
这里是修改后的代码:
import arcpy, os, datetime
from arcpy.sa import *
if __name__ == "__main__":
inRas = r'path\Raster_for_mask'
inRR = r'path\roads'
arcpy.env.overwriteOutput = True
## Real mask to select road features that I want
maskZIr = arcpy.Raster(inRas)
maskZIr2 = SetNull(maskZIr,maskZIr,"VALUE = 0") # Erase the error zones of the raster before conversion to polygon
maskZIr3 = Int(maskZIr2)
maskZIr4 = 'Zone_inondee_multipart'
arcpy.RasterToPolygon_conversion(maskZIr3,maskZIr4)
maskZIs = 'Zone_inondee'
arcpy.Dissolve_management(maskZIr4,maskZIs) # Singlepart polygon mask
##################################
# Road features selections by the mask ############################
inRRLayer = 'inRRLayer'
arcpy.MakeFeatureLayer_management(inRR, inRRLayer)
arcpy.SelectLayerByLocation_management(inRRLayer,"INTERSECT",maskZIs)
(文件的路径是假的,只是为了演示目的)
关于错误,出现了一个名为 "AddList" 的小 window,里面只写了 "FetchGeometries",还有一个 OK 按钮。单击时,我收到 SelectByLocation_management 工具的函数执行错误(未知 999999 错误)。如果我 运行 我未修改的代码之前工作正常,也会发生这种情况。 我验证了用于 运行 和 selection 工具的两个文件,但它们的格式都正确(shapefile、掩码的多边形类型和道路的线)并且填充正确。我在互联网上到处查了一下,以前好像没有人遇到过这个问题...
查看问题的屏幕截图:http://imgur.com/jltD0zl。
问题不在于代码本身,因为它之前运行良好,但我无法追溯该错误的来源。代码块仅指示错误发生的上下文。我的直觉表明 MakeFeatureLayer_management 工具在某个时候出了问题。此外,在不制作要素层的情况下使用道路源文件会导致 selection 工具的参数无效。
所以我的问题是:您见过这个错误吗?如果是这样,是否使用相同的地理处理工具以及如何摆脱它?
谢谢大家。
有关信息我两个月前刚开始学习 python 和 arcpy 实习。这是我第一次 post 在这里,所以如果你们中的一些人不清楚我的问题,我提前道歉。
我对 ArcPy 环境也比较陌生,在 Arc 10.3 上遇到了完全相同的问题。
问题似乎是 ArcMap 失去了访问我正在使用的个人地理数据库 (MDB) 的权限,无法再对其进行读取或写入。对于文件地理数据库 (GDB) 或 Windows 文件系统上充满 shapefile 的文件夹,我没有这个问题。
在 Esri 解决这个问题之前,最好的办法似乎是尽可能避免使用个人地理数据库。