利用GeoTools判断坐标是否在多边形内

bluesbruce

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

阅读 3.4k
183 声望
15 粉丝
0 条评论
183 声望
15 粉丝
文章目录
宣传栏