/**
* Copyright (c) 2009-2011, chunquedong(YangJiandong)
*
* This file is part of ChunMap project
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE(Version >=3)
*
* History:
* 2010-05-05 Jed Young Creation
*/
package chunmap.model.relate.relateop;
import chunmap.model.geom.GeoPoint;
import chunmap.model.geom.Geometry;
import chunmap.model.geom.Ring;
import chunmap.model.geom.Polygon;
import chunmap.model.relate.ComputeIm;
import static chunmap.model.relate.IntersectionMatrix.*;
/**
* disjion,within,onBoundary
*
* @author chunquedong
*
*/
class Point_LinearRing extends ComputeIm {
public Point_LinearRing(GeoPoint p1, Ring r2) {
g1 = p1;
g2 = r2.toPolygon();
}
@Override
protected int inner2innerDim(Geometry g1, Geometry g2) {
GeoPoint p1 = (GeoPoint) g1;
Ring r2 = ((Polygon) g2).getShell();
// 在边界
if (im.get(Inner, Border) != EmptyDim)
return EmptyDim;
// 内部
if (r2.containIn(p1.getCoordinate()))
return PointDim;
return EmptyDim;
}
@Override
protected boolean within(Geometry g1, Geometry g2) {
if (im.get(Inner, Border) != EmptyDim)
return true;
if (im.get(Inner, Inner) != EmptyDim)
return true;
else
return false;
}
}