| 229 | |
| 230 | |
| 231 | double Polygon::area() const |
| 232 | { |
| 233 | if (!valid()) |
| 234 | return 0; |
| 235 | |
| 236 | throwNoGeos(); |
| 237 | |
| 238 | OGRwkbGeometryType t = m_geom->getGeometryType(); |
| 239 | // Not until GDAL 2.3 |
| 240 | /** |
| 241 | if (t == wkbPolygon || t == wkbPolygon25D) |
| 242 | return m_geom->toPolygon()->get_Area(); |
| 243 | else if (t == wkbMultiPolygon || t == wkbMultiPolygon25D) |
| 244 | return m_geom->toMultiPolygon()->get_Area(); |
| 245 | **/ |
| 246 | if (t == wkbPolygon || t == wkbPolygon25D) |
| 247 | { |
| 248 | OGRPolygon *p = static_cast<OGRPolygon *>(m_geom.get()); |
| 249 | return p->get_Area(); |
| 250 | } |
| 251 | else if (t == wkbMultiPolygon || t == wkbMultiPolygon25D) |
| 252 | { |
| 253 | OGRMultiPolygon *p = static_cast<OGRMultiPolygon *>(m_geom.get()); |
| 254 | return p->get_Area(); |
| 255 | } |
| 256 | return 0; |
| 257 | } |
| 258 | |
| 259 | |
| 260 | bool Polygon::covers(const PointRef& ref) const |