首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JAVA :点在多边形中?如何检查用户的位置是否落在一个kml多边形内?

JAVA :点在多边形中?如何检查用户的位置是否落在一个kml多边形内?
EN

Stack Overflow用户
提问于 2016-10-14 18:30:18
回答 2查看 5K关注 0票数 1

我有包含区域多边形的.kml形状文件,我想要做的是找出特定的标记或点位于多边形内部。我想用java做这件事。有没有可以解析.KML文件的库?

EN

回答 2

Stack Overflow用户

发布于 2016-10-14 23:09:53

JTS Topology Suite是在地理空间环境中正确计算几何关系的一个很好的选择。可以使用JAKGIScore等Java库轻松解析KML,您可以在这些库中访问特性的坐标。

下面是使用JTS测试地理空间点是否在多边形内部的Java代码片段。

代码语言:javascript
复制
import org.locationtech.jts.geom.*;

// parse KML using JAK or another library
// ...
GeometryFactory gf = new GeometryFactory();
// create polygon
int numPoints = ...
Coordinate[] points = new Coordinate[numPoints];
// set points
points[0] = new Coordinate(...);
//...
LinearRing jtsRing = gf.createLinearRing(points);
Polygon poly = gf.createPolygon(jtsRing, null);

// now create point to test if contained inside polygon
Coordinate coord = new Coordinate(lon, lat);
Point pt = gf.createPoint(coord);
if (poly.contains(pt)) {
  // point is contained within bounds of polygon
  // do something here
}

contains()几何谓词在JTS javadoc中定义。

票数 5
EN

Stack Overflow用户

发布于 2016-10-14 18:43:19

为了解析KML数据,这里有一个库(我花了两秒钟时间用谷歌搜索):https://github.com/micromata/javaapiforkml

要检查坐标是否落入形状中,可以使用库提供的方法(没有检查)-或者,您可以从形状的坐标创建Java AWT Polygon (只需将它们视为2D表面上的点)。Polygon提供了一种contains(Point2D)方法。

https://docs.oracle.com/javase/7/docs/api/java/awt/Polygon.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40040983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档