[GRASS-user] [GRASSLIST:1173] Downscaling DEMs (need some feedback)

Maciej Sieczka tutey at o2.pl
Mon Aug 7 17:50:07 EDT 2006


Jonathan Greenberg napisa?(a):
> I'd like to resample a 30m DEM to 4m for use in the ATCOR3 topographic
> correction software package.

Give the i.atcorr a try, recently ported to Grass 6.1!
http://grass.gdf-hannover.de/wiki/GRASS_AddOns#Imagery_add-ons


>  The issue that always pops up when doing
> downscaling like this is that the resultant "higher res" DEM contains the
> "ghosts" of the 30m pixels (e.g. it creates squares in the landscape).  My
> question is, what (if any) are the best ways to "get rid" of these effects?
> Does GRASS (or other packages) have any tools to deal with this?  It seems
> that the major issue is that a basic raster resampler treats the DEM as a
> flat surface of equal elevation, but treating it as a grid of points, where
> the center of each cell = the elevation, would be more appropriate (and
> then, for each cell that is not the centroid of a DEM cell, the value is
> some distance weighted function of the 4 elevation values which will
> surround it).  Thoughts?

First transform your grid into vector points (v.to.points), then
re-interpolate, using most appropriate algorithm, at the target
resolution. In Grass you have rst, idw and natural neighbor
(r.surf.nnbathy from WIKI addons; it is easy to modify it to provide
also triangulation and non Sibsonian natural neighbor; I'm planning to
do so when I have time) and krigging (also in our WIKI).

There's been plenty of discussion on this topic before, dig the archive.

You might like the r.resamp.rst which does raster->vector
points->interpolate using rst all under the hood - *if* rst suits your
needs.


P.S.
Whatch out: you will able to create only ~ 3x10^6 vector features per
one vector file with topology, due to limitation in current Grass vector
engine. You could workaround this by transforming your input 30m raster
into points as x,y,z plain ascii (r.stats -1n > xyz.txt), import into
Grass skipping the topology (v.in.ascii -b) and feeding this into
v.surf.rst, which is one of few Grass modules that accept topology-less
vector input.

Or read the ascii x,y,z file with r.in.xyz and use r.surf.nnbathy or
r.surf.idw, which require raster input, so vector engine problems don't
apply.

P.S.2

If simple bilinear/bicubic resampling is enough in your case (though, at
least for me, it never was for processing dem) try gdalwarp -rb, -rc or
-rcs (Grass own r.bilinear is broken
http://intevation.de/rt/webrt?serial_num=2790)

P.S.3 :)

Please don't use grasslist at baylor.edu. It's deprecated. Current address
is grassuser at grass.itc.it.

Cheers,
Maciek





More information about the grass-user mailing list