LWPOINT * lwpoint_grid(LWPOINT *point, gridspec *grid);
LWPOLY * lwpoly_grid(LWPOLY *poly, gridspec *grid);
LWLINE *lwline_grid(LWLINE *line, gridspec *grid);
+LWCIRCSTRING *lwcirc_grid(LWCIRCSTRING *line, gridspec *grid);
POINTARRAY *ptarray_grid(POINTARRAY *pa, gridspec *grid);
Datum LWGEOM_snaptogrid(PG_FUNCTION_ARGS);
Datum LWGEOM_snaptogrid_pointoff(PG_FUNCTION_ARGS);
return oline;
}
+LWCIRCSTRING *
+lwcirc_grid(LWCIRCSTRING *line, gridspec *grid)
+{
+ LWCIRCSTRING *oline;
+ POINTARRAY *opa;
+
+ opa = ptarray_grid(line->points, grid);
+
+ /* Skip line3d with less then 2 points */
+ if ( opa->npoints < 2 ) return NULL;
+
+ /* TODO: grid bounding box... */
+ oline = lwcircstring_construct(line->srid, NULL, opa);
+
+ return oline;
+}
+
LWPOLY *
lwpoly_grid(LWPOLY *poly, gridspec *grid)
{
case MULTILINETYPE:
case MULTIPOLYGONTYPE:
case COLLECTIONTYPE:
+ case COMPOUNDTYPE:
return (LWGEOM *)lwcollection_grid((LWCOLLECTION *)lwgeom, grid);
+ case CIRCSTRINGTYPE:
+ return (LWGEOM *)lwcirc_grid((LWCIRCSTRING *)lwgeom, grid);
default:
elog(ERROR, "lwgeom_grid: Unsupported geometry type: %s",
lwtype_name(lwgeom->type));
SELECT '#116', ST_AsText('010300000000000000');
-- #122 --
-SELECT '#122', ST_SnapToGrid(ST_GeomFromText('CIRCULARSTRING(220268 150415,220227 150505,220227 150406)'), 0.1);
+SELECT '#122', ST_AsText(ST_SnapToGrid(ST_GeomFromText('CIRCULARSTRING(220268 150415,220227 150505,220227 150406)'), 0.1));
-- #124 --
SELECT '#124a', ST_AsText(ST_GeomFromEWKT('COMPOUNDCURVE(CIRCULARSTRING(0 0,1 1,1 0),(1 0,30 5),CIRCULARSTRING(30 5,34 56,67 89))'));
SELECT '#179b', ST_MakeLine(ARRAY[NULL,NULL,NULL,NULL]);
-- #183 --
-SELECT '#183', ST_AsText(ST_LineToCurve(ST_LineMerge(ST_Collect(ST_CurveToLine(ST_GeomFromEWKT('CIRCULARSTRING(0 0, 1 1, 1 0)')),ST_GeomFromEWKT('LINESTRING(1 0, 0 1)') ))));
+SELECT '#183', ST_AsText(ST_SnapToGrid(ST_LineToCurve(ST_LineMerge(ST_Collect(ST_CurveToLine(ST_GeomFromEWKT('CIRCULARSTRING(0 0, 1 1, 1 0)')),ST_GeomFromEWKT('LINESTRING(1 0, 0 1)') ))), 1E-10));
-- #210 --
SELECT '#210a', ST_Union(ARRAY[NULL,NULL,NULL,NULL]) ;
#112|GEOMETRYCOLLECTION(POINT(-10 50))
ERROR: Geometry argument does not have an 'M' ordinate
#116|POLYGON EMPTY
-ERROR: lwgeom_grid: Unsupported geometry type: CircularString
+#122|CIRCULARSTRING(220268 150415,220227 150505,220227 150406)
#124a|COMPOUNDCURVE(CIRCULARSTRING(0 0,1 1,1 0),(1 0,30 5),CIRCULARSTRING(30 5,34 56,67 89))
ERROR: incontinuous compound curve
HINT: "...0 6),CIRCULARSTRING(30 5,34 56,67 89)" <-- parse error at position 85 within geometry
#179a|
NOTICE: No points in input array
#179b|
-#183|COMPOUNDCURVE(CIRCULARSTRING(0 0,0.500000000000184 1.20710678118655,1 0),(1 0,0 1))
+#183|COMPOUNDCURVE(CIRCULARSTRING(0 0,0.5 1.2071067812,1 0),(1 0,0 1))
#210a|
NOTICE: No points in input array
#210b|