[GRASS-user] Need Help with speeding up v.import and reducing/removing null values from v.rast.stat results

Mehrdad Varedi varedi at waterlix.com
Tue Apr 3 00:18:49 PDT 2018


Thank you Stefan for clarification regarding the resolution. I used the
approach and got no NA! that worked very well for me.

Please let me know when the function is available to try it.

Thanks for the update.

Cheers,

Mehrdad


Mehrdad Varedi, M.A.Sc.
Waterlix <http://www.waterlix.com> Founder
www.waterlix.com
Cell: +1 (519)722-7057

On Tue, Apr 3, 2018 at 2:14 AM, Stefan Blumentrath <
Stefan.Blumentrath at nina.no> wrote:

> Hi again,
>
>
>
> I am glad to hear the approach seemed useful.
>
>
>
> Regarding resolution: my point was, that you need to use a high enough
> resolution for e.g. a 3m buffer. Keep in mind that r.neighbors only allows
> odd numbers for diameter of a moving window. And with a small moving
> window, the neighbourhood will not really look like a circle… So just be
> aware that it is an approximation in many regards…
>
>
>
> BTW. I just started working on porting the v.what.rast.buffer addon to
> Python/pygrass/GRASS 7 (which in fact will become almost a rewrite as I add
> some new functionality).
>
> It will most likely not have the performance for 700k points (at least not
> if you expect fast results), but I can see if I manage to include the
> r.neigbors approach as an alternative way of buffer statistics (for point
> input).
>
>
>
> Cheers,
>
> Stefan
>
>
>
> *From:* Markus Metz <markus.metz.giswork at gmail.com>
> *Sent:* lørdag 24. mars 2018 19.03
> *To:* Stefan Blumentrath <Stefan.Blumentrath at nina.no>
> *Cc:* Mehrdad Varedi <varedi at waterlix.com>; grass-user at lists.osgeo.org
>
> *Subject:* Re: [GRASS-user] Need Help with speeding up v.import and
> reducing/removing null values from v.rast.stat results
>
>
>
>
>
> On Sat, Mar 24, 2018 at 10:36 AM, Stefan Blumentrath <
> Stefan.Blumentrath at nina.no> wrote:
> >
> > Hei again Mehrdad,
> >
> > A different appoach to tackle your problem could be to:
> > 1) run r.neighbors with a circular window that has a size according to
> your buffer distance while computing the statistic of interest
> > 2) use v.what.rast or r.what to get neighbourhood values at your point
> locations...
>
> Wow, that's a really elegant solution! Could you please add this to the
> manual of v.what.rast? Thanks!
>
> >
> > That way you can circumvent overlap issues and for the points you do not
> even have to build topology (or can use a linked OGR map (v.external), if I
> am not mistaken)...
> >
> > In any case you would have to carefully consider the resolution for your
> analysis based on the required precision...
>
> Any reason why the resolution of the raster to be queried should not be
> used?
>
> Markus M
>
>
> >
> > Cheers
> >
> > Stefan
> >
> >
> >
> >
> >
> > From: Markus Metz <markus.metz.giswork at gmail.com>
> > Sent: fredag 23. mars 2018 17.57
> > To: Mehrdad Varedi <varedi at waterlix.com>
> > Cc: Stefan Blumentrath <Stefan.Blumentrath at nina.no>;
> grass-user at lists.osgeo.org
> >
> >
> > Subject: Re: [GRASS-user] Need Help with speeding up v.import and
> reducing/removing null values from v.rast.stat results
> >
> >
> >
> >
> >
> > On Fri, Mar 23, 2018 at 4:30 PM, Mehrdad Varedi <varedi at waterlix.com>
> wrote:
> > >
> > > Thank you very much Stefan and Moritz for your attention and replies.
> > > I found that you both exactly understand where is the problem. Let me
> be more specific about my primary issue.
> > >
> > >  - v.buffer and  v.import (v.in.ogr) - They freez.
> > > I found that my problem was reported in a post:    #2185 new defect
>  Painfully Slow 'v.in.ogr' Vector Import
> > > Here is the link: https://trac.osgeo.org/grass/ticket/2185#no1
> > >
> > > Now two questions:
> > >
> > >  1 - Two patches has been offered in this post that apparently has
> solved the problem. I really don't know how to use patches and when they
> should be executed or compiled. Would you please refer me to some resources
> to educate myself to how to use the patches, where to get the compiler, etc.
> > >
> > >  2 -  Are these patches applied already in GRASS 7.4.0?
> >
> > The issue in #2185 has been fixed already, but differently. The
> suggested patches were fixing symptoms but not the cause.
> >
> > >
> > >  - Some background about the data I have:
> > >
> > > As I said there are 700,000 points , the distance between the points
> are 3 meters. I create buffers with the size of 3, 7, 20, and 50 meters
> around each point. Then will use v.rast.stats to calculate statistics on
> rasters with the resolution of 1 square meter.
> > >
> > > I could import the buffer layers created in QGIS using fixed distance
> buffer function and import them for the 3 and 7 meter buffer layers. then
> v.rast.stats could complete the calculations after 2 hours for the 3 meter
> buffer and after 4.5 hours for the 7 meter layer.
> > >
> > > v.import for the 20 meter buffer was frozen on "Breaking Boundaries
> ... " step. I have provided the log of messages that I get. all of the
> steps is done in few minutes and it stuck on the "Breaking Boundaries ..."
> for more than 12 hours for the 20 meter buffer. ( I am sure it would be the
> same for the 50 meter buffer)
> >
> > If the buffer radius is a bit larger than half the distance between
> points, you will get some overlapping buffers, but that should not be too
> bad. If the buffer radius is much larger than the distance between points,
> e.g. distance between points = 3 and buffer distance = 50, the result will
> be a topological challenge with multiple overlapping buffers.
> >
> > Alternatively you can approximate a common buffer for all points by 1)
> creating a concave hull with v.concave.hull [0], 2) buffering that hull.
> >
> > HTH,
> >
> > Markus M
> >
> >
> > [0] https://grass.osgeo.org/grass74/manuals/addons/v.concave.hull.html
> >
> > >
> > >
> > > (Thu Mar 22 22:41:46 2018)
>
> > > v.import input=E:\Projects-Analysis\London\Data\Output\
> P3ntsOnMains\Buffers\LondonBuffers layer=Buffer20_P3intsOnMains
> output=Buffer20_P3intsOnMains --overwrite
> > > Check if OGR layer <Buffer20_P3intsOnMains> contains polygons...
> > > WARNING: Vector map <Buffer20_P3intsOnMains> already exists and will
> be overwritten
> > > WARNING: Table <Buffer20_P3intsOnMains> linked to vector map
> <Buffer20_P3intsOnMains> does not exist
> > > Creating attribute table for layer <Buffer20_P3intsOnMains>...
> > > Column name <cat> renamed to <cat_>
> > > Importing 706628 features (OGR layer <Buffer20_P3intsOnMains>)...
> > > -----------------------------------------------------
> > > Registering primitives...
> > > 706628 primitives registered
> > > 14839188 vertices registered
> > > Number of nodes: 681288
> > > Number of primitives: 706628
> > > Number of points: 0
> > > Number of lines: 0
> > > Number of boundaries: 706628
> > > Number of centroids: 0
> > > Number of areas: -
> > > Number of isles: -
> > > -----------------------------------------------------
> > > Cleaning polygons
> > > -----------------------------------------------------
> > > Breaking polygons...
> > > Breaking polygons (pass 1: select break points)...
> > > Breaking polygons (pass 2: break at selected points)...
> > > -----------------------------------------------------
> > > Removing duplicates...
> > > -----------------------------------------------------
> > > Breaking boundaries...
> > >
> > >
> > >
> > > In another try when the distance between my points were 12 meters,
> everything was working relatively fast and with no problem. increasing the
> density of points (3 meter distance) has resulted in a very long delay, so
> much that I think it is in an infinite loop.
> > >
> > > I appreciate for your help and looking forward hearing from you.
> > >
> > > Kind regards,
> > >
> > > Mehrdad
> > >
> > >
> > >
> > > Mehrdad Varedi, M.A.Sc.
> > > Cell: +1 (519)722-7057 <(519)%20722-7057>
> > >
> > > On Fri, Mar 23, 2018 at 9:15 AM, Stefan Blumentrath <
> Stefan.Blumentrath at nina.no> wrote:
> > >>
> > >> Hei Mehrdad,
> > >>
> > >> If your buffers are overlapping, topology will become an issue, as
> Moritz pointed out.
> > >> Johannes Radinger once wrote a workaround for a specific use case
> that might be of help. See [1]. No idea if it would be possible to come up
> with something more generic for v.rast.stats…
> > >>
> > >> In v.rast.stas NAs occur most likely due to vector areas that are not
> rasterized, which usually happens when polygons are relatively small /
> narrow compared to resolution of the raster map.
> > >>
> > >> However, during community sprint these days in Bonn, Martin Landa
> added centroids to the rasterization algorithm (v.to.rast) that
> v.rast.stats uses, than can help to reduce the number of NAs.
> > >>
> > >> Also during community sprint, I created a patch for v.rast.stats [2]
> that aims at improving the performance of the module by allowing multiple
> raster input (it needs testing).
> > >>
> > >> There are possible further improvements, but these require some more
> discussion with the other devs regarding implementation.
> > >>
> > >> Cheers
> > >> Stefan
> > >>
> > >> 1: https://lists.osgeo.org/pipermail/grass-user/2017-June/076670.html
> > >> 2: https://trac.osgeo.org/grass/ticket/3523
> > >>
> > >> -----Original Message-----
> > >> From: grass-user <grass-user-bounces at lists.osgeo.org> On Behalf Of
> Moritz Lennert
> > >> Sent: fredag 23. mars 2018 10.52
> > >> To: Mehrdad Varedi <varedi at waterlix.com>; grass-user at lists.osgeo.org
> > >> Subject: Re: [GRASS-user] Need Help with speeding up v.import and
> reducing/removing null values from v.rast.stat results
> > >>
> > >> On 22/03/18 22:40, Mehrdad Varedi wrote:
> > >> > Hi Everyone,
> > >> >
> > >> > I am trying to import few layers with nearly 700,000 buffer areas
> > >> > around the same number of points. Fr each layer t takes more than
> 4-5
> > >> > hours and most of the time, it just stops in the middle of the
> process.
> > >> > Any idea that which kind of layers can be imported with a faster
> speed?
> > >> > I need o load 4-5 of such layers and it is now 5 days that I am busy
> > >> > with building a buffer or importing the results.
> > >> >
> > >> > Actually I tried v.buffer and it took more than a day until I
> stopped
> > >> > the procedure, although I could create the layer with Fixed distance
> > >> > buffer function in QGIS in 10 minutes.
> > >> > Any idea to accelerate the process of v.buffer ot v.import in GRASS?
> > >>
> > >> I would guess that the difference comes from the difference in output
> > >> format: QGIS will just create non-topological, overlapping buffers
> (unless you ask it to create unique buffers) while GRASS has to take care
> of all the topological issues in order to create a topologically clean
> vector map.
> > >>
> > >> The same is true both for buffer creation and for import.
> > >>
> > >> >
> > >> > Also I want to calculate statistics in each of the buffers and have
> > >> > the same issue with v.rast.stats function
> > >>
> > >> You might get faster results rasterizing your buffers and using
> r.univar with the zones= parameter. You can then import the resulting text
> file into your database and link it to the vector map, as long as you make
> sure that the pixel values in the zone map correspond to the cat values of
> the vector map.
> > >>
> > >> >
> > >> > Another issue with this function is a lot of NAs in the result. No
> > >> > hole exists in the raster files and it should be something with
> > >> > snapping I guess which results in removal of many points.
> > >>
> > >> You would have to be a bit more precise about what exactly you are
> doing and what exactly the results are. Are you talking about points or
> polygons ?
> > >>
> > >> Moritz
> > >>
> > >>
> > >> _______________________________________________
> > >> grass-user mailing list
> > >> grass-user at lists.osgeo.org
> > >> https://lists.osgeo.org/mailman/listinfo/grass-user
> > >
> > >
> > >
> > > _______________________________________________
> > > grass-user mailing list
> > > grass-user at lists.osgeo.org
> > > https://lists.osgeo.org/mailman/listinfo/grass-user
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/grass-user/attachments/20180403/42a4f5d4/attachment-0001.html>


More information about the grass-user mailing list