Mam nadzieję, że będzie to interesujące pytanie. Pracuję nad zleceniem wprowadzenia do kursu GIS, który wykorzystuje niektóre dane o wycieku ropy z Zatoki Perskiej, aby wprowadzić typowe metody analizy przestrzennej oparte na wektorze (bufory, nakładki itp.) Mam klasę cech wielokąta, która trzyma granice wyciek oleju Deepwater Horizon w danym dniu, a ja symuluję jego ekspansję za pomocą buforów.
Zadanie polega na zilustrowaniu koncepcji, ale z pewnością nie zapewnia realistycznych rezultatów. Zmusiło mnie do zastanowienia się, jak można to zrobić w sposób zapewniający mniej jednolite wyniki, naśladując / udając działanie prądów kierujących olej w różnych kierunkach podczas jego rozszerzania.
Ogólnie rzecz biorąc, szukam przepływu pracy, który osiągnąłby następujące wyniki, biorąc pod uwagę wejściową funkcję wielokąta:
- Utwórz nowy element wielokąta, który jest większy od oryginału o określony obszar (np. 10 km kw.) Lub może określony współczynnik (np. 5%)
- Nowa funkcja wielokąta miałaby dowolny kształt, z zastrzeżeniem, że ...
- Nowa funkcja wielokąta zawierałaby oryginalną funkcję wielokąta (ten punkt nie jest przełomowy, ale dobrze byłoby mieć)
Każde rzeczywiste rozwiązanie musiałoby obejmować modelowanie prądów oceanicznych, dynamikę płynów itp., Co wykracza poza zakres tego, co próbuję zrobić (chociaż rozwiązania, które to uwzględniają, są z pewnością mile widziane i byłyby interesujące do zobaczenia), ale ten pomysł wzbudził moją ciekawość na temat leżącego u podstaw problemu przestrzennego i jestem ciekawy, jakie są dostępne rozwiązania. Mam na myśli jedno rozwiązanie, ale chciałbym usłyszeć, jakie rozwiązania mogą mieć inni.
Pracuję w świecie ESRI, ale rozwiązania, które dotyczą innych pakietów / platform, są z pewnością mile widziane (choć mogę ich nie przetestować). Ogólne algorytmy, pseudokod i kod są również w porządku.
Odpowiedzi:
Halo
Tutaj myślę, że to fajny sposób na zrobienie tego w PostGIS. Myślę, że można to rozszerzyć, aby rozszerzenie następowało po pewnym linijce reprezentującej prąd. Ale teraz rozszerza się tylko w jednym kierunku.
Wykonuje iterację 50 razy i dla każdej iteracji pobiera wielokąt z ostatniej iteracji, przesuwa go, buforuje (upraszcza, aby wszystko działało płynniej) i łączy go z wypukłym kadłubem. Myślałem, że wypukły daje lepszy wynik niż połączenie.
W rezultacie powstaje 50 wielokątów, które stają się coraz większe. Każde większe wielokąty całkowicie nachodzą na wszystkie mniejsze wielokąty.
Aby zobaczyć wynik, możesz spróbować na http://postgisonline.org/map.php
Po prostu skopiuj poniższy kod SQL i kliknij „map1”
Z REKURSYWNYM t (the_geom, n) AS (WYBIERZ „POLYGON ((10 10,8 13, 10 15, 12 14, 15 15, 16 12, 15 10, 10 10))” :: geometria AS the_geom, 1 as n UNION ALL SELECT ST_Convexhull (ST_Collect (ST_Simplify (ST_Buffer (ST_Transscale (the_geom, 1.3, 2.7,1,1), 1), 0.1), the_geom)), n + 1 as n OD t GDZIE n <50) WYBIERZ ten argument od t ;
Jeśli chcesz tylko zobaczyć wielokąt z 30-tej iteracji, możesz dodać
limit 1 przesunięcia 30
między ti średnikiem na końcu
generowanie tych 50 wielokątów zajmuje około 50 ms, więc powinno być możliwe rozwinięcie modelu bez zbytniego oczekiwania.
Pozdrawiam Nicklas
Myślę, że ten był jeszcze ładniejszy:
Z REKURSYWNYM t (the_geom, n) AS (WYBIERZ „POLYGON ((10 10,8 13, 10 15, 12 14, 15 15, 16 12, 15 10, 10 10))” :: geometria AS the_geom, 1 as n UNION ALL SELECT st_convexhull (ST_collect (ST_Simplify (ST_Buffer (ST_Transscale (the_geom, 1.1 * n, 15,1,1), 0,2 * n), 0,1), the_geom)), n + 1 as n OD T GDZIE n <50) Wybierz the_geom FROM t
symulacja rozszerzenia skręca w prawo
źródło
zastrzeżenia Whubera są ważne i tak długo, jak robisz to wyłącznie w celach ilustracyjnych i nie chcesz angażować się w dynamikę płynów, co jest możliwe, ale komplikuje problem.
To powiedziawszy, uważam, że jest to interesujące pytanie i może być zabawą dla studentów. Innym sposobem spojrzenia na problem jest myślenie o nim jako zjawisku opartym na rastrze, z gęstością oleju mierzoną w każdej komórce. Stamtąd można użyć modelu uwzględniającego ansiotropię, takiego jak
r.spread
( dokumentacja ), aby modelować tempo wzrostu, być może włączając sztuczne prądy do „kierowania” spreadem. Podobnie możesz zrobić coś z różnymi rodzajami operacji ogniskowych w ArcGIS, używając nieregularnych kształtów, aby obejść problemy z buforowaniem liniowym.źródło
Myślę, że kusiłoby mnie, aby uzyskać cechy wektorowe reprezentujące prądy i użyć ich jako wektorów sterujących w operacji wypaczania. Kluczem byłoby prawidłowe skalowanie wektorów, tak aby naśladować rozpiętość jednego dnia.
Zgadzam się z Andym W, że upuszczenie granicy na punkty może być warunkiem wstępnym. Konieczne może być również zagęszczenie liczby punktów, aby uzyskać dokładny wynik.
Obawiam się, że nie jestem pewien, jak wypaczasz się w świecie ESRI. Wiem, że rozszerzenie Data Interop by to zrobiło, ale przypuszczam, że musi istnieć albo wbudowana metoda, albo rozszerzenie specjalnie do tego rodzaju rzeczy.
źródło
Nie zdziwiłbym się, gdyby ktoś faktycznie przeprowadził podobne symulacje, ale oto, jak myślę, podszedłbym do projektu (nie mając wcześniejszej wiedzy na temat procesów oceanicznych, które rozproszyłyby wyciek ropy).
Jeśli chcesz ściśle pracować z wielokątami, podzieliłbym twoją granicę na z góry określoną liczbę punktów. Korzystając z tych punktów, przedstawiłbym wasze symulacje, z elementami stochastycznymi w odniesieniu do kierunku ekspansji i odległości ekspansji (w ustalonych rozsądnych granicach), powtarzam te kroki tyle razy, ile to konieczne. Następnie ponownie wykonaj wypukły kadłub wszystkich punktów na podstawie nowych lokalizacji (jeśli chcesz, aby zawsze zawierał poprzedni wielokąt, będziesz musiał ograniczyć ekspansję na zewnątrz). W przypadku wstępnego kursu GIS prawdopodobnie wyobrażam sobie kilka różnych możliwych iteracji, biorąc pod uwagę te elementy stochastyczne.
Również nieco inne podejście, myślę, że wizualizacja oleju jako czynników w symulacji może być całkiem fajna. Na przykład dla każdej rozlanej surowej baryłki oleju stwórz nowy środek, a następnie dodaj te same elementy stochastyczne, jak powiedziałem wcześniej. Możesz wizualizować ekspansję agentów w czasie w Zatoce Perskiej lub wizualizować gęstość ropy naftowej w czasie.
To brzmi jak naprawdę fajny projekt i publikuj zdjęcia po zakończeniu.
źródło
Aby zilustrować różnorodność wyników, jakie może wywołać takie pytanie, przedstawię rozwiązanie burzy mózgów, kiedy zamieściłem pytanie. Mam nadzieję, że uda mi się go wdrożyć w ciągu najbliższych kilku dni i opublikuję go, gdy to zrobię.
Prawdopodobnie nie jest to najbardziej efektywny sposób, ale powinien działać. Pomysł opiera się na ćwiczeniach modelowania wzrostu miejskiego, które wykonuje klasa wyższa. Ich losowy raster jest tworzony w oparciu o przydatność do wzrostu i nie mają ograniczeń obszarowych, ale część losowego wzrostu jest zasadniczo taka sama.
źródło