Tworzenie łuków między dwoma punktami w ArcPy?

11

Pracowałem nad skryptem Pythona automatyzującym wizualizację danych punktów na żywo. Mam stół z dwiema parami współrzędnych. Chciałbym połączyć te dwa punkty z łukiem koła lub podobnym (parabola ??).

Udało mi się połączyć dwa punkty prostą linią, ale daje mi to nudny obraz.

Jedną z głównych przeszkód jest mój poziom licencji: ArcView.

Czy ktoś ma pojęcie, w jaki sposób mogę wygenerować zestaw punktów reprezentujących ścieżkę linii między tymi dwoma punktami?

Następnie mogę użyć polecenia punktów do polilinii.

Piksel
źródło
5
Tak naprawdę nie podajesz wystarczającej ilości informacji: „popraw nudny obraz” nie jest ani konkretnym, ani dobrym stwierdzeniem problemu. Ale może uda ci się zdobyć pomysły z podobnego wątku na gis.stackexchange.com/questions/5204/… .
whuber
1
Czy jednocześnie oglądasz wiele linii, czy tylko jedną (lub kilka) na raz?
Andy W
Numer punktu może wynosić od 2 do około 50.
Pixel

Odpowiedzi:

28

Wydaje się, że najczęstszym problemem związanym z tego rodzaju „mapami przepływu” jest to, że gdy dołączonych jest wiele linii, kolidują one w tak dużym stopniu, że utrudnia to dostrzeżenie nieoczywistego wzorca (gdy uważa się, że występują wzajemne przepływy jeszcze większy zakres). Również długie linie zwykle dominują na grafice, chociaż jest całkiem możliwe, że rozkład przepływów jest przeważnie na krótkich przestrzeniach (na przykład wiele różnych rozkładów między miejscami jest zwykle podobnych do lotów Levyego ). Przypuszczam, że niekoniecznie jest to zła rzecz (długie linie mogą być z natury bardziej interesujące niż krótkie linie dla wielu zjawisk), ale nie sądzę, że chcemy, aby tak powiem, stracić las dla drzew.

Chociaż nie wątpię, że przegapiłem niektóre potencjalne „rozwiązania”, które zostały zaproponowane, postaram się podsumować niektóre sposoby, w jakie ludzie próbowali rozwiązać problem w pracy, z którą się spotkałem.

Zniekształcanie linii

Jeśli przejrzysz niektóre inne wątki na widoku, zobaczysz przykłady tego, jak ludzie poradzili sobie z tym problemem. W szczególności linie są zniekształcone, aby nie nakładały się na siebie ani na inne obiekty na mapie. Odpowiedź Whubera na inne podobne pytanie (wspomniane już w komentarzu) jest tego przykładem. Prezentacja przez niektórych badaczy ze Stanford pokazuje ten sam pomysł (Phan i wsp., 2005). Dziękujemy za tę prezentację dla dslamb za tę odpowiedź w innym wątku (wszystkie odpowiedzi na ten wątek również będą interesujące dla twojego pytania). Szczególnie interesuje mnie to, że jednym z głównych przykładów tego jest stara mapa imigracyjna Minarda, która jest przykładem pożądanego wyniku (około 1864 roku!).

Biorąc pod uwagę konkretny przypadek użycia (niewielka liczba węzłów i linii), wydaje się to wystarczające. Inne „rozwiązania”, które przedstawiam, mają bardziej na celu wizualizację danych z wieloma liniami i wieloma źródłami-miejscami docelowymi (chociaż zakładam, że będą one przydatnymi podsumowaniami dla całej społeczności, więc kontynuuję niezależnie).

Korzystanie z mieszania alfa, koloru i szerokości / wysokości linii

Mapy, które wymieniłem w tym samym wątku, co wcześniej zauważyłem, Reprezentacja przepływów sieciowych są ich przykładami. Znajomi z Facebooka to dobry przykład na dostosowanie poziomu alfa linii, więc potrzeba znacznie więcej przepływów, aby przedstawić ciemniejsze (lub jaśniejsze w tym przypadku) połączenie między dwoma miejscami. Podkreśla to również dłuższe linie, ponieważ zdarzają się one rzadziej. Podobna logika wynika z map Value-by-Alpha dla obszarów wielokątów (Roth i in., 2010), o których wcześniej wspomniano na tym forum .

Druga mapa, którą przedstawiam w tej samej odpowiedzi, używa kolorów i nietradycyjnych łukowych linii perspektywy 3D (Ratti i in., 2010). Autorzy zastosowali kryteria grupowania do grupowania jednorodnych obszarów i kodowania ich kolorem (więc z definicji obszary w kolorze mają bardziej podobne wzory przepływu niż między kolorami). Kryteria klastrowania same w sobie mogą być interesujące w celu zidentyfikowania wzorców w danych, chociaż wydaje się, że prawdopodobnym problemem z tym, jak wspomniał Andrew Gelman , jest to, że mówi ci prawie to, co już wiesz, że zbliża się do siebie zwykle mają więcej połączeń.

