Ho una tabella di poligoni che rappresentano isocronici del tempo di viaggio in determinati giorni. Per ogni punto di origine, ci sono cinque geometrie isochrone (memorizzate in file separate). Per ogni punto di origine, desidero rasterizzare i cinque isocroni (un NULL binario o 1), quindi combinarli in un singolo livello raster. Questo livello raster richiede una semplice algebra della mappa: somma / 5, in modo che ciascuna origine alla fine sia associata a un singolo livello raster che abbia valori in [NULL, 0.2, 0.4, 0.6, 0.8, 1] a seconda di quante gli strati costituenti si sovrappongono. È una superficie di probabilità.
I miei dati sono tutti archiviati in Postgres 9.3 (con PostGIS). Il mio problema è che mentre voglio imparare a usare PostGIS raster, sembra avere una curva di apprendimento molto ripida e tutti gli esempi che posso trovare riguardano un singolo livello raster. Negli esempi, questo livello viene utilizzato come parte di una sovrapposizione di poligoni, forse mediando il valore del raster per ciascun poligono. Non ho trovato un esempio replicabile per combinare: a) vector -> raster b) map algebra; e c) attributo GROUP BY secondo il mio primo paragrafo.
Sto bene usando GDAL o GRASS se devo per svolgere questo compito, ma questo sembra qualcosa che PostGIS dovrebbe essere in grado di gestire; sarebbe conveniente farlo dato che i miei dati di input sono già geometria PostGIS; e voglio davvero venire a patti con PostGIS raster.
Qualche struttura di dati di esempio:
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
Voglio rasterizzare, raggruppare per areaid, quindi eseguire l'algebra della mappa per arrivare a:
areaid isorast (raster)
1000 aaa
1006 bbb
Non sono riuscito a contenerlo a PostGIS. Il mio approccio è stato quello di convertire il vettore in raster, scaricare i raster in array ed eseguire la combinazione con array intorpiditi tramite psycopg2, prima di scriverli su un GeoTIFF (forse per essere rimesso in PostGIS). Non ideale, ma fattibile.