Opened 10 years ago
Closed 10 years ago
#2818 closed defect (fixed)
ST_Extrude can't extrude all polygons
Reported by: | robe | Owned by: | colivier |
---|---|---|---|
Priority: | medium | Milestone: | PostGIS SFCGAL |
Component: | sfcgal | Version: | master |
Keywords: | Cc: |
Description
I'm not sure if this is perhaps something that has to be noted in the docs about setting directions of holes or perhaps ST_Extrude just doesn't work with polygons that have holes or I have to force it in a particular direction.
I tried to extrude this polygon with holes which ST_IsValid says is valid
SELECT ST_Extrude('POLYGON( (-0.25 -1.25,-0.25 1.25,2.5 1.25,2.5 -1.25,-0.25 -1.25), (2.25 0,1.25 1,1.25 -1,2.25 0),(1 -1,1 1,0 0,1 -1))'::geometry, 0,0,1)
and got the message:
NOTICE: During extrude(A, 0, 0, 1) : NOTICE: with A: POLYGON((-1/4 -5/4,-1/4 5/4,5/2 5/4,5/2 -5/4,-1/4 -5/4),(9/4 0/1,5/4 1/1,5/4 -1/1,9/4 0/1),(1/1 -1/1,1/1 1/1,0/1 0/1,1/1 -1/1)) ERROR: Polygon is invalid : interior ring 0 is oriented in the same direction as exterior ring : POLYGON((-1/4 -5/4 0/1,5/2 -5/4 0/1,5/2 5/4 0/1,-1/4 5/4 0/1,-1/4 -5/4 0/1),(9/4 0/1 0/1,5/4 1/1 0/1,5/4 -1/1 0/1,9/4 0/1 0/1),(1/1 -1/1 0/1,1/1 1/1 0/1,0/1 0/1 0/1, ********** Error ********** ERROR: Polygon is invalid : interior ring 0 is oriented in the same direction as exterior ring : POLYGON((-1/4 -5/4 0/1,5/2 -5/4 0/1,5/2 5/4 0/1,-1/4 5/4 0/1,-1/4 -5/4 0/1),(9/4 0/1 0/1,5/4 1/1 0/1,5/4 -1/1 0/1,9/4 0/1 0/1),(1/1 -1/1 0/1,1/1 1/1 0/1,0/1 0/1 0/1,
I also tried applying the sfcgal ST_ForceLHR call to see if that would ameliorate the directional issue, but it did not. http://postgis.net/docs/manual-dev/ST_ForceLHR.html
Then I tried the long available ST_ForceRHR and that also did not change the result. http://postgis.net/docs/manual-dev/ST_ForceRHR.html
Change History (4)
comment:1 by , 10 years ago
comment:2 by , 10 years ago
Milestone: | PostGIS 2.2.0 → PostGIS SFCGAL |
---|
I've added an SFCGAL milestone then similar to what we have for GEOS/GDAL/PostgreSQL when its something that has to be fixed outside of PostGIS code base.
So this would be considered fixed in SFCGAL 1.0.5 right when that gets tagged and we can close out at that point.
In meantime will build master to further test.
comment:3 by , 10 years ago
comment:4 by , 10 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
great. I'll close this out then.
That was a bug in SFCGAL, fixed in change-set bfea527.
The erroneous implementation was forcing exterior rings to be CCW and interior ring to be CW, except that it only worked for exterior. As a result the input polygon (CW ext and CCW int) was rendered invalid.