ArcGIS for Desktop을 사용하여 짧은 거리 (20km)에 걸쳐 곡선을 보여주는 방사형 흐름 맵을 만들 수 있습니까?


10

Esri는 방사형 흐름 맵을 만드는 방법에 대한 지침 을 제공 했지만 곡선은 지구의 절반과 같이 장거리에서만 생성 될 것이라고 생각합니다.

단거리 (20km)의 경우 측지선은 여전히 ​​똑바로 보일 것입니다. 짧은 거리에 걸쳐 방사형 흐름 맵에이 프로세스를 계속 사용하기 위해 지구 설정을 작게 설정하기 위해 데이텀 설정을 편집 할 수 있다고 생각했습니다. 이 작업을 수행하는 방법을 아는 사람이 있습니까?

또는 ArcGIS Desktop 10.0에 곡선을 만드는 데 사용할 다른 도구가 있습니까? 나는 54 점까지 연결 해야하는 90 점을 가지고 있으며 수동으로 선을 그리는 대신 자동화하는 것이 좋습니다.


2
귀하의 질문은 비 ArcGIS 컨텍스트 에서 gis.stackexchange.com/questions/5204/… 에서 요청되었습니다 . 관심있는 답변을 찾을 수 있습니다.
whuber

1
나는 whuber와는 다른 아이디어를 가지고 있었지만 그의 목표가 더 좋을 수도 있습니다. 나는 아크 다이어그램 에서 수행되는 것과 비슷한 방식으로 아크에 임의의 양의 굽힘을 추가 할 수 있다고 생각했습니다 . 흐름 방향에 따라 정점의 방향을 바꿀 수 있습니다. 기본적으로 워크 플로는 큰 원과 동일하며 줄 문자열을 여러 개의 작은 직선 세그먼트로 나눕니다. 그러나 임의의 굽힘은 모든 로컬 투영을 수용 할 수 있습니다.
앤디 W

@AndyW, 귀하의 제안은 나에게 더 유용하게 들립니다 (더 많은 사용자를위한 훌륭한 제안을하는 whuber에 대한 공격은 없지만). whuber의 제안을 이해하거나 구현할 수 없습니다. 간단한 '즉시 사용 가능한'솔루션, 바람직하게는 ArcGIS 확장을 따릅니다. 나는 아크 다이어그램을 보았습니다. 놀라운 예가 있습니다. 필자의 경우 퇴거 사이트와 재배치 사이트 사이에 다 대다 (일반적으로 일대 다) 관계를 보여주는 간단한 정적 맵에 대한 솔루션이 없습니다.
ndthl

답변:


5

위의 주석에서 언급 한 워크 플로의 그림이 있으며이 작업을 수행하는 간단한 미리 준비된 루틴을 모르지만 원점-목적지 좌표 세트를 가져올 수있는 Excel 스프레드 시트를 첨부했습니다. 그런 다음 시트는 세트 또는 원형 좌표를 만듭니다 (스프레드 시트 여기 ). 수식이 설정되어있어 새로운 OD 좌표를 가져오고 수식을 확장하여 결과를 채울 수는 있지만 프로세스의 논리를보다 명확하게 살펴보고 다른 사람들은 스크립트를 완전히 작성하는 방법에 대한 조언을 줄 수 있습니다 ArcMap (또는 무엇이든).

간단히 말해서, 이것은 큰 원선이 인기있는 것과 같은 이유로 주로 OD 데이터를 시각화하는 데 합리적이라고 생각합니다. 내가 제안하는 접근법은 흐름 방향이 반원으로 인코딩된다는 점에서 큰 원선에 비해 하나의 이점이 있습니다. 이 사이트의 다른 답변 에서는 흐름 매핑을위한 시각화 기술에 대한 일반적인 개요를 제공하며 이와 같은 호를 만드는 것 외에도 동일한 기술을 많이 적용 할 수 있습니다.

