关于java:利用GeoTools判断坐标是否在多边形内

14次阅读

共计 1995 个字符,预计需要花费 5 分钟才能阅读完成。

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

正文完
 0