2016-05-31 5 views
1

ArcGIS의 ScriptTool에 대한 소스 코드로 사용되는 python 스크립트가 있습니다.이 스크립트는 마스크를 사용하여 선택 영역에서 도로 세그먼트를 선택합니다 (다각형 피처 클래스) 코드를 수정하여 선택 도구에 대한 다른 마스크를 생성 할 때까지 모든 것이 제대로 작동했습니다. 그 수정 이후, 원래 코드뿐만 아니라 수정 된 코드는 모두 INTERSECT 조건을 가진 SelectByLocation 도구에 대해 동일한 실행 오류를 발생시키는 것으로 보입니다. 여기 python 스크립트에서 위치 선택 오류 : "형상 가져 오기"창

는 원래 코드의 특정 부분입니다 :

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"라는 작은 창에 "FetchGeometries"와 "OK"버튼이 함께 표시됩니다. 클릭하면 SelectByLocation_management 도구 (알 수없는 999999 오류)에 대한 함수 실행 오류가 발생합니다. 수정되지 않은 코드를 실행하면 이전에 문제가 없었던 문제가 발생합니다. 선택 도구를 실행하는 데 사용 된 두 파일을 모두 확인했지만 올바른 형식 (셰이프 파일, 마스크의 다각형 유형 및 도로의 선)과 오른쪽에 채워져 있습니다. 나는 인터넷에서 도처를 쳐다 보았고 그 전에 아무도 그 문제가 없었던 것 같습니다 ...

http://imgur.com/jltD0zl의 스크린 샷을 확인하십시오.

이전에는 문제가 없었으므로 코드 자체는 문제가 아니지만 그 오류의 출처를 추적 할 수는 없습니다. 코드 블록은 오류가 발생한 컨텍스트를 나타냅니다. 내 발전소는 MakeFeatureLayer_management 도구를 사용하여 문제가 발생했다고 제안합니다. 또한 피쳐 레이어를 만들지 않고도 도로의 소스 파일을 사용하면 선택 도구에 유효하지 않은 매개 변수에 오류가 발생합니다.

제 질문은 여기 있습니다 :이 오류를 본 적이 있습니까? 그렇다면 동일한 지리 정보 도구로 어떻게 처리 했습니까? 어떻게 제거 할 수 있습니까?

감사합니다.


저는 2 개월 전에 인턴쉽을 위해 파이썬과 arcpy를 배우기 시작했습니다. 내 문제가 불분명 한 경우 사전에 사과드립니다.

답변

0

저는 ArcPy 환경에 비교적 익숙하지 않으며 Arc 10.3에서 똑같은 문제가있었습니다.

ArcMap에서 작업중인 개인 지오 데이터베이스 (MDB)에 대한 액세스 권한을 잃었으므로 더 이상 읽고 쓸 수 없습니다. 필자는 파일 지오 데이터베이스 (GDB) 나 Windows 파일 시스템에서 shapefiles로 가득 찬 폴더에이 문제가 없습니다.

Esri가 해결할 때까지 가능하면 개인용 지오 데이터베이스를 피하는 것이 가장 좋습니다.

+0

마침내 문제가 해결되었습니다. 코드에서 현재 사용하고있는 모든 파일 (래스터 및 셰이프 파일)을 지우고 이전의 백업 폴더에서 동일한 "손길이 닿지 않은"파일을 복사해야했습니다. 이 방법으로 문제를 해결하면 ArcGis GeoProcessing 도구 나 코드 자체가 내가 사용하고 있던 데이터를 손상시킨 것 같아요. 아니면 @AlexTelionis에 대해 더 이상 권한이 없었습니다! (답장을 보내 주셔서 감사합니다.) 문제는 다시 작동하지만 문제의 정확한 원인을 알 수 없습니다. 죄송합니다. –