Wreszcie, w tej kategorii I obejmują techniki, które ważą linie (podobnie jak mieszanie alfa) przy użyciu szerokości linii lub, w przypadku wysokości linii perspektywy 3D, w celu przeniesienia objętości przepływu. Zobacz stronę na stronie oprogramowania do mapowania przepływu Toblera, aby znaleźć przykłady w 2d (a inny artykuł, o którym wspomniałem, to przykład w 3d z wykorzystaniem wysokości linii). Również na tej stronie Tobler ma bardzo przydatny artykuł opisujący problemy z mapowaniem przepływu i ich historycznym zastosowaniem (Tobler, 1987).

Innym przykładem w 3d jest ta odpowiedź autorstwa mankoffa na tej stronie. Ten post na blogu obrazów socjologicznych pokazuje użyteczny sposób na schemacie blokowym do rozróżnienia wpływów i wypływów (chociaż znowu działa, ponieważ liczba węzłów i stosunkowo mała, a węzły w sieci można rozłożyć na arbitralny sposób ograniczenia nadmiernego plotowania). Te same typy strzałek (i kilka innych używających skrótów) również znajdują się w (Tobler, 1987).

W końcu szerokość i kolor linii tak naprawdę nie rozwiązują problemu nadmiernego drukowania. Łuki w 3d nieco pomagają, chociaż myślę, że przy bardziej skomplikowanych wzorcach przepływu będą miały ograniczoną użyteczność. Mieszanie alfa IMO wydaje się najbardziej przydatne w wielu różnych sytuacjach z tych trzech, ale kolor i szerokość linii można / należy stosować w połączeniu ze wspomnianym powyżej zniekształceniem linii.

Redukcja danych

Grupuję tutaj dwa rodzaje technik: 1) przy użyciu małych wielu map (tj. Wiele map z natury mniejszą liczbą obiektów do wizualizacji, tak że nadmierne drukowanie jest zmniejszone), lub 2) inne reprezentacje graficzne, które nie są liniami, ale reprezentują niektóre przepływy poprzez gęstość lub mapy choropleth. Przykłady można znaleźć w (Corcoran i in., 2009; Rae, 2009; Wood i in., 2010) (dzięki iant w odniesieniu do Rae). Mają one tendencję do zmniejszania ilości prezentowanych informacji wizualnych poprzez prezentację serii małych wielu map (lub po prostu mniejszego obszaru) lub użycie schematu mapowania choropleth do przedstawienia niektórych statystyk (przykładami mogą być liczba wpływów, liczba odpływów , kierunek przepływów, średnia odległość przepływów). Jeśli masz dane na poziomie punktów, możesz reprezentować te statystyki za pomocą map rastrowych gęstości jądra lub agregować je w kwadraty.

Gdy informacja jest zmniejszona w ten sposób, nadmierne drukowanie nie stanowi tak dużego problemu. Bardzo fajnym interaktywnym przykładem online jest mapa migracji magazynu Forbes . Możesz zobaczyć tylko jeden okręg na raz, ale redukcja informacji znacznie ułatwia parsowanie linii (i różnicę między wpływami i wypływami). Niedawny post na blogu poświęconym mapowaniu ESRI również stosuje podobną technikę z małymi wielokrotnościami (wybierają też konkretną projekcję mapy świata, aby mieć „ładnie wyglądające” linie i dobrze wykorzystują kolor, aby dodatkowo podkreślić różne pochodzenie międzynarodowe). W tym przykładzie działa całkiem nieźle, ponieważ miejsce docelowe jest takie samo dla wszystkich przepływów, ale jeśli przepływy mogłyby być wzajemne, prawdopodobnie również by się nie udało.

Korzystanie z innych nie-mapowych reprezentacji przepływów

Inni na tej stronie zasugerowali użycie alternatywnych schematów do rzeczywistej mapy w celu przedstawienia przepływów (po prostu odwzorowanie początków i miejsc docelowych w inny sposób niż ich rzeczywiste położenie geograficzne). Przykładami są albo konkretne wizualizacje (takie jak te stworzone przez Circos ), diagramy łukowe (patrz ten przykład na Protovis, są one również nazywane kriskogramami (Xiao i Chun, 2009)) lub mapy ciepła macierzy ( tutaj jest inny przykład z Strona Protovis). Inną opcją byłoby użycie pewnego rodzaju zautomatyzowanego układu sieci do identyfikowania wzorców w przepływach (takich jak te, które umożliwia Graphviz ). Oprócz Graphviz pojawia się Gephi, biblioteka Pythona NetworkX i niektóre biblioteki R są również popularnymi narzędziami (patrzta odpowiedź na stronie statystyk).

Biblioteki, które cytuję, są całkiem fajne, ponieważ opracowały również interaktywne wizualizacje. Oto przykład w stylu podobnym do grafiki okrągłej (choć nie okrągłej!). Oto kolejna interaktywna wizualizacja wykorzystująca niektóre z wcześniej omówionych technik zniekształceń linii, rozmieszczenie sieci (które wydaje się podobne do okrągłych kartogramów Dorlinga), a także inne przydatne podsumowania statystyczne (oba te przykłady widziałem pierwotnie na blogu estetyki informacji ).


