Hi Alexandre, I can reproduce the problem you reported with version
3.3.0, could you please file a ticket on trac.osgeo.org/postgis with
all the detail ?  It sounds like a regression.
Use component "Topology" please.

I confirm using 2D only works fine.

Gory details: the problem likely lays in _lwt_MakeRingShell which
was recently changed to NOT use GEOS but rather do things internally,
to reduce overhead. The internal implementation is NOT dropping the Z
as the geos implementation did.

Your filing a ticket will greatly help :)

--strk;

On Fri, Aug 26, 2022 at 11:14:11AM +0000, Alexandre Silva wrote:
> Hello,
> 
> I'm having some trouble creating a 3D topology using totopogeom method, I 
> don't know if I'm not using the functions correctly or if there's indeed a 
> bug, so any help would be appreciated.
> 
> I reduced the problem to an example with two lines.
> The first line is added with no errors to the topology but the second one 
> throws this error "Corrupted topology: ring of edge -3 is geometrically 
> not-closed".
> The second line intersects with the first one, but there's no vertex on the 
> intersection.
> I found two workarounds but both of them have some disadvantages in my point 
> of view.
> The first one was to add manually a vertex on the intersection (this involves 
> someone doing that work manually).
> The other one was to add the start and end point of every line using 
> topogeo_addpoint before calling totopogeom (this involves remembering to do 
> this every time that I create a topology and I think it's redundant and 
> overhead for most cases).
> 
> https://imgur.com/a/FgIVyMO - here is the visual of the data for the error 
> and non-error approach
> https://pastebin.com/CR5dNYSZ - here is a script to emulate the error, with 
> the two workarounds commented
> 
> Not having much knowledge of the c code base, just looking at the code 
> surrounding the error 
> (https://www.postgis.net/docs/doxygen/3.0/d6/d03/lwgeom__topo_8c_source.html),
>  my wild guess is that when it creates the ring of the newly closed area, and 
> as there is no vertex on the intersection so no snap made, the ring is closed 
> on 2D dimension but there is a 3D gap that makes the ring not geometrically 
> closed. My reasoning for this is that the same data with a 2D topology has no 
> errors and if I reverse the insertion order (there would be a node on the 
> intersection), it also works. I can also be completely wrong.
> 
> This error was tested on docker image postgis/postgis:14-3.2-alpine with 
> postgis version:
> POSTGIS="3.2.1 0" [EXTENSION] PGSQL="140" GEOS="3.10.2-CAPI-1.16.0" 
> PROJ="8.2.0" LIBXML="2.9.13" LIBJSON="0.15" LIBPROTOBUF="1.4.0" WAGYU="0.5.0 
> (Internal)" TOPOLOGY
> 
> There's no error in this version (also running in docker):
> POSTGIS="3.0.1 ec2a9aa" [EXTENSION] PGSQL="120" GEOS="3.7.1-CAPI-1.11.1 
> 27a5e771" SFCGAL="1.3.6" PROJ="Rel. 5.2.0, September 15th, 2018" GDAL="GDAL 
> 2.4.0, released 2018/12/14" LIBXML="2.9.4" LIBJSON="0.12.1" 
> LIBPROTOBUF="1.3.1" WAGYU="0.4.3 (Internal)" TOPOLOGY RASTER
> 
> Thanks,
> Alexandre Silva
_______________________________________________
postgis-users mailing list
postgis-users@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/postgis-users

Reply via email to