geotools判断一个点是否在多边形上
判断一个点是否在多边形上,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
人在山中,才知道,白云也可以抓上一把,苍翠竟有清甜的味道。
人在山中,才知道,高度永远是一个变量,而快乐则是附于中跋涉过程的函数。
人在山中,才知道,庄严是望远时的一种心境,高处才能指点江山。