| 367 | |
| 368 | |
| 369 | Polygon::Ring Polygon::exteriorRing() const |
| 370 | { |
| 371 | Ring r; |
| 372 | |
| 373 | OGRwkbGeometryType t = m_geom->getGeometryType(); |
| 374 | if (t != wkbPolygon && t != wkbPolygon25D) |
| 375 | throw pdal_error("Request for exterior ring on non-polygon."); |
| 376 | |
| 377 | // Not until GDAL 2.3 |
| 378 | /** |
| 379 | OGRLinearRing *er = m_geom->toPolygon()->getExteriorRing(); |
| 380 | |
| 381 | // For some reason there's no operator -> on an iterator. |
| 382 | for (auto it = er->begin(); it != er->end(); ++it) |
| 383 | r.push_back({(*it).getX(), (*it).getY()}); |
| 384 | **/ |
| 385 | OGRLinearRing *er = |
| 386 | static_cast<OGRPolygon *>(m_geom.get())->getExteriorRing(); |
| 387 | for (int i = 0; i < er->getNumPoints(); ++i) |
| 388 | r.push_back({er->getX(i), er->getY(i)}); |
| 389 | |
| 390 | return r; |
| 391 | } |
| 392 | |
| 393 | |
| 394 | std::vector<Polygon::Ring> Polygon::interiorRings() const |
no test coverage detected