Tạo vòng cung giữa hai điểm trong ArcPy?


10

Tôi đã làm việc với một kịch bản python tự động hóa việc trực quan hóa dữ liệu điểm trực tiếp. Tôi có một bảng với hai cặp tọa độ. Tôi muốn kết nối hai điểm này với một vòng cung hình tròn hoặc tương tự (parabola ??).

Tôi đã có thể kết nối hai điểm bằng một đường thẳng, nhưng nó mang lại cho tôi một hình ảnh nhàm chán.

Một trong những rào cản lớn là cấp giấy phép của tôi: ArcView.

Bất cứ ai cũng có ý tưởng làm thế nào tôi có thể tạo ra một tập hợp các điểm đại diện cho đường dẫn giữa hai điểm này?

Sau đó tôi có thể sử dụng các điểm để lệnh polyline.


5
Bạn không thực sự cung cấp đủ thông tin: "cải thiện hình ảnh nhàm chán" không cụ thể cũng không phải là một tuyên bố vấn đề tốt. Nhưng có lẽ bạn sẽ nhận được một số ý tưởng từ một chủ đề tương tự tại gis.stackexchange.com/questions/5204/ .
whuber

1
Bạn có đồng thời xem nhiều dòng, hoặc chỉ một (hoặc một vài) tại một thời điểm không?
Andy W

Số điểm có thể ở bất cứ đâu từ 2 đến khoảng 50.
Pixel

Câu trả lời:


27

Dường như vấn đề phổ biến nhất với các loại "bản đồ dòng chảy" này là khi bao gồm nhiều dòng, chúng va chạm đến mức gây khó khăn cho việc phân biệt bất kỳ mẫu không rõ ràng nào (khi dòng chảy đối ứng được coi là xảy ra một mức độ thậm chí còn lớn hơn). Ngoài ra, các đường dài có xu hướng thống trị đồ họa, mặc dù có khả năng phân phối dòng chảy chủ yếu trên các không gian ngắn (ví dụ: một loạt các phân phối khác nhau giữa các địa điểm có xu hướng tương tự như các chuyến bay của Levy ). Tôi cho rằng đây không hẳn là một điều xấu (những dòng dài có thể thực sự thú vị hơn là những dòng ngắn cho nhiều hiện tượng), nhưng tôi không nghĩ rằng chúng ta muốn mất rừng để nói về những cái cây.

Mặc dù tôi không nghi ngờ rằng tôi đã bỏ lỡ một số "giải pháp" tiềm năng đã được đề xuất, tôi sẽ cố gắng tóm tắt một số cách mà các cá nhân đã cố gắng giải quyết vấn đề trong công việc mà tôi đã gặp phải.

Làm biến dạng các dòng

Nếu bạn xem qua một số chủ đề khác trong tầm nhìn, bạn sẽ thấy một số ví dụ về cách mọi người xử lý vấn đề này. Cụ thể, các đường bị biến dạng để chúng không chồng chéo với nhau hoặc các đối tượng khác trên bản đồ. Câu trả lời của Whuber về một câu hỏi tương tự khác (đã được đề cập trong một bình luận) là một ví dụ về điều này. Một bài thuyết trình của một số nhà nghiên cứu tại Stanford đã chứng minh ý tưởng tương tự (Phan et al., 2005). Cảm ơn vì bài thuyết trình đã chuyển đến dslamb cho câu trả lời này trên một chủ đề khác (và tất cả các câu trả lời cho chủ đề đó cũng sẽ được quan tâm cho câu hỏi của bạn). Tôi đặc biệt thấy thú vị rằng một trong những ví dụ điển hình của điều này là bản đồ nhập cư cũ của Minard là một ví dụ về đầu ra mong muốn (khoảng năm 1864!).

Với trường hợp sử dụng cụ thể của bạn (số lượng nhỏ các nút và dòng), điều này có vẻ đủ. Các "giải pháp" khác mà tôi trình bày có mục đích trực quan hóa dữ liệu với nhiều dòng và nhiều điểm đến (mặc dù tôi cho rằng chúng sẽ là bản tóm tắt hữu ích cho cộng đồng nói chung, vì vậy tôi tiếp tục bất chấp).

Sử dụng Alpha Blending, Color và Line Width / height

