ArcPy를 사용하여 선의 중간 점을 찾으십니까?


12

폴리 라인의 중간 점은 어떻게 지오 프로세싱 프레임 워크 (예 : Python 스크립트)를 사용하여 계산할 수 있습니까?

polyline.centroid 속성은 반환 이 내 또는 기능에있는 경우 진정한 중심을; 그렇지 않으면 레이블 포인트가 반환 됩니다. 중심은 직선이 아닌 선에 거의 위치하지 않으므로 제 목적으로는 쓸모가 없습니다.

기능 정점 포인트에 도구는 중간 옵션이 있지만, 이것은 내가 현재이없는 ArcInfo에 필요합니다.

폴리선에 측정 값을 추가하고 선을 따라 경로 이벤트를 50 % 만드는 옵션이 있습니다.

또 다른 해결 방법은 ArcMap에서 형상 계산 옵션을 사용하는 것이지만 이상적으로는 스크립트에서이 프로세스를 자동화해야합니다.

더 나은 / 빠른 제안이 있습니까?

현재 ArcGIS 10.0 (ArcInfo 레벨 라이센스에 액세스 할 수 없음)으로 제한되어 있습니다.


4
이 질문을 참조하십시오 . 결국 Shapely의 선형 참조 함수를 사용하여 중간 점을 결정했습니다.
Mike T

1
@MikeToews가 올바른 아이디어를 가지고 있다고 생각하고 Shapely로 가져 오는 대신 ArcGIS에서 선형 참조 함수를 사용하십시오. 다음과 같이 원하는 기능인 것 같습니다. 경로 이벤트 레이어-선형 참조 만들기 . 이벤트 테이블을 즉석에서 만들 수 있습니다. 이것은 10.1 용이지만 10.0에서는 동일해야합니다.
공간을 얻으십시오

1
이 블로그에는 Python / ArcPy로 변환 할 수있는 알고리즘이 포함 된 것 같습니다 : rbrundritt.wordpress.com/2008/10/14/…
PolyGeo

누군가 자바 스크립트로 했습니까? 나는 Arcpy에서만 성공적으로했습니다. 진심으로 Ezequias
Ezequias

새로운 질문이 있으면 질문하기 버튼 을 클릭하여 질문하십시오 . 컨텍스트를 제공하는 데 도움이되는 경우이 질문에 대한 링크를 포함하십시오. - 검토에서
BERA

답변:


23

폴리 라인 클래스는 ArcGIS 10.1에서 "positionAlongLine"라는 새로운 방법이있다. 이렇게하면 선의 시작 끝에서 지정된 거리에 정확히 하나의 점이 있는 PointGeometry 객체 또는 start와 end 사이의 거리의 일부 가 반환됩니다 . 중간 점을 찾으려면해야 할 것 positionAlongLine(0.5,True)입니다. 선의 중간 점을 찾아 해당 좌표를 속성 테이블에 추가하려면 다음 명령문에서 필드 계산기를 수행하십시오.

  • !Shape!.positionAlongLine(0.5,True).firstPoint.X
  • !Shape!.positionAlongLine(0.5,True).firstPoint.Y

이 기능을 사용하려면 필드 계산기에서 Python 파서를 사용해야합니다.

파이썬에서이 포인트 객체에 액세스하려면 다음을 수행하십시오.

Input_shp = "C:\Temp\Line.shp"
Cursor = arcpy.SearchCursor(Input_shp)
for Feature in Cursor:
    Midpoint = Feature.shape.positionAlongLine(0.50,True).firstPoint
    print Midpoint.X
    print Midpoint.Y

고마워, 이거 좋아 보인다. 나는 현재 10.0으로 제한되어 있다고 언급 했어야하므로 위의 경로 옵션으로 충분할 수 있습니다.
Stephen Lead

오류 : 행에 잘못된 값이 있습니다. Model Builder에서 Python을 검사하면서 arcGIS10을 사용하여 동일한 문장을 사용했습니다.! Shape! .positionAlongLine (0.5, True) .firstPoint.X
juasmilla

1

ET Geo Wizards 라이센스를 사용하면 "중간 포인트"및 "중복 포인트 제거"옵션 (옵션)으로 "Polyline to Point"기능을 사용할 수 있습니다 ( http://www.ian-ko.com/ET_GeoWizards/UserGuide/convertPl2Pnt). htm

ET Geo Wizards를 다음과 같이 구현할 수 있습니다.

toolbox_ETgeowizards = arcpy.GetParameterAsText(0) # Location ET Toolbox (Type: Toolbox)
arcpy.ImportToolbox(toolbox_ETgeowizards)

...

arcpy.ET_GPPolylineToPoints(pInFeatureClass, sOutFileName, sExportOption, bRemoveDuplicates)

ET 기능의 입력 변수는 다음을 참조하십시오 : http://www.ian-ko.com/ET_GeoWizards/UserGuide/Scripting/scripting_PolylineToPoint.htm

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.