<html style="direction: ltr;">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style type="text/css">body p { margin-bottom: 0cm; margin-top: 0pt; } </style>
</head>
<body bidimailui-charset-is-forced="true" style="direction: ltr;"
bgcolor="#FFFFFF" text="#000000">
<br>
<div class="moz-cite-prefix">On 15/05/2019 0:46, Veronica Andreo
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAAMki4HHxEbfUL-HPLH+uMNzqDe_-KrZwC+yZNtg5R=fbZ7wPw@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div dir="ltr">
<div dir="ltr">
<div>Hi all,</div>
<div><br>
</div>
<div>I was working today with a very simple vector map which
corresponds to clusters (circular polygons) that overlap and
it is just fine that they overlap. So, i received a
shapefile with 3 of these clusters. Two of them overlaped.
When I import them into GRASS with v.import I get an extra
centroid and area where 2 of the polygons overlap. <br>
</div>
<div><br>
</div>
<div>Problem arises when I want to query a raster map with
those polygons since originally the attribute table
contained only 3 polygons (which is just fine). However,
v.what.rast will only upload values for 2 of those three
polygons because it finds 2 centroids with the same
category, AFAIU.</div>
<div><br>
</div>
</div>
</div>
</blockquote>
<p><br>
</p>
<p>Here's how to get the raster values for all polygons (including
those which are overlaps). It involves the somewhat non-intuitive
process of creating another layer. I imported a simple polygon
shapefile with three overlapping areas. Here are the categories:</p>
<p><br>
</p>
<p><tt>micha@TP480:~$ v.category polys opt=report</tt><tt><br>
</tt><tt>Layer/table: 1/polys</tt><tt><br>
</tt><tt>type count min max</tt><tt><br>
</tt><tt>point 0 0 0</tt><tt><br>
</tt><tt>line 0 0 0</tt><tt><br>
</tt><tt>boundary 0 0 0</tt><tt><br>
</tt><tt>centroid 12 1 3</tt><tt><br>
</tt><tt>area 0 0 0</tt><tt><br>
</tt><tt>face 0 0 0</tt><tt><br>
</tt><tt>kernel 0 0 0</tt><tt><br>
</tt><tt>all 12 1 3</tt><tt><br>
</tt><tt>Layer: 2</tt><tt><br>
</tt><tt>type count min max</tt><tt><br>
</tt><tt>point 0 0 0</tt><tt><br>
</tt><tt>line 0 0 0</tt><tt><br>
</tt><tt>boundary 0 0 0</tt><tt><br>
</tt><tt>centroid 4 2 3</tt><tt><br>
</tt><tt>area 0 0 0</tt><tt><br>
</tt><tt>face 0 0 0</tt><tt><br>
</tt><tt>kernel 0 0 0</tt><tt><br>
</tt><tt>all 4 2 3</tt></p>
<p><br>
</p>
<p>So, as you found, you get two layers, with all original areas
split up at overlaps in layer 1, and just the overlap areas in
layer 2. Now add a third layer, with new category values
(option=add):</p>
<p><br>
</p>
<p><tt>micha@TP480:~$ v.category polys option=add layer=3
out=polys_3layers</tt></p>
<p><tt>Layer/table: 1/polys_3layers</tt><tt><br>
</tt><tt>type count min max</tt><tt><br>
</tt><tt>point 0 0 0</tt><tt><br>
</tt><tt>line 0 0 0</tt><tt><br>
</tt><tt>boundary 0 0 0</tt><tt><br>
</tt><tt>centroid 12 1 3</tt><tt><br>
</tt><tt>area 0 0 0</tt><tt><br>
</tt><tt>face 0 0 0</tt><tt><br>
</tt><tt>kernel 0 0 0</tt><tt><br>
</tt><tt>all 12 1 3</tt><tt><br>
</tt><tt>Layer: 2</tt><tt><br>
</tt><tt>type count min max</tt><tt><br>
</tt><tt>point 0 0 0</tt><tt><br>
</tt><tt>line 0 0 0</tt><tt><br>
</tt><tt>boundary 0 0 0</tt><tt><br>
</tt><tt>centroid 4 2 3</tt><tt><br>
</tt><tt>area 0 0 0</tt><tt><br>
</tt><tt>face 0 0 0</tt><tt><br>
</tt><tt>kernel 0 0 0</tt><tt><br>
</tt><tt>all 4 2 3</tt><tt><br>
</tt><tt>Layer: 3</tt><tt><br>
</tt><tt>type count min max</tt><tt><br>
</tt><tt>point 0 0 0</tt><tt><br>
</tt><tt>line 0 0 0</tt><tt><br>
</tt><tt>boundary 0 0 0</tt><tt><br>
</tt><tt>centroid 7 1 7</tt><tt><br>
</tt><tt>area 0 0 0</tt><tt><br>
</tt><tt>face 0 0 0</tt><tt><br>
</tt><tt>kernel 0 0 0</tt><tt><br>
</tt><tt>all 7 1 7</tt></p>
<p><br>
</p>
<p>This gives me three layers, and the new layer 3 has individual
cat values for each polygon. So I'm ready to add a database table
and column to that layer for the raster value, and then run
v.what.rast:</p>
<br>
<p><tt>micha@TP480:~$ v.db.addtable polys_3layers layer=3
columns="rast_value DOUBLE"</tt></p>
<p><tt>micha@TP480:~$ v.what.rast polys_3layers rast=dem_4m
column=rast_value layer=3 type=centroid</tt><tt><br>
</tt><tt>Reading features from vector map...</tt><tt><br>
</tt><tt>Update vector attributes...</tt><tt><br>
</tt><tt> 100%</tt><tt><br>
</tt><tt>v.what.rast complete. 7 records updated.</tt><tt><br>
</tt><tt>micha@TP480:~$ v.db.select polys_3layers layer=3</tt><tt><br>
</tt><tt>cat|rast_value</tt><tt><br>
</tt><tt>1|488.3321</tt><tt><br>
</tt><tt>2|492.7044</tt><tt><br>
</tt><tt>3|481.2958</tt><tt><br>
</tt><tt>4|498.173</tt><tt><br>
</tt><tt>5|501.3336</tt><tt><br>
</tt><tt>6|493.2202</tt><tt><br>
</tt><tt>7|471.7223</tt><br>
<br>
</p>
<p>Does this help?<br>
</p>
<p><br>
</p>
<p><br>
</p>
<blockquote type="cite"
cite="mid:CAAMki4HHxEbfUL-HPLH+uMNzqDe_-KrZwC+yZNtg5R=fbZ7wPw@mail.gmail.com">
<div dir="ltr">
<div dir="ltr">
<div>I tried with <span
id="gmail-m_-4881497591274067376gmail-:4u.co"
class="gmail-m_-4881497591274067376gmail-tL8wMe
gmail-m_-4881497591274067376gmail-EMoHub"
style="text-align:left" dir="ltr"><br>
</span></div>
<div><span id="gmail-m_-4881497591274067376gmail-:4u.co"
class="gmail-m_-4881497591274067376gmail-tL8wMe
gmail-m_-4881497591274067376gmail-EMoHub"
style="text-align:left" dir="ltr"><br>
</span></div>
<div><span id="gmail-m_-4881497591274067376gmail-:4u.co"
class="gmail-m_-4881497591274067376gmail-tL8wMe
gmail-m_-4881497591274067376gmail-EMoHub"
style="text-align:left" dir="ltr">v.clean input=clusters
output=clusters_clean1 tool=break,rmdupl,rmsa,rmdac<br>
</span></div>
<div><span id="gmail-m_-4881497591274067376gmail-:4u.co"
class="gmail-m_-4881497591274067376gmail-tL8wMe
gmail-m_-4881497591274067376gmail-EMoHub"
style="text-align:left" dir="ltr"><br>
</span></div>
<div><span id="gmail-m_-4881497591274067376gmail-:4u.co"
class="gmail-m_-4881497591274067376gmail-tL8wMe
gmail-m_-4881497591274067376gmail-EMoHub"
style="text-align:left" dir="ltr">and <br>
</span></div>
<div><span id="gmail-m_-4881497591274067376gmail-:4u.co"
class="gmail-m_-4881497591274067376gmail-tL8wMe
gmail-m_-4881497591274067376gmail-EMoHub"
style="text-align:left" dir="ltr"><span id="gmail-:4u.co"
class="gmail-tL8wMe gmail-EMoHub"
style="text-align:left" dir="ltr"><br>
</span></span></div>
<div><span id="gmail-m_-4881497591274067376gmail-:4u.co"
class="gmail-m_-4881497591274067376gmail-tL8wMe
gmail-m_-4881497591274067376gmail-EMoHub"
style="text-align:left" dir="ltr"><span id="gmail-:4u.co"
class="gmail-tL8wMe gmail-EMoHub"
style="text-align:left" dir="ltr">v.clean input=clusters
type=centroid output=clusters_clean2 tool=rmdupl</span></span></div>
<div><span id="gmail-m_-4881497591274067376gmail-:4u.co"
class="gmail-m_-4881497591274067376gmail-tL8wMe
gmail-m_-4881497591274067376gmail-EMoHub"
style="text-align:left" dir="ltr"><span id="gmail-:4u.co"
class="gmail-tL8wMe gmail-EMoHub"
style="text-align:left" dir="ltr"><br>
</span></span></div>
<div><span id="gmail-m_-4881497591274067376gmail-:4u.co"
class="gmail-m_-4881497591274067376gmail-tL8wMe
gmail-m_-4881497591274067376gmail-EMoHub"
style="text-align:left" dir="ltr"></span></div>
<div><span id="gmail-m_-4881497591274067376gmail-:4u.co"
class="gmail-m_-4881497591274067376gmail-tL8wMe
gmail-m_-4881497591274067376gmail-EMoHub"
style="text-align:left" dir="ltr">but nothing seemed to do
the kind of cleaning I wanted. I ended up using brute
force and removing the extra centroid manually in the GUI.
That helped with v.what.rast (all cats in the attr table
were updated) but part of the original and correct
geometry was clearly gone. I am sure that's not the right
combination nor the right way either. <br>
</span></div>
<div><span id="gmail-m_-4881497591274067376gmail-:4u.co"
class="gmail-m_-4881497591274067376gmail-tL8wMe
gmail-m_-4881497591274067376gmail-EMoHub"
style="text-align:left" dir="ltr"><br>
</span></div>
<div><span id="gmail-m_-4881497591274067376gmail-:4u.co"
class="gmail-m_-4881497591274067376gmail-tL8wMe
gmail-m_-4881497591274067376gmail-EMoHub"
style="text-align:left" dir="ltr">In the wiki [0], I only
found this piece of text: "If the <b>input polygons have
logical errors</b>.... You can investigate overlapping
areas in the imported vector with '<span
class="gmail-plainlinks"><a rel="nofollow"
class="external gmail-text"
href="https://grass.osgeo.org/grass76/manuals/d.vect.html"
moz-do-not-send="true">d.vect</a></span> yourmap
type=area layer=2' (only overlapping areas have a category
in layer 2 after import). Additionally you may show the
centroids of layer=2 to easier find tiny overlapping areas
with '<span class="gmail-plainlinks"><a rel="nofollow"
class="external gmail-text"
href="https://grass.osgeo.org/grass76/manuals/d.vect.html"
moz-do-not-send="true">d.vect</a></span> yourmap
type=centroid layer=2'" <br>
</span></div>
<div><span id="gmail-m_-4881497591274067376gmail-:4u.co"
class="gmail-m_-4881497591274067376gmail-tL8wMe
gmail-m_-4881497591274067376gmail-EMoHub"
style="text-align:left" dir="ltr"><br>
</span></div>
<div><span id="gmail-m_-4881497591274067376gmail-:4u.co"
class="gmail-m_-4881497591274067376gmail-tL8wMe
gmail-m_-4881497591274067376gmail-EMoHub"
style="text-align:left" dir="ltr">However, it says nothing
about how to proceed further as to keep correctly
overlapping polygons, each with its own centroid and
remove the duplicated ones that are generated when
importing.</span></div>
<div><span id="gmail-m_-4881497591274067376gmail-:4u.co"
class="gmail-m_-4881497591274067376gmail-tL8wMe
gmail-m_-4881497591274067376gmail-EMoHub"
style="text-align:left" dir="ltr"><br>
</span></div>
<div><span id="gmail-m_-4881497591274067376gmail-:4u.co"
class="gmail-m_-4881497591274067376gmail-tL8wMe
gmail-m_-4881497591274067376gmail-EMoHub"
style="text-align:left" dir="ltr">Can someone please share
the set of steps that should be followed in these cases?
Maybe it's a silly question, but I'm more a raster person
so I am very easily lost with vector issues.</span></div>
<div><span id="gmail-m_-4881497591274067376gmail-:4u.co"
class="gmail-m_-4881497591274067376gmail-tL8wMe
gmail-m_-4881497591274067376gmail-EMoHub"
style="text-align:left" dir="ltr"><br>
</span></div>
<div><span id="gmail-m_-4881497591274067376gmail-:4u.co"
class="gmail-m_-4881497591274067376gmail-tL8wMe
gmail-m_-4881497591274067376gmail-EMoHub"
style="text-align:left" dir="ltr">Thanks much in advance!</span></div>
<div><span id="gmail-m_-4881497591274067376gmail-:4u.co"
class="gmail-m_-4881497591274067376gmail-tL8wMe
gmail-m_-4881497591274067376gmail-EMoHub"
style="text-align:left" dir="ltr">Vero<br>
</span></div>
<div><span id="gmail-m_-4881497591274067376gmail-:4u.co"
class="gmail-m_-4881497591274067376gmail-tL8wMe
gmail-m_-4881497591274067376gmail-EMoHub"
style="text-align:left" dir="ltr"><br>
</span></div>
<div><span id="gmail-m_-4881497591274067376gmail-:4u.co"
class="gmail-m_-4881497591274067376gmail-tL8wMe
gmail-m_-4881497591274067376gmail-EMoHub"
style="text-align:left" dir="ltr"></span></div>
<div><span id="gmail-m_-4881497591274067376gmail-:4u.co"
class="gmail-m_-4881497591274067376gmail-tL8wMe
gmail-m_-4881497591274067376gmail-EMoHub"
style="text-align:left" dir="ltr">[0] <a
href="https://grasswiki.osgeo.org/wiki/Vector_topology_cleaning"
moz-do-not-send="true">https://grasswiki.osgeo.org/wiki/Vector_topology_cleaning</a><br>
</span></div>
</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
grass-user mailing list
<a class="moz-txt-link-abbreviated" href="mailto:grass-user@lists.osgeo.org">grass-user@lists.osgeo.org</a>
<a class="moz-txt-link-freetext" href="https://lists.osgeo.org/mailman/listinfo/grass-user">https://lists.osgeo.org/mailman/listinfo/grass-user</a></pre>
</blockquote>
<pre class="moz-signature" cols="72">--
Micha Silver
Ben Gurion Univ.
Sde Boker, Remote Sensing Lab
cell: +972-523-665918</pre>
</body>
</html>