Mam tabelę wielokątów reprezentujących izochrony czasu podróży w określone dni. Dla każdego punktu początkowego istnieje pięć geometrii izochronicznych (przechowywanych w osobnych rzędach). Dla każdego punktu początkowego chcę zrasteryzować pięć izochronów (binarna wartość NULL lub 1), a następnie połączyć je w jedną warstwę rastrową. Ta warstwa rastrowa wymaga prostej algebry mapy: suma / 5, dzięki czemu każde źródło będzie w końcu powiązane z pojedynczą warstwą rastrową, która ma wartości w [NULL, 0,2, 0,4, 0,6, 0,8, 1] w zależności od liczby warstwy składowe zachodzą na siebie. Jest to powierzchnia prawdopodobieństwa.
Wszystkie moje dane są przechowywane w Postgres 9.3 (z PostGIS). Mój problem polega na tym, że chociaż chcę nauczyć się korzystać z rastra PostGIS, wydaje się, że ma on bardzo stromą krzywą uczenia się i wszystkie przykłady, które mogę znaleźć, dotyczą jednej warstwy rastrowej. W przykładach warstwa ta jest używana jako część nakładki wielokąta, być może uśredniając wartość rastra dla każdego wielokąta. Nie znalazłem powtarzalnego przykładu łączenia: a) wektor -> raster b) algebra mapy; oraz c) atrybut GROUP BY zgodnie z moim pierwszym akapitem.
Mogę używać GDAL lub GRASS, jeśli muszę, aby wykonać to zadanie, ale wydaje się, że PostGIS powinien być w stanie to zrobić; byłoby to wygodne, ponieważ moje dane wejściowe to już geometria PostGIS; i naprawdę chcę pogodzić się z rastrem PostGIS.
Niektóre przykładowe struktury danych:
areaid time date isogeom (polygon)
1000 07:15:00 2014-05-05 xxx
1000 07:15:00 2014-05-06 xxy
...
1006 07:15:00 2014-05-05 zzz
Chcę zrasteryzować, pogrupować według areaid, a następnie wykonać algebrę mapy, aby przejść do:
areaid isorast (raster)
1000 aaa
1006 bbb
Nie udało mi się tego zawrzeć w PostGIS. Moje podejście polegało na przekształceniu wektora w raster, zrzuceniu rastrów na tablice i wykonaniu kombinacji z tablicami numpy przez psycopg2, przed zapisaniem ich w GeoTIFF (może być ponownie wprowadzone w PostGIS). Nie idealny, ale możliwy do wykonania.