<html><head></head><body>Just to add my 2¢ on one aspect: IMHO, unless you have some aesthetic or other reasons to do otherwise, smooth should reflect the error in your data. As it determines how far the interpolated surface can be from the observed values, the margin of error that you think your data has should be an adequate value.<br><br>I therefore wouldn't really tune on smooth, but just set it to one reasonable value.<br><br>Moritz<br><br><div class="gmail_quote">Am 21. Oktober 2020 04:12:53 MESZ schrieb "Anna Petrášová" <kratochanna@gmail.com>:<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div dir="ltr"><div>Hi,</div><div><br></div><div>I don't have an answer but couple notes I can now think of:</div><div><br></div><div>- Variable density of points may be a problem, I sometimes had that issue with gaps in lidar when it creates visible segments. In that case you need to increase npmin, but that substantially increases processing time. The default npmin is 300, but that is typically unnecessary, npmin 150 is usually ok and runs faster. The segments can be mitigated as well by higher tension. I usually use tension between 20-40. I haven't used smooth value larger than 5 I think. But again, your data are probably quite different.</div><div><br></div><div>- v.surf.rst is parallelized, you need to compile GRASS with openMP to take advantage of that</div><div><br></div><div>- Have you looked at r.fill.stats? I used it for lidar, first r.in.lidar and then fill the rest with r.fill.stats, possibly multiple passes to fill larger holes. It uses IDW, and it will be *significantly* faster, although v.surf.rst would probably give you better results in the end.</div><div><br></div><div>Best,</div><div>Anna</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Oct 16, 2020 at 3:05 PM Eric Patton <<a href="mailto:eric.r.patton@protonmail.com">eric.r.patton@protonmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hello list,<br>
<br>
I am trying to interpolate raster values for a single massive dataset that<br>
represents dozens of multibeam bathymetry surveys over a few decades.<br>
<br>
The region is pretty big: all of Eastern Canada; at 100m resolution there are <br>
~ 464M cells. <br>
<br>
The raster data has a wide range of completeness; in some areas, there is<br>
near 100% coverage - these areas were surveyed with modern sonars and 100%<br>
overlap between survey lines. In other areas, the data is very sparse, with<br>
~1km or more between tracklines. These areas would represent surveys from the<br>
70's to 90's using singlebeam echosounders.<br>
<br>
Firstly, would v.surf.rst be the best module for a massive interpolation job<br>
like this?  If not, could you recommend what would be the optimal method?<br>
<br>
If v.surf.rst is the right module to use, I was wondering if anyone could help<br>
with what parameters to use for an area this size, at least as a starting<br>
point. I have read the manual several times, but I still don't have a good<br>
intuition for how parameters like npmin, segmax, dmin, dmax, smooth all work<br>
together.<br>
<br>
At the moment, I have a script written that accepts a user-supplied number of<br>
random positions all over the input raster. For each random point, I obtain<br>
the east and north coordinates with v.to.db, feed these to g.region, and grow<br>
the region around the point in all four cardinal directions by some value like<br>
10,000m to create an analysis window around each point. I create a polygon<br>
vector of this region with v.in.region, and use this polygon to clip my<br>
vectorized raster bathymetry with v.clip, and then do v.surf.rst on this<br>
clipped vector. <br>
<br>
I have no other way of knowing what v.surf.rst parameters to use other than<br>
trial and error, so I have a 4-level nested 'for' loop written to basically<br>
traverse through all permutations of the parameters within the ranges I<br>
chosen. So for example, I am exploring all combinations of parameters within<br>
these ranges:<br>
<br>
Tension: 10, 20, 40, 80, 160<br>
npmin: 100, 200, 400, 800, 1000<br>
smooth: 1, 2, 4, 8, 16, 32<br>
<br>
With 7 random points selected around the full region, this script will produce<br>
a few hundred maps per point, and quite a long time to run. And even more time<br>
to look at the results.  I know this isn't the best approach.<br>
<br>
I am looking for help to find some workable set of parameters to use for the<br>
entire dataset from other users who have more experience using this module.<br>
<br>
Thanks,<br>
<br>
-- <br>
Eric Patton<br>
Marine Geoscience Technologist<br>
Geological Survey of Canada (Atlantic)<br>
Natural Resources Canada<br>
Bedford Institute of Oceanography<br>
1 Challenger Drive, Dartmouth NS, Canada<br>
<br>
_______________________________________________<br>
grass-user mailing list<br>
<a href="mailto:grass-user@lists.osgeo.org" target="_blank">grass-user@lists.osgeo.org</a><br>
<a href="https://lists.osgeo.org/mailman/listinfo/grass-user" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/grass-user</a></blockquote></div></div>
</blockquote></div></body></html>