Các bản đồ tôi liệt kê trong cùng một chủ đề đã lưu ý trước đó, Biểu diễn các luồng mạng là ví dụ về các luồng này. Các bạn bè trên facebook là một trường hợp tốt để điều chỉnh mức độ alpha của các dòng, do đó, cần nhiều luồng hơn để thể hiện kết nối tối hơn (hoặc sáng hơn trong trường hợp đó) giữa hai nơi. Điều này cũng làm mất hiệu lực của các dòng dài hơn bởi vì chúng có xu hướng xảy ra không thường xuyên hơn. Logic tương tự xuất phát từ các bản đồ Value-by-Alpha cho các khu vực đa giác (Roth và cộng sự, 2010) đã được đề cập trên diễn đàn này trước đây .

Bản đồ khác mà tôi trình bày trong cùng một câu trả lời sử dụng màu sắc và một đường viền phối cảnh 3d phi truyền thống (Ratti et al., 2010). Các tác giả đã sử dụng một tiêu chí phân cụm để nhóm các khu vực đồng nhất lại với nhau và mã màu cho chúng (vì vậy theo định nghĩa, các khu vực trong màu có nhiều kiểu dòng chảy tương tự hơn giữa các màu). Các tiêu chí phân cụm trong bản thân nó có thể rất thú vị để xác định các mẫu trong dữ liệu, mặc dù có vẻ như có vấn đề với điều này, như Andrew Gelman đã đề cập , là nó cho bạn biết khá nhiều những gì bạn đã biết, gần nhau hơn có xu hướng có nhiều kết nối hơn.

Cuối cùng, trong danh mục này, tôi bao gồm các kỹ thuật cân trọng lượng của các dòng (tương tự như pha trộn alpha) bằng cách sử dụng chiều rộng của dòng hoặc trong trường hợp chiều cao của dòng phối cảnh 3d, để truyền tải âm lượng của dòng chảy. Xem trang trên trang phần mềm lập bản đồ dòng chảy của Tobler để biết một số ví dụ trong 2d (và bài viết khác tôi đã đề cập là một ví dụ trong 3d sử dụng chiều cao dòng). Cũng trên trang đó, Tobler có một bài viết rất hữu ích mô tả các vấn đề với sơ đồ và ứng dụng lịch sử của họ (Tobler, 1987).

Một ví dụ khác trong 3d là câu trả lời này của một nhân vật trên trang web này. Bài đăng này trên blog hình ảnh xã hội học cho thấy một cách hữu ích trong sơ đồ luồng để phân biệt giữa luồng vào và luồng ra (mặc dù một lần nữa nó hoạt động vì số lượng nút và tương đối nhỏ, và các nút trên mạng có thể được đặt trong một cách tùy tiện để giảm quá mức). Những loại mũi tên tương tự (và một vài loại khác sử dụng hàm băm) cũng có trong (Tobler, 1987).

Cuối cùng, mặc dù chiều rộng và màu sắc không thực sự giải quyết được vấn đề quá âm mưu. Các cung trong 3d giúp phần nào, mặc dù với các mẫu luồng phức tạp hơn tôi nghĩ chúng sẽ có tiện ích hạn chế. Pha trộn IMO alpha dường như hữu ích nhất trong nhiều tình huống của ba tình huống này, nhưng màu sắc và độ rộng đường có thể / nên được sử dụng cùng với biến dạng đường được đề cập ở trên.

Giảm dữ liệu

Tôi nhóm hai loại kỹ thuật ở đây, 1) sử dụng nhiều bản đồ nhỏ (nghĩa là nhiều bản đồ có ít đối tượng vốn có để trực quan hóa để giảm quá mức), hoặc 2) các biểu diễn đồ họa khác, không phải là đường, nhưng đại diện cho một số dòng chảy qua mật độ hoặc bản đồ choropleth. Ví dụ về những điều này có thể được tìm thấy trong (Corcoran et al., 2009; Rae, 2009; Wood et al., 2010) (nhờ iant cho tài liệu tham khảo Rae). Những điều này có xu hướng làm giảm lượng thông tin hình ảnh được trình bày bằng cách trình bày một loạt nhiều bản đồ nhỏ (hoặc chỉ là một khu vực nhỏ hơn) hoặc sử dụng sơ đồ ánh xạ choropleth để thể hiện một số thống kê (ví dụ có thể là số lượng dòng chảy, số lượng dòng chảy , hướng của dòng chảy, khoảng cách trung bình của dòng chảy). Nếu bạn có dữ liệu cấp điểm, bạn có thể biểu diễn các thống kê này thông qua các bản đồ raster mật độ hạt nhân hoặc tổng hợp chúng thành các hình tứ giác.

