int ring;
xmlNodePtr xa, xb;
POINTARRAY **ppa = NULL;
+ int outer_rings = 0;
for (xa = xnode->children ; xa != NULL ; xa = xa->next)
{
ptarray_append_point(ppa[0], &pt, LW_TRUE);
lwpgnotice("forced closure on an un-closed KML polygon");
}
+ outer_rings++;
}
}
-
+
+ if (outer_rings != 1)
+ lwpgerror("invalid KML representation");
+
for (ring=1, xa = xnode->children ; xa != NULL ; xa = xa->next)
{
if (!is_kml_namespace(xb, false)) continue;
if (strcmp((char *) xb->name, "LinearRing")) continue;
- ppa = (POINTARRAY**) lwrealloc((POINTARRAY *) ppa,
- sizeof(POINTARRAY*) * (ring + 1));
+ ppa = (POINTARRAY**) lwrealloc(ppa, sizeof(POINTARRAY*) * (ring + 1));
ppa[ring] = parse_kml_coordinates(xb->children, hasz);
if (ppa[ring]->npoints < 4)