tuple *tp = the_geom.stack->next; /* Current tuple */
int i, j, k; /* Loop counters */
int num, mum, lum; /* subgeom, point counts */
+ int minpoints;
int count = 0; /* Running counter for compound curve */
- int minpoints = 4;
num = tp->uu.nn.num;
LWDEBUG(3, "check_curvepolygon_minpoints");
/* Check each sub-geom for minpoints */
for (i = 0; i < num; i++)
{
+ minpoints = 3;
tp = tp->next;
LWDEBUGF(5, "Subgeom type %d: %p", tp->uu.nn.type, tp);
switch (TYPE_GETTYPE(tp->uu.nn.type))
}
break;
case LINETYPE:
+ minpoints = 4;
case CIRCSTRINGTYPE:
tp = tp->next;
mum = tp->uu.nn.num;
if (mum < minpoints)
{
LWDEBUGF(5, "Minpoint check failed: needed %d, got %d",
- minpoints, count);
+ minpoints, mum);
LWGEOM_WKT_VALIDATION_ERROR(PARSER_ERROR_MOREPOINTS, tp->uu.nn.parse_location);
}
break;
SELECT 'segmentize/desegmentize 1', ST_NRings(ST_LineToCurve(ST_CurveToLine(ST_GeomFromEWKT('CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 0,2 0,2 1,2 3,4 3),(4 3,4 5,1 4,0 0)))'))));\r
SELECT 'segmentize/desegmentize 2', ST_NPoints(ST_LineToCurve(ST_CurveToLine(ST_GeomFromEWKT('CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 0,2 0,2 1,2 3,4 3),(4 3,4 5,1 4,0 0)))'))));\r
SELECT 'segmentize/desegmentize 3', ST_NPoints(ST_ExteriorRing(ST_LineToCurve(ST_CurveToLine(ST_GeomFromEWKT('CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 0,2 0,2 1,2 3,4 3),(4 3,4 5,1 4,0 0)))')))));\r
+SELECT ST_GeomFromEWKT('CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 0,2 0, 2 1, 2 3, 4 3),(4 3, 4 5, 1 4, 0 0)), CIRCULARSTRING(1.7 1, 1.4 0.4, 1.7 1) )');\r
+SELECT ST_GeomFromEWKT('CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 0,2 0, 2 1, 2 3, 4 3),(4 3, 4 5, 1 4, 0 0)), (1.7 1, 1.4 0.4, 1.7 1) )');\r
+SELECT ST_GeomFromEWKT('CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 0,2 0, 2 1, 2 3, 4 3),(4 3, 0 0)), CIRCULARSTRING(1.7 1, 1.4 0.4, 1.7 1) )');\r
segmentize/desegmentize 1|0
segmentize/desegmentize 2|9
segmentize/desegmentize 3|9
+010D0000000200000001090000000200000001080000000500000000000000000000000000000000000000000000000000004000000000000000000000000000000040000000000000F03F00000000000000400000000000000840000000000000104000000000000008400102000000040000000000000000001040000000000000084000000000000010400000000000001440000000000000F03F000000000000104000000000000000000000000000000000010800000003000000333333333333FB3F000000000000F03F666666666666F63F9A9999999999D93F333333333333FB3F000000000000F03F
+ERROR: geometry requires more points
+HINT: "..., 1 4, 0 0)), (1.7 1, 1.4 0.4, 1.7 1)" <-- parse error at position 112 within geometry
+010D0000000200000001090000000200000001080000000500000000000000000000000000000000000000000000000000004000000000000000000000000000000040000000000000F03F00000000000000400000000000000840000000000000104000000000000008400102000000020000000000000000001040000000000000084000000000000000000000000000000000010800000003000000333333333333FB3F000000000000F03F666666666666F63F9A9999999999D93F333333333333FB3F000000000000F03F