<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Hi,<br>
with a shapefile data i make a postgis layer and i have a lot of
invalid geometry when I use st_isvalid. I test the reason
(autointersect or polygon not close) and i analyse what the function
ST_MakeValid do for the correction.<br>
In general the solution is simple and i can understand what
ST_Makevalid do :<br>
<ul>
<li>for a polygon not closed the function add a new point at the
end of ring : this point is the same as the first of the ring
... This is understandable</li>
<li>some time this new point is going with autointersect and the
function make another ring (polygon) ...</li>
</ul>
<p>For a small number of cases I don't understand :<br>
</p>
<p>with geom_ok as (select
st_makevalid(ST_Polygon(ST_GeomFromText('LINESTRING<br>
(517246.650250374 6235655.09571606,<br>
517254.869230517 6235654.08725248,<br>
517254.964217886 6235654.06182677,<br>
517255.08007872 6235654.04585861,<br>
517265.885662183 6235651.10620124,<br>
517271.091480721 6235649.9650496,<br>
517278.239223978 6235650.18059235,<br>
517286.15483325 6235651.52643379,<br>
517286.418409635 6235651.54758047,<br>
517286.462909663 6235651.53834437,<br>
517286.501499884 6235651.5445841,<br>
517291.645862764 6235651.21595168,<br>
517291.731398726 6235651.19570766,<br>
517291.943664438 6235651.1664528,<br>
517297.364469745 6235649.69172334,<br>
517297.555997067 6235649.62541147,<br>
517298.039378564 6235649.29659159,<br>
517298.161447001 6235649.15597989,<br>
517300.141608557 6235646.56599323,<br>
517300.340293418 6235646.21783214,<br>
517300.449586735 6235645.64351765,<br>
517300.330781156 6235645.07109566,<br>
517300.001963754 6235644.58771219,<br>
517299.513193998 6235644.26695803,<br>
517298.938882652 6235644.15766508,<br>
517298.366463412 6235644.2764722,<br>
517297.883081918 6235644.60529208,<br>
517297.761013481 6235644.74590379,<br>
517296.088719977 6235646.93320907,<br>
517291.303418718 6235648.23504973,<br>
517286.484854463 6235648.54286948,<br>
517278.639238552 6235647.20892859,<br>
517278.463942498 6235647.19486462,<br>
517278.433254764 6235647.18841113,<br>
517270.996710657 6235646.96415949,<br>
517270.969372019 6235646.96928768,<br>
517270.939118061 6235646.96353028,<br>
517270.63072415 6235646.99822966,<br>
517265.207547013 6235648.18702783,<br>
517265.164368112 6235648.20078286,<br>
517265.135049002 6235648.20482368,<br>
517254.397374526 6235651.12600644,<br>
517246.678311041 6235652.07313058,<br>
517246.675983156 6235652.09463206,<br>
517246.111239149 6235652.95717014,<br>
517246.650250376 6235655.09571606,<br>
517246.650250374 6235655.09571606<br>
)<br>
'), 2154))as poly_ok)<br>
select st_asewkt(poly_ok) from geom_ok</p>
After the correction there is a polygon, a line and a multipoint. I
can understand the line (<small><i>with only 2 points : the system
consider the last point and the intersection point are aligned
with the first probably because the distance is very very small</i></small>)
but I don't understand the multipoint : all point in this multipoint
are in the polygon. I think it is a bug but i prefer explain in this
list before reporting.<br>
Thanks for your help.<br>
Alain.
</body>
</html>