ArcGIS Desktop을 사용하여 입면을 따라 버퍼 폴리곤 생성?


14

내가하고자하는 것은 폴리곤에 100m 버퍼를 놓는 것이지만, 버퍼가 "크로우가 날아갈 때"고정 폭에있는 것보다는 Lidar DEM의 기울기를 따르기를 원합니다.

ArcMap (3D Analyst 포함)이 있습니다. 슬프게도 ArcMap을 사용하여 공간 또는 네트워크 분석가 확장이 없습니다.

인터넷에서 근접 분석, 경로 거리 분석 및 이방성 누적 비용을 살펴 보았습니다. 어떻게 든 시간이 걸리는 그리드를 만들고 다각형에서 100m에 도달하는 데 걸리는 시간을 알아 내야하는 것처럼 보이지만 다소 뒤로 보입니다. 이 도구의 대부분은 두 지점 사이에서 가장 쉬운 경로를 찾기 위해 만들어진 것 같습니다.

아무도 전에 이것을 한 적이 있습니까?


1
"경사를 따르십시오"라고 말하면 DEM 셀이 경사면에서 1m이면 평평한 경우 버퍼에서 1m로 계산하지만 한쪽이 다른 쪽보다 1m 더 높으면 1.41m (표면을 따른 거리)으로 계산합니까?
Dan C

정확히이 경우 습지에서 100m 떨어져 있어야하며, 그 옆에 능선이 있습니다. QGIS의 래스터 계산기를 사용하여 래스터의 셀 크기를 기준으로 경사도를 미터로 변환 할 수 있다고 가정합니다. 각 픽셀을 수동으로 확인하지 않고 최대 100m까지 추가하는 방법을 알지 못하지만 그렇습니다.
R. Laird

답변:


7

공간 분석가가없는 설명에 대한 해결 방법 :

arcpy.Buffer_analysis("target","../buffer.shp", "100 Meters")
arcpy.FeatureVerticesToPoints_management("buffer","../points.shp","ALL")
arcpy.AddField_management("points", "PID", "LONG")
arcpy.CalculateField_management("points", "PID", "[FID]")
arcpy.Near_analysis("points", "target","LOCATION")
arcpy.MakeXYEventLayer_management("points","NEAR_X","NEAR_Y","points_Layer")
arcpy.CopyFeatures_management("points_Layer","../from_points.shp")
arcpy.Merge_management("from_points;points","../pairs.shp")
arcpy.PointsToLine_management("pairs","../lines_2D.shp", "PID")
arcpy.InterpolateShape_3d("DEM","lines_2D","../lines_3D.shp")
arcpy.AddField_management("lines_3D", "XY", "TEXT")

새 필드에서 이것을 실행하십시오 (05/02/2018에 고정).

def getPoint(shp):
 part=shp.getPart(0)
 n=len(part);L=0
 for i in xrange(n):
  p=part.getObject(i)
  x=p.X;y=p.Y;z=p.Z
  if i >0:
    dX=X-x;dY=Y-y;dZ=Z-z;dL=pow((dX*dX+dY*dY+dZ*dZ),0.5);L+=dL
  if L>=100: break
  X,Y,Z=x,y,z 
 xNew=x+dX/dL*(L-100);yNew=y+dY/dL*(L-100)
 return '%s %s' %(xNew,yNew)
#-----------------
getPoint( !Shape!)

lines_3D에 X 및 Y 필드를 추가하고 다음을 사용하여 채 웁니다.

!XY!.split(" ")[0] and !XY!.split(" ")[1]

위의 두 필드에서 XY 레이어를 만들어 포인트 피쳐 클래스에 복사하고 포인트 투 라인을 사용하여 원본 내에 버퍼 라인을 만듭니다.

산출:

여기에 이미지 설명을 입력하십시오

결론:

지형이 매우 가파르 지 않으면 간단한 버퍼가 작동합니다. 불운, 공간 분석가의 수 문학적 분석 도구 상자가 필요하기 때문에

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