Khi thông tin bị giảm như thế này, việc đặt quá nhiều không phải là vấn đề. Một ví dụ trực tuyến tương tác rất hay là bản đồ di chuyển này của tạp chí Forbes . Bạn chỉ có thể nhìn thấy một quận tại một thời điểm, nhưng việc giảm thông tin giúp phân tích các dòng dễ dàng hơn nhiều (và sự khác biệt giữa dòng vào và luồng ra). Một bài đăng gần đây trên blog lập bản đồ ESRI cũng sử dụng một kỹ thuật tương tự với các bội số nhỏ (họ cũng chọn một phép chiếu cụ thể cho bản đồ thế giới để có các đường "đẹp mắt" và sử dụng màu sắc tốt để làm nổi bật hơn các nguồn gốc quốc tế khác nhau). Trong ví dụ đó, nó hoạt động khá tốt vì đích đến giống nhau cho tất cả các luồng, nhưng nếu các luồng có thể có đi có lại thì có lẽ nó cũng sẽ không hoạt động.

Sử dụng các biểu diễn phi bản đồ khác

Những người khác trên trang web này đã đề xuất sử dụng các sơ đồ thay thế cho bản đồ thực tế để thể hiện các luồng (chỉ ánh xạ nguồn gốc và điểm đến theo một cách khác ngoài vị trí địa lý thực tế của chúng). Các ví dụ trong số này là hình ảnh trực quan (như được tạo bởi Circos ), sơ đồ cung tròn (xem ví dụ này trên Protovis, chúng còn được gọi là kriskograms (Xiao & Chun, 2009)) hoặc bản đồ nhiệt ma trận ( đây là một ví dụ khác từ Trang web nguyên sinh). Một tùy chọn khác là sử dụng một số loại bố cục mạng tự động để xác định các mẫu trong các luồng (chẳng hạn như có khả năng của Graphviz ). Bên cạnh Graphviz, nó xuất hiện Gephi, thư viện python NetworkX và một số thư viện R cũng là các công cụ phổ biến (xemcâu trả lời này trên trang thống kê).

Các thư viện tôi trích dẫn là khá tuyệt vì họ cũng đã phát triển trực quan tương tác. Dưới đây là một ví dụ với kiểu dáng tương tự đồ họa hình tròn (mặc dù không phải hình tròn!). Dưới đây là một hình ảnh tương tác khác sử dụng một số kỹ thuật méo dòng đã thảo luận trước đó, vị trí mạng (xuất hiện tương tự như biểu đồ Dorling tròn) cũng như các tóm tắt thống kê hữu ích khác (tôi đã thấy cả hai ví dụ ban đầu trên blog thẩm mỹ thông tin ).


Một số tài nguyên khác tôi nghĩ là hữu ích là phần mềm và bài viết đến từ Phòng thí nghiệm khai thác dữ liệu không gian và Visual Analytics Lab . Ngoài ra, mô hình hóa nhu cầu du lịch tội phạm trong chương trình CrimeStat là một giới thiệu nhẹ nhàng về các kỹ thuật hồi quy áp dụng cho dữ liệu dòng chảy như vậy. Một trong hai công cụ này có thể cho phép bạn xác định mối tương quan thú vị trong các mẫu luồng với thông tin địa lý khác. Một nơi khác có lẽ nhận được một số cảm hứng hữu ích cho việc hiển thị dữ liệu hoặc phân tích thống kê bằng đồ họa sẽ là một vấn đề gần đây của Tạp chí Thống kê tính toán và đồ họa, Tập 20 Số 2, về việc kiểm tra số liệu thống kê chuyến bay đến / đi của các hãng hàng không thương mại tại Hoa Kỳ từ năm 1987 đến 2008 (nếu bạn quan tâm đến việc xử lý dữ liệu lớn thì điều này cũng đáng để kiểm tra). Tất cả các bài viết là miễn phí và họ có áp phích liên kết với mỗi bài.