따라서 제안과 같이 선을 그리는 방법을 자세히 설명하려면 본질적으로 프로세스의 3 단계 만 있습니다 .1) 흐름의 방향을 찾고 2) 흐름의 중간 점과 거리를 찾습니다 .3) 중간 점을 원의 중심으로 설정 한 다음 호 (원점에서 대상까지 반원)를 그립니다. 명확히하기 위해, 나는 투영 된 원점 좌표 (x1,y1)와 목적지 좌표의 쌍으로 시작 합니다 (x2,y2).

따라서 1) 흐름의 방향을 찾으십시오. 먼저 수식 ATAN((y2 - y1)/(x2 - x1))을 사용한 다음 방향에 따라 방향이 동쪽인지 서쪽인지에 따라 방향을 지정합니다. 아래의 의사 코드 예 (동일한 좌표에있는 OD 포인트를 0의 방향으로 지정합니다). 여기서 변수 or_rad는 "라디안 방향"의 축약 형 pi이며 pi의 값을 나타냅니다.

#tan_or = ATAN((y2 - y1)/(x2 - x1)).
Do If x2 = x1 and y1 <= y2. 
    compute or_rad = 0.
Else if x2 = x1 and y1 > y2.
    compute or_rad = pi.
Else if x1 > x2.
    compute or_rad = 270/180*pi - #tan_or.
Else if x1 < x2.
    compute or_rad = 90/180*pi - #tan_or.
End If.

2) 흐름의 중간 점과 거리를 찾으십시오. 이것은 (x, y) 좌표의 중간 지점이 될 한 쌍의 좌표 집합에 대해서만 매우 간단합니다 (x1+x2/2,y1+y2/2). 다음 부분을 정의 mid_x = (x1 + x2)/2하고 정의 mid_y = (y1 + y2)/2하겠습니다. 피 타고 륨 정리를 사용한 거리는 간단 distance = SQRT((x1 - x2)^2 + (y1 - y2)^2)합니다.

3) 그런 다음 해당 정보가 주어지면 미리 지정된 각도와 반경 (두 점 사이의 거리의 절반) 위에 주어진 원을 그립니다. 예를 들어에서 OD 좌표 쌍으로 시작한다고 가정 해 보겠습니다 (1,3):(3,2). 도 단위의 방향은 ~ 116 (및 라디안 ~ 2)이되고, x, y 중간 점이 (2,2.5)되고 두 점 사이의 거리는 약 2.2입니다.

반원을 180도 정도 그리려면 pseduo-code에서 (이미 정의한 변수 사용) 반복은 다음과 같습니다.

for i in (0 to 180 degrees) 
    rad_i = i/180*pi. /*converts i from degrees to radians
    step_or = pi - rad_i /*for clarity, this makes the circle go from origin to destination
    radius = distance/2
    Arc_X = mid_x + sin(or_rad - step_or)*radius.
    Arc_Y = mid_y + cos(or_rad - step_or)*radius.

아래에는 위에서 지정한 원래 좌표의 다이어그램이 삽입되어 있습니다. 0에서 시작하여 180으로 끝나면 존재 지점과 끝 점이 동일한 위치에있게됩니다. 더 많은 단계 (더 자세한 아크) 또는 더 적은 (더 자세한 아크)를 갖도록 루프를 조정하는 것은 분명해야합니다.

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

참고로, 사이트의 다른 스레드는 점 데이터에서 선을 만드는 것에 대해 설명합니다 ( 태그 참조). 첨부 된 xls 스프레드 시트에 예제가 있으며 ET Geo-wizards 아크 맵 도구를 사용하여 스프레드 시트 좌표를 shapefile 라인으로 변환했습니다. 첨부 된 스프레드 시트에있는 예제 데이터의 호는 다음과 같습니다.

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

이 현재 설정에 대한 간단하지만 잠재적으로 유용한 업데이트 중 하나는 미리 지정된 양의 편심을 허용하도록 공식을 업데이트하는 것입니다. 나는 내 조언에 대한 커뮤니티의 제안과 피드백을 기대합니다.


1
이것은 정말 환상적인 응답입니다! 코딩하는 방법을 이해하지 못하지만 친구와 토론 할 수있는 좋은 점이 있다고 생각합니다. 나는 두 점을 직선으로 연결하는 지오 위저드 도구를 알고있다-나는지도 제작 목적의 곡선에만 관심이있다.
ndthl
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.