Próbuję zrobić rysunek przedstawiający dane azymutalne z innym zakresem niepewności w każdym punkcie. Ta oldschoolowa postać z gazety z 1991 roku oddaje ideę „fabuły muszki”, do której dążę:
Wszelkie sugestie, w jaki sposób mogę zrobić podobną liczbę? Jestem względnym nowicjuszem w GIS, ale mam dostęp do ArcGIS przez mój uniwersytet. Moje doświadczenie Arc jest ograniczone do tworzenia map geologicznych, więc nie musiałem robić nic zbyt egzotycznego.
Przeszukiwałem opcje symboli w Arc i QGIS, ale nie widziałem żadnych ustawień, które według mnie byłyby odpowiednie. Zauważ, że nie chodzi tylko o obracanie symboli w kształcie muszki o azymut; zakres kątowy każdego „muszki” musi być inny.
Chciałbym ocenić moje umiejętności Python jako „silne pośredni” i moich umiejętności R jak „niska pośrednia”, więc nie jestem przeciwny hacking coś razem z matplotlib
i mpl_toolkits.basemap
lub podobnych bibliotek w razie potrzeby. Ale pomyślałem, że zasięgnę porady tutaj, zanim pójdę tą drogą, na wypadek, gdyby było łatwiejsze rozwiązanie z GIS-landu, o którym po prostu nie słyszałem.
źródło
100->120
wraz z równoważnym zakresem 180 stopni na180->200
Odpowiedzi:
Wymaga to pewnego rodzaju „obliczenia pola”, w którym obliczona wartość (oparta na szerokości i długości geograficznej, azymucie centralnym, niepewności i odległości) jest kształtem muszki, a nie liczbą. Ponieważ takie możliwości obliczania pól były znacznie utrudnione przy przejściu z ArcView 3.x do ArcGIS 8.x i nigdy nie zostały w pełni przywrócone, obecnie używamy skryptów w Pythonie, R itp., Ale proces myślowy jest nadal podobnie.
Zilustruję działającym
R
kodem. U ich podstaw leży obliczenie kształtu muszki, który dlatego enkapsulujemy jako funkcję. Ta funkcja jest naprawdę bardzo prosta: aby wygenerować dwa łuki na końcach łuku, należy wyśledzić sekwencję w regularnych odstępach czasu (azymutu). Wymaga to zdolności do znalezienia współrzędnych (lon, lat) punktu na podstawie początkowej (lon, lat) i pokonanej odległości. Odbywa się to z podprogramemgoto
, w którym odbywa się wszystkie ciężkie arytmetyczne podnoszenie. Reszta przygotowuje wszystko do zastosowania,goto
a następnie stosuje.Ma to zostać zastosowane do tabeli, której rekordy musisz już mieć w jakiejś formie: każda z nich podaje położenie, azymut, niepewność (jako kąt z każdej strony) i (opcjonalnie) wskazanie, jak duże jest wykonanie muszka. Symulujmy taki stół, umieszczając 1000 muszek na całej półkuli północnej:
W tym momencie rzeczy są prawie tak proste, jak każde obliczenie pola. Oto on:
(Testy czasowe wskazują, że
R
może wytwarzać około 25 000 wierzchołków na sekundę. Domyślnie dla każdego stopnia azymutu istnieje jeden wierzchołek, który można ustawić za pomocąeps
argumentu dobowtie
.)Możesz wykonać prosty wykres wyników
R
sam w sobie jako kontrolę:Aby utworzyć plik wyjściowy shapefile do importowania do GIS, użyj
shapefiles
pakietu:Teraz możesz wyświetlać wyniki itp. W tym przykładzie wykorzystano stereograficzną projekcję półkuli północnej, a muszki są zabarwione kwantylami niepewności. (Jeśli przyjrzysz się bardzo uważnie długości geograficznej 180 / -180 stopni, zobaczysz, gdzie GIS przeciął muszki, które przecinają tę linię. Jest to powszechna wada w przypadku GISes; nie odzwierciedla błędu w samym
R
kodzie.)źródło