У мене є таблиця полігонів, що представляють ізохрони часу подорожі в конкретні дні. Для кожної точки початку існує п’ять ізохронних геометрій (зберігаються в окремих рядках). Для кожної точки початку я хочу растеризувати п'ять ізохронів (двійковий NULL або 1), а потім об'єднати їх в один растровий шар. Цей растровий шар вимагає простої алгебри карти: sum / 5, так що кожне джерело буде врешті-решт асоційоване з одним растровим шаром, який має значення [NULL, 0,2, 0,4, 0,6, 0,8, 1] залежно від кількості складові шари перекриваються. Це поверхня ймовірності.
Усі мої дані зберігаються в Postgres 9.3 (разом із PostGIS). Моя проблема полягає в тому, що, хоча я хочу навчитися використовувати растр PostGIS, у нього, здається, є дуже крута крива навчання, і всі приклади, які я можу знайти, мають справу з одним растровим шаром. У прикладах цей шар використовується як частина багатокутного накладання, можливо, усереднюючи значення растра для кожного багатокутника. Я не знайшов повторюваного прикладу поєднання: а) вектор -> растровий b) алгебра карти; і c) атрибут GROUP BY відповідно до мого першого абзацу.
Я все в порядку, використовуючи GDAL або GRASS, якщо мені доведеться виконувати це завдання, але це здається, що PostGIS повинен мати можливість впоратися; було б зручно це зробити, враховуючи мої вхідні дані - це вже геометрія PostGIS; і мені дуже хочеться погодитися з растром PostGIS.
Деякі структури даних вибірки:
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
Я хочу розтерзати, згрупувати по області, а потім виконати алгебру карти, щоб прийти:
areaid isorast (raster)
1000 aaa
1006 bbb
Я не мав успіху, що містив це в PostGIS. Мій підхід полягає в перетворенні вектора в растровий, скиданні растрових масивів і виконанні комбінації з нумеровими масивами через psycopg2, перед тим, як записати їх у GeoTIFF (щоб, можливо, повернути їх у PostGIS). Не ідеально, але можливо.