Cuối cùng, dữ liệu và phương tiện sẽ cho biết một số kỹ thuật này hoạt động tốt như thế nào trong việc giảm sự lộn xộn thị giác đi kèm với dữ liệu dòng chảy. Tôi hy vọng đây là một nơi hữu ích để tìm ý tưởng về cách giải quyết vấn đề hình dung này. Nếu bạn tiếp tục tinh chỉnh câu hỏi của mình vào những gì bạn muốn thực hiện, thì những người khác có thể đưa ra phản hồi hữu ích vào việc triển khai chương trình thực tế (nếu có gì đó chưa có sẵn).


Trích dẫn

* lưu ý, liên kết đến các tài liệu pdf chưa được bao gồm khi tôi có thể tìm thấy


2
Tôi hiện đã bỏ qua bất kỳ đồ họa nào, nhưng nếu được yêu cầu tôi có thể bao gồm bất kỳ nếu mọi người muốn xem các ví dụ mà không phải theo các liên kết.
Andy W

Wow !! ... Hoàn thành với trích dẫn! Nếu tôi có thể bỏ phiếu hai lần, tôi sẽ! Câu trả lời tuyệt vời, anh bạn :)
R Thiede

Hiện tại tôi đã tìm thấy một hình ảnh tương tác khá thú vị khác bằng cách sử dụng giảm dữ liệu (và các đường tròn tuyệt vời), Tìm hiểu thành phố nào của Hoa Kỳ phổ biến nhất trong số các thợ săn nhà quốc tế thông qua blog Trulia Insights.
Andy W

5

Có một thủ tục tốt đẹp ở đây , bởi chính cơ sở của chúng ta.

Về cơ bản, quy trình diễn ra như sau: - từ chối các điểm bạn muốn đường thẳng nằm giữa, - lấy một đường thẳng được vẽ giữa chúng, - chia đường thẳng đó thành x số lượng mảnh và cuối cùng - chiếu đường chia nhỏ trở lại ban đầu của bạn hình chiếu.

Tôi đã ngừng sử dụng Arc vì nó tốn tiền, nhưng để thủ tục này hoạt động, tôi không nghĩ bạn cần phải trả cho ESRI bất kỳ khoản hối lộ nào để cung cấp cho bạn chức năng cơ bản. Ý tôi là, tôi không nghĩ bạn cần mua bất kỳ "tiện ích mở rộng" nào. Mặc dù vậy, tôi đang nói về sự điều chỉnh, bởi vì tôi không tích cực về việc phân chia một dòng có phải là một phần của Nhà phân tích không gian hay không. Có lẽ một số ESRIcally nghiêng hơn có thể giúp tôi ra khỏi đây? :)


1
Bạn đã từng không thể thực hiện các đường cong thực sự với ArcView, nhưng ArcView đã có thể thực hiện các đường cong thực sự kể từ phiên bản 9 bây giờ.
blord-castillo


2

Bạn có thể bắt đầu tạo các polylines hấp dẫn trực quan từ hai điểm trên bản đồ bằng phương pháp vòng tròn lớn. Hãy xem http://www.esri.com/software/arcgis/defense-solutions/military-analyst.html - Nhà phân tích quân sự. Nên có những gì bạn đang tìm kiếm!


Tôi không còn kịp tăng tốc trên Arc nữa, nhưng không thể làm điều này với một số lời chê trách? Bởi vì Nhà phân tích quân sự có thể sẽ khiến bạn mất tiền ...
R Thiede

Tôi không tin rằng giải pháp này sẽ làm việc dù sao, như mức độ bản đồ của tôi sẽ là khoảng 40 dặm. Tôi tin rằng điều này có thể hoạt động nếu nó ở quy mô của một lục địa.
Pixel

Nhà phân tích quân sự là miễn phí @RThiede Có, Nó sẽ hoạt động tốt hơn ở mức độ lớn hơn. Tuy nhiên, bạn có thể chỉnh sửa các dòng sau khi chúng được tạo để cung cấp cho bạn những gì bạn muốn (vì chúng sử dụng các đường cong bezzier để tạo ra hàng trăm điểm dọc theo đường đa giác để tạo đường cong)
Michael Markieta

Tôi có thể dễ dàng chỉnh sửa các dòng để có được các cung mà tôi muốn, nhưng như bài đăng của tôi cho thấy tôi đang sử dụng Python để tự động hóa quá trình này. Cảm ơn vì bạn đã phản hồi!
Pixel
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.