2014-03-12 1 views
0

안녕하세요, 는 ArcGIS SelectLayerByLocation_managerment 오류 000368 : 유효하지 않은 입력 데이터

내가 arcpy.SelectLayerByLocation_managerment 작동려고 벽에 내 머리를 두드리는 봤는데 해결책을 찾을 수 없습니다 - 나는 ArcMap의/카탈로그 10.2을 사용하고 있습니다.

여러 폴리곤 레이어 파일로 분할하려고하는 폴리 라인 데이터 세트가 있습니다. 아이디어는 스크립트가 레이어 파일을 순환하고, X 미터 내에 있고 별도의 폴더로 내보내는 폴리 라인 파트를 선택한다는 것입니다.

arcpy.AddMessage("\n Checking Script for Errors...") 
         #Script to split one layer (OSMM/OSVML) into parts, parts defined by another layer. 
import arcpy 
import os 
      #References users Map document - get parameter input from prompt 
mxd = arcpy.mapping.MapDocument(arcpy.GetParameterAsText(0)) 
df = arcpy.mapping.ListDataFrames(mxd, "Frame")[0] 
arcpy.env.workspace = arcpy.GetParameterAsText(1) 

     #For loop to iterate through all layers in dataframe 
for lyr in arcpy.mapping.ListLayers(mxd,"",df): 
        #Get layer name 
      layerName = lyr.name 
        #Skip the OS File 
      if layerName == "OSMM_Line_Detail": 
        arcpy.AddMessage("\n Skipping " + layerName) 
      else: 
          #Inform users of layer being processed 
        arcpy.AddMessage("\n Processing: " + layerName) 
          #Select the wanted layer that is within a distance of the current layer 
        arcpy.AddMessage("\n Select by location") 
        arcpy.SelectLayerByLocation_management('OSMM_Line_Detail',"WITHIN_A_DISTANCE",layerName,arcpy.GetParameterAsText(3),"NEW_SELECTION")       
          #Create directory for file (http://desk.stinkpot.org:8080/tricks/index.php/2006/07/create-a-directory-in-python/) 
        dirname = ("C:\Users\USERNAME\Documents\Test Data\Basemapping and Boundary Data\Split line by area\Line " + layerName) 
        if not os.path.isdir(dirname + "/"): 
          arcpy.AddMessage("\n Directory not found, creating directoy for: " + layerName) 
          os.mkdir(dirname + "/") 
          #Exports the selection of layer to new directory 
        arcpy.FeatureClassToShapefile_conversion(arcpy.GetParameterAsText(2), ""C:\Users\USERNAME\Documents\Test Data\Basemapping and Boundary Data\Split line by area\Line " + layerName) 
        arcpy.AddMessage("\n Completed split for " + layerName) 



arcpy.AddMessage("\n Script complete") 
        #delete variables created 
del lyr 
del df 
del mxd 
      #script ends 

내가 현재의 에러 코드를 수신하고 있습니다 : 여기 내 코드 나는 지오 데이터베이스에 파일을 수출 한

Traceback (most recent call last): 
    File "C:\Users\Richard.Lauberts\Documents\LIS Data\Toolbox and Scripts\Python Script for Splitting MasterMap by Site.py", line 26, in <module> 
arcpy.SelectLayerByLocation_management('OSMM_Line_Detail',"WITHIN_A_DISTANCE",layerName,'110 Meters',"NEW_SELECTION") 
    File "c:\program files (x86)\arcgis\desktop10.2\arcpy\arcpy\management.py", line 6618, in SelectLayerByLocation 
    raise e 
ExecuteError: Failed to execute. Parameters are not valid. 
ERROR 000368: Invalid input data. 
Failed to execute (SelectLayerByLocation). 

내가 arcpy 사용하려고 한 레이어를 다시 공급. MakeFeatureLayer_management를 다른 게시물에서 제안한대로 GetParameterAsTest를 사용하는 대신 파일 이름을 하드 코드하려고 시도했지만 아무 것도 도움이되지 않습니다!

코드에서 거리 값을 입력 할 때 "110", "110 Meters", "110 Meters"를 시도하고 getparameters로 남겨 둡니다 (아크 도구 상자 인터페이스에서 선형 값으로 설정). 사용자가 길이와 단위를 선택).

의견을 보내 주시면 대단히 감사하겠습니다.

+0

두번째 줄부터 마지막 ​​줄까지 오타가 몇개 남았습니다. "r :"앞면에 "C : \ Users \ etc"가 필요할 수 있습니다. 파이썬이 \ 문자를 문자 그대로 읽도록하기. –

답변

0

이것은 문제가되지 않지만 때로는 arcpy의 작은 두뇌가 중첩 된 명령을 처리 할 수없는 경우가 있습니다. 인수에서 GetParameterAsText를 가져와 봅니다. 변수 이름과 별도의 행으로 만들고 필요할 경우 텍스트를 숫자 형식으로 변경하십시오.

관련 문제