Mam tysiące wielokątów zapisanych w formacie tabeli (z uwzględnieniem ich 4 współrzędnych narożnych), które reprezentują małe obszary ziemi. Ponadto każdy wielokąt ma wartość danych. Plik wygląda na przykład tak:Podział danych: nieregularne wielokąty na regularną siatkę
lat1, lat2, lat3, lat4, lon1, lon2, lon3, lon4, data
57.27, 57.72, 57.68, 58.1, 151.58, 152.06, 150.27, 150.72, 13.45
56.96, 57.41, 57.36, 57.79, 151.24, 151.72, 149.95, 150.39, 56.24
57.33, 57.75, 57.69, 58.1, 150.06, 150.51, 148.82, 149.23, 24.52
56.65, 57.09, 57.05, 57.47, 150.91, 151.38, 149.63, 150.06, 38.24
57.01, 57.44, 57.38, 57.78, 149.74, 150.18, 148.5, 148.91, 84.25
...
Wiele wielokątów przecinają lub pokrywają. Teraz chciałbym stworzyć matrycę * m w zakresie od -90 ° do 90 ° szerokości geograficznej i -180 ° do 180 ° długości geograficznej w krokach, na przykład, 0,25 ° x 0,25 ° do przechowywania (średniej ważonej) średniej danych wartość wszystkich wielokątów mieszczących się w każdym pikselu.
Tak więc, jeden piksel w siatce regularnej powinien otrzymać średnią wartość jednego lub więcej wielokątów (lub brak, jeśli wielokąt nie pokrywa się z pikselem). Każdy wielokąt powinien przyczyniać się do tej średniej wartości w zależności od jej frakcji obszaru w obrębie tego piksela.
Zasadniczo regularna siatka i wielokąty wyglądać następująco:
Jeśli spojrzeć na piksel 2, widać, że dwa wielokąty są wewnątrz tego piksela. Tak więc, muszę wziąć średnią wartość danych obu poligonów biorąc pod uwagę ich ułamki powierzchni. Wynik powinien być następnie zapisany w zwykłym pikselach siatki.
Rozejrzałem się po internecie i nie znalazłem dotychczas zadowalającego rozwiązania. Ponieważ używam Pythona/Numpy do codziennej pracy, chciałbym się do tego przyłączyć. czy to możliwe? Pakiet shapely wygląda obiecująco, ale nie wiem, od czego zacząć ... Przeniesienie wszystkiego do bazy danych Postgis to ogromny wysiłek i sądzę, że na mojej drodze będzie sporo przeszkód.
Nie wiem zbyt wiele o wielokąta przycinania , ale czy masz Google? na przykład http://pypi.python.org/pypi/Polygon/2.0.4 – katrielalex
Właściwie to chyba przesada. Twoje wielokąty wyglądają na wypukłe, więc ich przecięcie jest łatwiejsze do obliczenia. Zobacz np. http://content.gpwiki.org/index.php/Polygon_Collision – katrielalex
Nie jest jasne, co chcesz uśrednić w każdym pikselu ... Czy masz wartość powiązaną z każdym wielokątem?Wielokąty są uśredniane na podstawie ich całkowitej powierzchni lub obszaru piksela, który obejmują? Wydaje mi się, że twój problem jest na tyle prosty, że sprawnie radzi sobie z numpy bez dodatkowych pakietów. Podaj brakujące szczegóły. – Jaime