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

geotools

GeoTools是一个使用JAVA开发的开源GIS工具。可以开发符合标准的地理信息系统及相关应用。具体使用及详情可以百度一下。本文主要讲述如何利用GeoTools判断坐标是否在多边形内。

POM.xml


  org.geotools
  gt-jts-wrapper
  23.2

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 WKT格式
   */
  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


  
      alimaven
      aliyun maven
      http://maven.aliyun.com/nexus/content/groups/public/
      *,!osgeo
    

pom.xml


  
  
    osgeo
    OSGeo Release Repository
    https://repo.osgeo.org/repository/release/
    
      false
    
    
      true
    
  

有私服

Nexus创建maven2(proyx),镜像https://repo.osgeo.org/repository/release/。将仓库加入group

你可能感兴趣的:(java,geo,多边形,maven)