카테고리 보관물: Gis

Gis

ArcGIS Desktop에서 Python을 사용하여 원점에서 다양한 거리의 선을 생성합니까? 이 좌표에 포인트가

ArcGIS와 Python (ArcPy)을 사용하여 설정된 거리와 각도를 사용하여 단일 점에서 선 피쳐를 만들려고합니다.

이 좌표에 포인트가 있습니다 : X = 400460.99, Y = 135836.76

이 시점에서 그 지점에서 15도 각도로 800 미터 길이의 선을 만들고 싶습니다.

결과 엔드 포인트가 무엇인지 알 수 없습니다.

내 데이터는 Maryland State Plane South-Meters에 투영됩니다.



답변

물론 종점은 800 미터만큼 원점에서 변위됩니다. x 좌표 방향의 변위는 각도의 사인 (북동쪽)에 비례하고 y 좌표 방향의 변위는 각도의 코사인에 비례합니다.

따라서 sin (15도) = sin (0.261799) = 0.258819 및 cos (15도) = 0.965926에서 다음을 얻습니다.

x-displacement = 800 sin(15 degrees) = 800 * 0.258819 = 207.055 

y-displacement = 800 cos(15 degrees) = 800* 0.965926 = 772.741.

따라서 종점 좌표는 (400460.99 + 207.055, 135836.76 + 772.741) = (400668.05, 136609.49)입니다.


답변

바탕 @ whuber의 대답 파이썬에서이를 구현하기를 원한다면, 당신이 언급 한 바와 같이 변위 계산하는 것입니다 것은, 다음 점의 컬렉션으로 출력을 만들과 같이 :

import arcpy
from math import radians, sin, cos

origin_x, origin_y = (400460.99, 135836.7)
distance = 800
angle = 15 # in degrees

# calculate offsets with light trig
(disp_x, disp_y) = (distance * sin(radians(angle)),\
                    distance * cos(radians(angle)))
(end_x, end_y) = (origin_x + disp_x, origin_y + disp_y)

output = "offset-line.shp"
arcpy.CreateFeatureClass_management("c:\workspace", output, "Polyline")
cur = arcpy.InsertCursor(output)
lineArray = arcpy.Array()

# start point
start = arcpy.Point()
(start.ID, start.X, start.Y) = (1, origin_x, origin_y)
lineArray.add(start)

# end point
end = arcpy.Point()
(end.ID, end.X, end.Y) = (2, end_x, end_y)
lineArray.add(end)

# write our fancy feature to the shapefile
feat = cur.newRow()
feat.shape = lineArray
cur.insertRow(feat)

# yes, this shouldn't really be necessary...
lineArray.removeAll()
del cur

답변