Tạo bản đồ dòng xuyên tâm hiển thị các đường cong trong khoảng cách ngắn (20km) bằng ArcGIS cho Máy tính để bàn?


10

Esri đã cung cấp hướng dẫn về cách tạo bản đồ dòng xuyên tâm nhưng tôi nghĩ các đường cong sẽ chỉ được tạo ra trên một khoảng cách dài, giống như một nửa quả địa cầu.

Đối với khoảng cách ngắn (20km), một đường trắc địa có thể sẽ vẫn trông khá thẳng. Sau đó, để tiếp tục sử dụng quy trình này cho bản đồ dòng xuyên tâm trong khoảng cách ngắn, tôi nghĩ rằng chúng ta có thể chỉnh sửa cài đặt chuẩn để trái đất nhỏ hơn, do đó bạn sẽ có được một đường cong đẹp cho một khoảng cách nhỏ. Bất cứ ai biết làm thế nào để làm điều này?

Ngoài ra, có một công cụ khác trong ArcGIS Desktop 10.0 để sử dụng để tạo các đường cong không? Tôi có 90 điểm mà tôi cần kết nối tối đa 54 điểm, sẽ tốt hơn khi tự động hóa nó thay vì phải vẽ các đường bằng tay.


2
Câu hỏi của bạn đã được hỏi tại gis.stackexchange.com/questions/5204/ trên trong bối cảnh không phải ArcGIS. Bạn có thể tìm thấy câu trả lời được quan tâm.
whuber

1
Tôi đã có một ý tưởng khác với người làm bánh, nhưng anh ấy có thể tốt hơn khi đưa ra mục tiêu của bạn. Tôi chỉ nghĩ đơn giản là người ta có thể thêm một lượng uốn cong tùy ý vào cung, tương tự như những gì được thực hiện trong sơ đồ cung . Sau đó, người ta có thể thay đổi hướng của đỉnh phụ thuộc vào hướng dòng chảy. Về cơ bản, quy trình làm việc sẽ giống với các vòng tròn lớn, chia chuỗi dòng thành nhiều đoạn thẳng nhỏ hơn. Các uốn cong tùy ý mặc dù có thể phù hợp với bất kỳ chiếu địa phương.
Andy W

@AndyW, đề xuất của bạn nghe có vẻ hữu ích hơn đối với tôi (mặc dù không có ý xúc phạm đến ai, người đưa ra đề xuất tuyệt vời cho nhiều người dùng capaple hơn). Tôi không thể hiểu hoặc thực hiện đề xuất của người bán hàng. Tôi đang theo một giải pháp 'ngoài luồng' đơn giản, tốt nhất là một phần mở rộng ArcGIS. Tôi nhìn vào sơ đồ hồ quang, có một số ví dụ tuyệt vời ở đó. Tôi không thấy một giải pháp ở đó cho một bản đồ tĩnh đơn giản hiển thị mối quan hệ nhiều đến nhiều (nhưng thường là một với nhiều) giữa, trong trường hợp của tôi, các trang web trục xuất và các trang web di dời.
ndthl

Câu trả lời:


5

Dưới đây là một minh họa về quy trình làm việc mà tôi đã đề cập trong bình luận ở trên và mặc dù tôi không biết về bất kỳ thói quen đóng hộp đơn giản nào để làm điều này, tôi đã đính kèm một bảng tính excel để người ta có thể nhập một tập hợp tọa độ đích gốc và sau đó trang tính tạo một tọa độ dòng hoặc tập hợp (bảng tính ở đây ). Nó có các công thức được thiết lập nên khá dễ dàng để nhập tọa độ OD mới và mở rộng các công thức để điền vào kết quả, nhưng tôi sẽ xem xét logic của quy trình một cách rõ ràng hơn và những người khác có thể đưa ra lời khuyên về cách viết kịch bản hoàn toàn bên trong ArcMap (hoặc bất cứ điều gì).

Tóm lại, tôi nghĩ rằng điều này là hợp lý để trực quan hóa dữ liệu OD chủ yếu vì cùng lý do các đường tròn lớn rất phổ biến, chúng cung cấp sự phân biệt trực quan hơn giữa các dòng. Cách tiếp cận tôi đề xuất cũng có một lợi thế so với các đường tròn lớn, trong đó hướng của dòng chảy được mã hóa theo nửa vòng tròn. Trong câu trả lời khác trên trang này, tôi đưa ra một cái nhìn tổng quát hơn về các kỹ thuật trực quan hóa cho ánh xạ dòng chảy, và nhiều kỹ thuật tương tự có thể được áp dụng ngoài việc tạo ra các cung như thế này.

