Hello,
I have a grid of (almost) regularly spaced vector points from which I would like to get a continuous raster surface. I say "almost" regularly spaced, because the grid is almost square in that the position of points derives from a netCDF grid with a different projection than the current GRASS location. One cell of this non-aligned grid covers several raster cells at the current region resolution.
So far I have been using a v.surf.idw approach but I am not sure whether that is appropriate. An exact interpolator would be best, but at least I want conserve the range of the original data.
According the the GRASS book (p. 228), my options would be v.surf.idw and v.surf.rst but the latter does not conserve data range, I think. Another idea would be to use bilinear interpolation.
Any hints very welcome and thanks for your attention if you got so far,
Luigi
You can try the overhauled v.surf.bspline module. You would need to svn up to get the new version, available in grass64 and higher.
run v.surf.bspline with the -e flag first to get estimated mean distance between points. If your points are not completely but almost regularly spaced, multiply the estimated distance by 1.5 and use that value for sin and sie.
BTW, method=bicubic gives much nicer results than method=bilinear.
To conserve the range of the original data, use a low lambda_i value somewhere between 0.01 and 0.1.
I would be really interested if it works for you!
Markus M
Luigi Ponti wrote:
Hello,
I have a grid of (almost) regularly spaced vector points from which I would like to get a continuous raster surface. I say "almost" regularly spaced, because the grid is almost square in that the position of points derives from a netCDF grid with a different projection than the current GRASS location. One cell of this non-aligned grid covers several raster cells at the current region resolution.
So far I have been using a v.surf.idw approach but I am not sure whether that is appropriate. An exact interpolator would be best, but at least I want conserve the range of the original data.
According the the GRASS book (p. 228), my options would be v.surf.idw and v.surf.rst but the latter does not conserve data range, I think. Another idea would be to use bilinear interpolation.
Any hints very welcome and thanks for your attention if you got so far,
Luigi
_______________________________________________
grass-user mailing list
grass-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-user
Thanks Markus!
On 19/02/2010 11:52, Markus Metz wrote:
You can try the overhauled v.surf.bspline module. You would need to svn up to get the new version, available in grass64 and higher.
I was browsing the source code but did not see it
http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_6_4/vector
http://trac.osgeo.org/grass/browser/grass/trunk/vector
Am I looking at the wrong spot?
I will probably get it in the next grasswin standalone installer, but I also need source code to update an heritage cygwin/grass version.
run v.surf.bspline with the -e flag first to get estimated mean distance between points. If your points are not completely but almost regularly spaced, multiply the estimated distance by 1.5 and use that value for sin and sie.
This is great fine-tuning get me up and running -- thanks.
BTW, method=bicubic gives much nicer results than method=bilinear.
I think it is slower, isn't it? Not sure how much slower, though.
To conserve the range of the original data, use a low lambda_i value somewhere between 0.01 and 0.1.
I would be really interested if it works for you!
I will let you know. Thanks again,
Luigi
Markus M
Luigi Ponti wrote:
Hello,
I have a grid of (almost) regularly spaced vector points from which I would like to get a continuous raster surface. I say "almost" regularly spaced, because the grid is almost square in that the position of points derives from a netCDF grid with a different projection than the current GRASS location. One cell of this non-aligned grid covers several raster cells at the current region resolution.
So far I have been using a v.surf.idw approach but I am not sure whether that is appropriate. An exact interpolator would be best, but at least I want conserve the range of the original data.
According the the GRASS book (p. 228), my options would be v.surf.idw and v.surf.rst but the latter does not conserve data range, I think. Another idea would be to use bilinear interpolation.
Any hints very welcome and thanks for your attention if you got so far,
Luigi
_______________________________________________
grass-user mailing list
grass-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-user
Luigi,
In my works I get good results with v.surf.rst, but it needs a good calibration of the tension and smoothing parametes to conserve the data range. For that I select a small region of the data and then try many combinations.
Pablo Torres Carreira
Date: Fri, 19 Feb 2010 11:52:43 +0100
From: markus.metz.giswork@googlemail.com
To: lponti@infinito.it
Subject: Re: [GRASS-user] Raster surface from regularly spaced points
CC: grass-user@lists.osgeo.org
You can try the overhauled v.surf.bspline module. You would need to svn
up to get the new version, available in grass64 and higher.
run v.surf.bspline with the -e flag first to get estimated mean distance
between points. If your points are not completely but almost regularly
spaced, multiply the estimated distance by 1.5 and use that value for
sin and sie.
BTW, method=bicubic gives much nicer results than method=bilinear.
To conserve the range of the original data, use a low lambda_i value
somewhere between 0.01 and 0.1.
I would be really interested if it works for you!
Markus M
Luigi Ponti wrote:
Hello,
I have a grid of (almost) regularly spaced vector points from which I
would like to get a continuous raster surface. I say “almost”
regularly spaced, because the grid is almost square in that the
position of points derives from a netCDF grid with a different
projection than the current GRASS location. One cell of this
non-aligned grid covers several raster cells at the current region
resolution.
So far I have been using a v.surf.idw approach but I am not sure
whether that is appropriate. An exact interpolator would be best, but
at least I want conserve the range of the original data.
According the the GRASS book (p. 228), my options would be v.surf.idw
and v.surf.rst but the latter does not conserve data range, I think.
Another idea would be to use bilinear interpolation.
Any hints very welcome and thanks for your attention if you got so far,
Luigi
grass-user mailing list
grass-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-user
grass-user mailing list
grass-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-user
Quer comprar na Internet com segurança? Instale grátis o Internet Explorer 8.
Luigi Ponti wrote:
Markus Metz wrote:
You can try the overhauled v.surf.bspline module. You would need to svn up to get the new version, available in grass64 and higher.
I was browsing the source code but did not see it
http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_6_4/vector
http://trac.osgeo.org/grass/browser/grass/trunk/vector
Am I looking at the wrong spot?
Nearly there
It's part of the lidar tools in e.g. branches/releasebranch_6_4/vector/lidar but a generic surface interpolation tool. As such, it is in the GUI in Raster -> Interpolate surfaces -> Bilinear and bicubic from vector points. You need to make distclean for the whole source code when compiling the new version (updated header).
BTW, method=bicubic gives much nicer results than method=bilinear.
I think it is slower, isn't it? Not sure how much slower, though.
A bit, but IMHO it's worth it. Still faster than v.surf.rst.
Luigi Ponti wrote:
Hello,
I have a grid of (almost) regularly spaced vector points from which I would like to get a continuous raster surface. I say "almost" regularly spaced, because the grid is almost square in that the position of points derives from a netCDF grid with a different projection than the current GRASS location. One cell of this non-aligned grid covers several raster cells at the current region resolution.
So far I have been using a v.surf.idw approach but I am not sure whether that is appropriate. An exact interpolator would be best, but at least I want conserve the range of the original data.
According the the GRASS book (p. 228), my options would be v.surf.idw and v.surf.rst but the latter does not conserve data range, I think. Another idea would be to use bilinear interpolation.
Any hints very welcome and thanks for your attention if you got so far,
Luigi
_______________________________________________
grass-user mailing list
grass-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-user