geotools判断一个点是否在多边形上

来源:互联网 发布:ubuntu 安装区间 编辑:程序博客网 时间:2024/05/23 18:17

判断一个点是否在多边形上,GIS里经常要用的功能,但在平面几何上也是可用的。

这里借助大名鼎鼎的geotools实现

 jar包依赖,pom.xml


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>


    <groupId>com.wisely</groupId>
    <artifactId>point</artifactId>
    <version>1.0-SNAPSHOT</version>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <geotools.version>13.1</geotools.version>
    </properties>


    <dependencies>
        <dependency>
            <groupId>org.geotools</groupId>
            <artifactId>gt-geojson</artifactId>
            <version>${geotools.version}</version>
        </dependency>
        <dependency>
            <groupId>org.geotools</groupId>
            <artifactId>gt-geometry</artifactId>
            <version>${geotools.version}</version>
        </dependency>
        <dependency>
            <groupId>org.geotools</groupId>
            <artifactId>gt-epsg-hsql</artifactId>
            <version>${geotools.version}</version>
        </dependency>
        <dependency>
            <groupId>org.geotools</groupId>
            <artifactId>gt-jts-wrapper</artifactId>
            <version>${geotools.version}</version>
        </dependency>
    </dependencies>


    <repositories>
        <repository>
            <id>maven2-repository.dev.java.net</id>
            <name>Java.net repository</name>
            <url>http://download.java.net/maven/2</url>
        </repository>
        <repository>
            <id>osgeo</id>
            <name>Open Source Geospatial Foundation Repository</name>
            <url>http://download.osgeo.org/webdav/geotools/</url>
        </repository>
    </repositories>

</project>


代码:

 String wktPoly = "POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))"; //请自行搜素了解wkt格式
 String wktPoint = "POINT (30 30)";  
WKTReader reader = new WKTReader(JTSFactoryFinder.getGeometryFactory());
        GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(null);
Geometry point = reader.read(wktPoint);
Geometry poly = reader.read(wktPoly);
poly.contains(point); //返回true或false

0 0
原创粉丝点击