Sandro Santilli a écrit :
You mean curves ? No, not currently. There's no topological operation
working for curves so it would not work to do that: can't tell if two
edges cross each other until ST_Cross(curve,curve) is implemented.

With center and radius of curvature you could transform a curve into an edge.

    It is slow because it checks for intersections and performs noding for
    everything you add. I'm sure it could be made faster given enough time
    to carefully profile each use case.

With my datas, I insert 3 000 polygons into a topology in a postgis database in 20 ' (estmation not a benchmark). :

wkb parameter is a polygon (bytea)

return_value=SELECT topology.TopoGeo_AddPolygon('topo',st_geomfromwkb(:wkb,3942),0);

SELECT CASE : return_value.count
0 : no face created
1 : one face created
>1 : more than one face

1 :
with IdFA = return_value AS topoelement
INSERT INTO public.parcelle (,the_topo) VALUES (topology.CreateTopoGeom('topo',3,layertopoid,'{{" & idFA & ",3}}')) RETURNING idparcelle;

>1:
Compute Charray as topoelement array with returned values
INSERT INTO public.parcelle (,the_topo) VALUES (topology.CreateTopoGeom('topo',3,layertopoid,'" & ChArray & "')) RETURNING idparcelle;

Evry edge, node are created.
If to polygons overlaps then when creating the first one face is added., when creating the second two faces are added AND in the topogeom each object pointe on two faces with one how is the overlap.

fast and safe.










_______________________________________________
postgis-users mailing list
postgis-users@postgis.refractions.net
http://postgis.refractions.net/mailman/listinfo/postgis-users

Reply via email to