<div dir="ltr"><div dir="ltr">Just to let you know.<div>I tried the ST_CONCAVE as Jukka suggested and it works great.<br clear="all"><div><div dir="ltr" class="gmail_signature"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><br></div><div dir="ltr">Here's my code:</div><div dir="ltr"><br></div><div dir="ltr"><font face="monospace">ogr2ogr -f "ESRI Shapefile" -oo X_POSSIBLE_NAMES=X -oo Y_POSSIBLE_NAMES=Y -a_srs "EPSG:28992"  \</font></div><div dir="ltr"><font face="monospace">             -dialect SQLite -sql "select ST_Buffer(ST_ConcaveHull(ST_Collect(geometry),2.5,1), 2.5) from 'MyData'" \</font></div><div dir="ltr"><font face="monospace">             "MyData-border.shp" "MyData.csv"</font><br></div><div dir="ltr"><br></div><div>Thanks,</div><div dir="ltr">Paul<br></div></div></div></div></div></div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Op ma 6 mrt 2023 om 15:12 schreef Paul Meems <<a href="mailto:bontepaarden@gmail.com">bontepaarden@gmail.com</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Thanks Jukka for finding this.<div><br></div><div>It seems exactly what I'm looking for.</div><div>Later this week I'll give it a try to use with my CSV-file.<br clear="all"><div><div dir="ltr"><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><br>
Regards,</div><div dir="ltr"><br>Paul</div></div></div></div></div></div></div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Op zo 5 mrt 2023 om 22:20 schreef Rahkonen Jukka <<a href="mailto:jukka.rahkonen@maanmittauslaitos.fi" target="_blank">jukka.rahkonen@maanmittauslaitos.fi</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>





<div lang="FI">
<div>
<p class="MsoNormal"><span lang="EN-US">Hi,<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><br>
I did not know until today that SpatiaLite has also ST_ConcaveHull function <a href="https://www.gaia-gis.it/gaia-sins/spatialite-sql-latest.html" target="_blank">
https://www.gaia-gis.it/gaia-sins/spatialite-sql-latest.html</a> but I am glad that I know it now.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">I digitized some points (concave.jml) for a test<br>
<img border="0" width="168" height="177" style="width: 1.75in; height: 1.8472in;" id="m_-4276901975866509475m_3002833247252309562Kuva_x0020_2" src="cid:186b74242924cff311"><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">and then I used ogr2ogr and allowed ST_ConcaveHull to create holes<br>
<br>
ogr2ogr -f jml -dialect SQLite -sql "select ST_ConcaveHull(ST_Collect(geometry),3,1) from concave" out.jml concave.jml<br>
<br>
<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">and the result was<br>
<br>
<img border="0" width="167" height="177" style="width: 1.743in; height: 1.8472in;" id="m_-4276901975866509475m_3002833247252309562Kuva_x0020_3" src="cid:186b7424292692e333"><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">For fine tuning you may want to add ST_Buffer into the SQL.<br>
<br>
-Jukka Rahkonen-<br>
<br>
<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(225,225,225);padding:3pt 0cm 0cm">
<p class="MsoNormal"><b>Lähettäjä:</b> Paul Meems <<a href="mailto:bontepaarden@gmail.com" target="_blank">bontepaarden@gmail.com</a>> <br>
<b>Lähetetty:</b> perjantai 3. maaliskuuta 2023 16.47<br>
<b>Vastaanottaja:</b> <a href="mailto:gdal-dev@lists.osgeo.org" target="_blank">gdal-dev@lists.osgeo.org</a><br>
<b>Kopio:</b> Rahkonen Jukka <<a href="mailto:jukka.rahkonen@maanmittauslaitos.fi" target="_blank">jukka.rahkonen@maanmittauslaitos.fi</a>><br>
<b>Aihe:</b> Re: [gdal-dev] Convex hull with holes<u></u><u></u></p>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<p class="MsoNormal"><span lang="EN-US">Thanks Jukka for your reply.<u></u><u></u></span></p>
<div>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US">I understand it is hard. <u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US">In my case, I have a lot of data points making your edge case not a problem for me.<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US">The data points are collected driving over a field with 1 or more sensors.<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US">The result can be something like this:<br>
</span><img border="0" width="228" height="810" style="width: 2.375in; height: 8.4375in;" id="m_-4276901975866509475m_3002833247252309562Kuva_x0020_1" src="cid:186b74242925b16b22"><span lang="EN-US"><u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US">The red dots are the data points and I manually created the black border and added a small buffer.<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US">The red dots are transformed into polygons using inverse distance and afterward, I need to 'blank' the data using the black border.<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US">I can automate all steps except for creating this field border.<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US">I'm also struggling to get a proper name for my needs, making it harder to Google for a solution.<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US">'Convex hull' is not correct. What would be a more appropriate name?<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US">Regards,<u></u><u></u></span></p>
</div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US"><br>
Paul<u></u><u></u></span></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US">Op vr 3 mrt. 2023 om 14:13 schreef Rahkonen Jukka <</span><a href="mailto:jukka.rahkonen@maanmittauslaitos.fi" target="_blank"><span lang="EN-US">jukka.rahkonen@maanmittauslaitos.fi</span></a><span lang="EN-US">>:<u></u><u></u></span></p>
</div>
<blockquote style="border-top:none;border-right:none;border-bottom:none;border-left:1pt solid rgb(204,204,204);padding:0cm 0cm 0cm 6pt;margin:5pt 0cm 5pt 4.8pt">
<div>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US">Hi,<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"> <u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">So you have an uncategorized bunch of points and you wish to have an algorithm that recognizes outer and inner rings automatically? I fear that is not as easy
 as it may appear. Have a look at the annexed image with two polygons having the same vertices. How could an algorithm know which interpretation is correct? In this simple case you could make a convex hull, delete the vertices which were consumed for the outer
 ring, and create a new ring from the remaining points, but generally it will not work if there are two holes, for example.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"> <u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">If the points come from a GPX device, make the application to record indexes for both the points and the rings “ring1-point1, ring1-point2---ring2-point1,ring2-point2”
 and construct the polygon ring by ring.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"> <u></u><u></u></span></p>
<p class="MsoNormal">-Jukka Rahkonen-<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(225,225,225);padding:3pt 0cm 0cm">
<p class="MsoNormal"><b>Lähettäjä:</b> gdal-dev <<a href="mailto:gdal-dev-bounces@lists.osgeo.org" target="_blank">gdal-dev-bounces@lists.osgeo.org</a>>
<b>Puolesta </b>Paul Meems<br>
<b>Lähetetty:</b> perjantai 3. maaliskuuta 2023 14.52<br>
<b>Vastaanottaja:</b> <a href="mailto:gdal-dev@lists.osgeo.org" target="_blank">gdal-dev@lists.osgeo.org</a><br>
<b>Aihe:</b> [gdal-dev] Convex hull with holes<u></u><u></u></p>
</div>
<p class="MsoNormal"> <u></u><u></u></p>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US">How can I algorithmically create a parcel border that accounts for islands or holes within the parcel based on a list of coordinates? <u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US"> <u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US">While GDAL+GEOS has a Convex hull method, it only identifies the outer border. <u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US"> <u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US">Has GDAL+GEOS a method that I can use to detect inner holes as well, such as in a donut-shaped field?<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US"> <u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US">The output can be json or shapefile, that doesn't matter.<br clear="all">
<u></u><u></u></span></p>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US"> <u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal">Thanks,<br>
<br>
Paul Meems<u></u><u></u></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>

</div></blockquote></div>
</blockquote></div></div>