Vì vậy, để chi tiết cách người ta vẽ các đường như tôi gợi ý, về cơ bản tôi chỉ có 3 bước cho quy trình, 1) tìm hướng của luồng, 2) tìm điểm giữa và khoảng cách của luồng, 3) xử lý điểm giữa là tâm của một vòng tròn, rồi vẽ cung tròn (một nửa vòng tròn từ gốc đến đích). Để rõ ràng, tôi bắt đầu với một cặp tọa độ gốc dự kiến (x1,y1)và tọa độ đích (x2,y2).

Vì vậy, 1) tìm hướng của dòng chảy. Trước tiên, người ta sử dụng công thức ATAN((y2 - y1)/(x2 - x1))và sau đó tùy thuộc vào hướng chỉ định một hướng tùy thuộc vào hướng đó là hướng đông hay hướng tây. Một ví dụ mã giả bên dưới (Tôi gán các điểm OD đều ở cùng tọa độ một hướng bằng 0). Ở đây, varaible or_radcó nghĩa là viết tắt cho "định hướng theo radian" và piđề cập đến giá trị của 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) Tìm điểm giữa và khoảng cách của dòng chảy. Điều này rất đơn giản, chỉ với một bộ tọa độ được ghép nối, tọa độ trung điểm trong (x, y) sẽ là (x1+x2/2,y1+y2/2). Vì vậy, hãy xác định mid_x = (x1 + x2)/2mid_y = (y1 + y2)/2cho phần tiếp theo. Khoảng cách sử dụng lý thuyết pythagoreum chỉ đơn giản là distance = SQRT((x1 - x2)^2 + (y1 - y2)^2).

3) Sau đó đưa ra thông tin đó, vẽ đường tròn đã cho qua một số độ và bán kính quy định trước (bằng một nửa khoảng cách giữa hai điểm). Chẳng hạn, giả sử chúng ta bắt đầu với một tập hợp các cặp tọa độ OD tại (1,3):(3,2). Hướng theo độ sẽ là ~ 116 (và tính bằng radian ~ 2), điểm giữa x, y sẽ là (2,2.5)và khoảng cách giữa hai điểm là khoảng 2,2.

Vì vậy, giả sử chúng ta muốn vẽ nửa vòng tròn 180 độ. Trong mã pseduo (sử dụng các biến tôi đã xác định), các lần lặp sẽ trông giống như;

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.

Chèn bên dưới là sơ đồ của tọa độ ban đầu tôi đã chỉ định ở trên. Bắt đầu từ 0 và kết thúc ở 180, đảm bảo các điểm và điểm cuối ở cùng một vị trí. Điều chỉnh vòng lặp để có nhiều bước hơn (cung chi tiết hơn) hoặc ít hơn (cung ít chi tiết hơn) nên khá rõ ràng.

nhập mô tả hình ảnh ở đây

Để lưu ý, các chủ đề khác trên trang web thảo luận về việc tạo các dòng từ dữ liệu điểm (xem thẻ ). Tôi có một ví dụ trong bảng tính xls đính kèm và tôi đã sử dụng công cụ arcmap ET Geo-wizards để chuyển đổi tọa độ bảng tính thành các đường shapefile. Các cung trong dữ liệu mẫu trong bảng tính đính kèm sau đó trông như thế này;

nhập mô tả hình ảnh ở đây

Một cập nhật đơn giản nhưng có khả năng hữu ích cho thiết lập hiện tại này sẽ là cập nhật các công thức để cho phép một lượng lệch tâm được chỉ định trước trong cung, mặc dù tôi chưa chắc chắn làm thế nào trong vài lần thử cho đến nay. Tôi mong được góp ý và phản hồi từ cộng đồng ở đây về lời khuyên của tôi.


1
Đây là một phản ứng thực sự tuyệt vời! Mặc dù tôi không hiểu cách viết mã, tôi nghĩ rằng tôi có một cái gì đó tốt để tiếp tục mà tôi có thể thảo luận với một người bạn. tôi biết công cụ et geowizards để nối hai điểm với một đường thẳng - tôi chỉ quan tâm đến các đường cong cho mục đích bản đồ.
ndthl
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.