geotools
GeoTools
是一个使用JAVA
开发的开源GIS工具。可以开发符合标准的地理信息系统及相关应用。具体使用及详情可以百度一下。本文主要讲述如何利用GeoTools
判断坐标是否在多边形内。
POM.xml
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-jts-wrapper</artifactId>
<version>23.2</version>
</dependency>
JAVA
import org.geotools.geometry.jts.JTSFactoryFinder;
import org.locationtech.jts.geom.GeometryFactory;
import org.locationtech.jts.io.ParseException;
import org.locationtech.jts.io.WKTReader;
/**
* 利用GeoTools判断坐标是否在多边形内
*
* @author BBF
*/
public class GeoDemo {
/**
* 通用几何对象工厂构建器
*/
private static final GeometryFactory FACTORY = JTSFactoryFinder.getGeometryFactory(null);
private static final WKTReader WKT_READER = new WKTReader(FACTORY);
/**
* 判断点是否存在多边形内
*
* @param point 点
* @param polygon 多边形
* @return true - 在多边形内
* @throws ParseException wkt转换异常
* @see <a href="https://blog.csdn.net/lidejun152046/article/details/47128169">WKT格式</a>
*/
public static boolean contains(String point, String polygon) throws ParseException {
return WKT_READER.read(polygon).contains(WKT_READER.read(point));
}
}
测试用例
@Test
public void testContains() throws ParseException {
String wktPoint1 = "POINT (10 10)";
String wktPoint2 = "POINT (20 20)";
String wktPoly = "POLYGON ((0 0, 0 10, 10 20, 20 20, 20 0, 0 0))";
boolean test1 = GeoDemo.contains(wktPoint1, wktPoly);
boolean test2 = GeoDemo.contains(wktPoint2, wktPoly);
System.out.println("point1位置:" + test1); // true
System.out.println("point2位置:" + test2); // false
}
附录:geotools仓库引用
org.geotools
的仓库地址:https://repo.osgeo.org/repository/release/
。
特别提醒
没有发布到中央库
没有发布到中央库
没有发布到中央库
无Nexus
如果本地没有搭建Nexus私服,需要配置外部私服(如阿里云、华为云等),切记要改一下mirrorOf。
setting.xml
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>*,!osgeo</mirrorOf>
</mirror>
</mirrors>
pom.xml
<repositories>
<!-- geotools仓库 -->
<repository>
<id>osgeo</id>
<name>OSGeo Release Repository</name>
<url>https://repo.osgeo.org/repository/release/</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
有私服
Nexus
创建maven2(proyx)
,镜像https://repo.osgeo.org/repository/release/
。将仓库加入group
。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。