Ejemplo n.º 1
0
bool SimplePointInAreaLocator::containsPoint(const Coordinate& p,const Geometry *geom) {
    if (typeid(*geom)==typeid(Polygon)) {
        return containsPointInPolygon(p,(Polygon*)geom);
    } else if ((typeid(*geom)==typeid(GeometryCollection)) ||
               (typeid(*geom)==typeid(MultiPoint)) ||
               (typeid(*geom)==typeid(MultiLineString)) ||
               (typeid(*geom)==typeid(MultiPolygon))) {
        GeometryCollectionIterator geomi((GeometryCollection*)geom);
        while (geomi.hasNext()) {
            const Geometry *g2=geomi.next();
            if (g2!=geom)
                if (containsPoint(p,g2))
                    return true;
        }
    }
    return false;
}
Ejemplo n.º 2
0
bool
SimplePointInAreaLocator::containsPoint(const Coordinate& p,const Geometry *geom)
{
	if (const Polygon *poly = dynamic_cast<const Polygon*>(geom))
	{
		return containsPointInPolygon(p, poly);
	}
	
	if (const GeometryCollection *col = dynamic_cast<const GeometryCollection*>(geom))
	{
		for (GeometryCollection::const_iterator
				it=col->begin(), endIt=col->end();
				it != endIt;
				++it)
		{
			const Geometry *g2=*it;
			assert (g2!=geom); 
			if (containsPoint(p,g2)) return true;
		}
	}
	return false;
}