Inne zasoby, które moim zdaniem są użyteczne, to oprogramowanie i artykuły pochodzące z Spatial Data Mining i Visual Analytics Lab . Również popyt podróży przestępstwo modelowania w programie CrimeStat jest delikatne wprowadzenie do stosowanych technik regresji dla tych danych przepływowych. Każde z tych narzędzi może pozwolić ci zidentyfikować interesujące korelacje we wzorcach przepływu z innymi informacjami geograficznymi. Innym miejscem, w którym być może można znaleźć jakąś przydatną inspirację do graficznego wyświetlania danych lub analizy statystycznej, byłby ostatni numer w Journal of Computational and Graphical Statistics, tom 20, wydanie 2, w sprawie analizy statystyk przylotów / odlotów przewoźników komercyjnych w USA w latach 1987–2008 (jeśli jesteś zainteresowany przetwarzaniem dużych zbiorów danych, warto to również zbadać). Wszystkie artykuły są bezpłatne i mają powiązane plakaty z każdym artykułem.

Na koniec dane i medium będą decydować o tym, jak dobrze niektóre z tych technik działają w zmniejszaniu bałaganu wzrokowego, który towarzyszy danych przepływu. Mam jednak nadzieję, że jest to przydatne miejsce do znalezienia pomysłów na rozwiązanie tego problemu wizualizacji. Jeśli dopracujesz swoje pytanie w kwestii tego, co chcesz osiągnąć, inni mogą udzielić przydatnych informacji zwrotnych na temat rzeczywistych implementacji programowych (jeśli coś nie jest jeszcze dostępne).


Cytowania

* uwaga, kiedy mogłem znaleźć, są dołączone linki do niepowiązanych dokumentów pdf

Andy W.
źródło
2
Obecnie pominąłem grafikę, ale na życzenie mogę ją dołączyć, jeśli ludzie chcą zobaczyć przykłady bez konieczności podążania za linkami.
Andy W
Wow !! ... W komplecie z cytatami! Gdybym mógł głosować dwa razy, zrobiłbym to! Niesamowita odpowiedź, stary :)
R Thiede
Obecnie znalazłem kolejną całkiem fajną interaktywną wizualizację z wykorzystaniem redukcji danych (i wielkich linii kół). Dowiedz się, które miasto w USA jest najbardziej popularne wśród międzynarodowych łowców domów za pośrednictwem bloga Trulia Insights.
Andy W
5

Jest ładny procedura tutaj , przez naszego własnego Podmroku.

Zasadniczo procedura przebiega następująco: - ponownie rzutuj punkty, między którymi ma znajdować się linia, - narysuj linię prostą między nimi, - podziel tę linię na x liczby kawałków, a na koniec - rzutuj podzieloną linię z powrotem na oryginał występ.

W pewnym sensie przestałem używać Arc, ponieważ kosztuje to pieniądze, ale aby ta procedura zadziałała, nie sądzę, że musisz płacić ESRI dodatkowe łapówki, aby zapewnić ci podstawową funkcjonalność. To znaczy, nie sądzę, że musisz kupować jakieś „rozszerzenia”. Mówię jednak z poprawką, ponieważ nie jestem pewien, czy podział linii jest częścią Spatial Analyst. Być może niektórzy bardziej skłonni do ESRIcally mogą mi pomóc tutaj? :)

R Thiede
źródło
1
Kiedyś nie było możliwe tworzenie prawdziwych krzywych za pomocą ArcView, ale ArcView jest w stanie wykonywać prawdziwe krzywe od wersji 9 teraz.
blord-castillo
2

Możesz zająć się tworzeniem atrakcyjnych wizualnie polilinii z dwóch punktów na mapie przy użyciu metody wielkiego koła. Sprawdź http://www.esri.com/software/arcgis/defense-solutions/military-analyst.html - analityk wojskowy. Powinieneś mieć to, czego szukasz!

Michał Markieta
źródło
Nie jestem już wystarczająco szybki w Arc, ale czy nie można tego zrobić z kilkoma powtórkami? Ponieważ Wojskowy Analityk prawdopodobnie będzie cię kosztował ...
R Thiede
Nie sądzę, aby to rozwiązanie i tak działało, ponieważ zasięg mojej mapy będzie wynosił około 40 mil. Wierzę, że to może zadziałać, gdyby było na skalę kontynentu.
Pixel
Military Analyst jest bezpłatny @RThiede Tak, działałby lepiej w większym zakresie. Jednak możesz być w stanie edytować linie po ich utworzeniu, aby dać ci to, czego chcesz (ponieważ używają krzywych bezziera do wytworzenia setek punktów wzdłuż polilinii, aby utworzyć krzywą)
Michael Markieta
Mogę z łatwością edytować wiersze, aby uzyskać łuki, których chcę, ale jak wskazał mój post, używam Pythona do automatyzacji tego procesu. Dzięki za opinie!
Pixel