Composing raster tiles?
David Haynes
haynesd2 at gmail.com
Thu Nov 7 13:59:24 PST 2024
I'll try and help you with A & B
a) Is it more efficient to convert the raster to vector data and calculate
on the those than to calculate directly on the raster?
>> I don't think it would be faster to convert to vector because that would
be dumping the raster into polygons. I think for specifically calculating
slope, you are better off staying in raster.
b) To my understanding, if I calculate the slope on a raster tile,
the slope,… of the borders will have accuracy problems. My I idea, was
to "stitch" a tile with its direct neighbours, calculate on the composed
tile, and either save a cropped calculated composed tile to its original
dimension or save the calculated composed tile as is, probably the latter.
>> Overall correct, some small adjustments. For any raster operation, the
tiles are operated on independently, so you need to "stitch" them together.
I've provided a couple of ways in pseduo code
Way 1
1) Use ST_Union and make a big tile,
2) Do the spatial operation,
3) Break it up using ST_Tile()
The downside is you might run out of memory doing this. Also consider
ST_MemUnion()
SELECT ST_Tile(ST_Slope(ST_Union(r1.ras)), 350,350)
FROM raster_table
Way 2)
A second option is to basically create an aggregate, which is likely
faster.
1) Union the tiles based on ST_Touch - make mega_tiles
2) Do the spatial operation on the mega_tiles
3) Clip the mega_tiles by the old tiles bounding box
WITH rtest as
(
SELECT r1.ras, ST_Union (r1.ras) as megatile
FROM raster_table r1
LEFT JOIN raster_table r2
ON ST_Touches (r1.geom, r2.geom)
GROUP BY r1.ras
)
SELECT ST_CLIP(ST_SLOPE(megatile), ST_Envelop(r1.rast) ) as ras
FROM rtest
Maybe someone wants to make an aggregate for the raster functions?
On Thu, Nov 7, 2024 at 3:31 PM <thiemo at gelassene-pferde.biz> wrote:
> Hi
>
> In my project
>
> https://sourceforge.net/p/treintaytres/code/HEAD/tree/trunk/code_files/data_storage/
> I have the
> table
>
> TABLE_SCHEMA TABLE_NAME DATA_TYPE TYPE_NAME COLUMN_NAME
> treintaytres topo_files␟t 1111 uuid id
> treintaytres topo_files␟t 93 timestamptz entry_pit
> treintaytres topo_files␟t 1111 uuid source_id
> treintaytres topo_files␟t 12 text file_name
> treintaytres topo_files␟t 1111 raster tile
> treintaytres topo_files␟t 93 timestamptz
> file_creation_pit
> treintaytres topo_files␟t 12 text file_hash
>
> TILE contains topographical height raster data from OpenTopography.
> They are from different regions, let's say, some tiles cover
> Switzerland, some cover New Zealand. I want to create slope and other
> data from the height data and I have some questions I hope you can
> answer or point me to answers.
>
> a) Is it more efficient to convert the raster to vector data and
> calculate on the those than to calculate directly on the raster?
>
> b) To my understanding, if I calculate the slope on a raster tile, the
> slope,… of the borders will have accuracy problems. My I idea, was to
> "stitch" a tile with its direct neighbours, calculate on the composed
> tile, and either save a cropped calculated composed tile to its
> original dimension or save the calculated composed tile as is,
> probably the latter.
> Can I compose as follows?
> with RASTER_NEIGHBORS as ( select R1.TILE as CURRENT_TILE
> ,R2.TILE as NEIGHBOR_TILE
> ,R1.ID as CURRENT_ID
> from TOPO_FILES␟T R1
> left outer join TOPO_FILES␟T R2
> on ST_Touches(R1.TILE
> ,R2.TILE)
> or ST_Intersects(R1.TILE
> ,R2.TILE)
> where TRUE
> --and R1.ID =
> '6b8ca53a-bb5f-4c2b-a9c9-94b6a706e9b0'
> and TRUE)
> ,NION as (select CURRENT_TILE as TILE
> ,CURRENT_ID
> from RASTER_NEIGHBORS
> union
> select NEIGHBOR_TILE as TILE
> ,CURRENT_ID
> from RASTER_NEIGHBORS)
> select ST_Union(TILE) as COMPOSED_TILE
> ,CURRENT_ID
> from NION
> group by CURRENT_ID;
>
> c) Finally, I want to select all the areas where slope, TRI,… conform
> certain criteria and have a minium surface size. Do I do it this
> better on vector data and do I need to do this on data composed of all
> the contiguous areas?
>
> I would be grateful for any nudge into the right direction. Maybe URLs
> with samples.
>
> Kind regards
>
> Thiemo
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20241107/b216ab19/attachment.htm>
More information about the postgis-users
mailing list