你可以从这个开始:http://en.wikipedia.org/wiki/Point_in_polygon http://en.wikipedia.org/wiki/Point_in_polygon
您还可以查看JTS 拓扑套件 http://tsusiatsoftware.net/jts/main.html。
并且特别使用这个功能 http://tsusiatsoftware.net/jts/javadoc/com/vividsolutions/jts/geom/Geometry.html#within(com.vividsolutions.jts.geom.Geometry).
EDIT:这是使用 JTS 的示例:
import java.util.ArrayList;
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.LinearRing;
import com.vividsolutions.jts.geom.Point;
import com.vividsolutions.jts.geom.Polygon;
import com.vividsolutions.jts.geom.impl.CoordinateArraySequence;
public class GeoTest {
public static void main(final String[] args) {
final GeometryFactory gf = new GeometryFactory();
final ArrayList<Coordinate> points = new ArrayList<Coordinate>();
points.add(new Coordinate(-10, -10));
points.add(new Coordinate(-10, 10));
points.add(new Coordinate(10, 10));
points.add(new Coordinate(10, -10));
points.add(new Coordinate(-10, -10));
final Polygon polygon = gf.createPolygon(new LinearRing(new CoordinateArraySequence(points
.toArray(new Coordinate[points.size()])), gf), null);
final Coordinate coord = new Coordinate(0, 0);
final Point point = gf.createPoint(coord);
System.out.println(point.within(polygon));
}
}
下面是使用 AWT 的示例(它更简单并且是 Java SE 的一部分):
import java.awt.Polygon;
public class JavaTest {
public static void main(final String[] args) {
final Polygon polygon = new Polygon();
polygon.addPoint(-10, -10);
polygon.addPoint(-10, 10);
polygon.addPoint(10, 10);
polygon.addPoint(10, -10);
System.out.println(polygon.contains(0, 0));
}
}