判断一个点是否在多边形上,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
相关推荐
geotools 判断几何要素的交点 当时想到用的GDAL 但是 交点函数返回的对象总是null , 改用 GeoTools 这个库,需要用到jar 到官网上下载,主要是jts-core-1.16.0.jar
在geotools中,我们可以创建一个由多个经纬度界址点定义的多边形,这可以视为一个“面”。然后,通过将任意经纬度点转换为Point对象,我们可以通过点在面内的包含关系判断,来确定该点是否在这个区域内。这个过程...
在矢量多边形区域中,一个坐标点的位置是否在区域内 算法: C#代码,适用于任意多边形(凹凸多边形),但是没有考虑实际误差范围的情况(应用在实际问题解决中,接近区域一定范围是可以忽略的,这个误差范围考虑后算法的...
1. **Graham's Scan**:首先选择一个最低点作为起点,然后按角度从小到大排序其余点,接着检查每个新点是否在当前线段的上方。如果是,则添加该点;如果不是,则丢弃。这样得到的序列就是逆时针的凸包。 2. **...
3. **空间查询**:使用`geotools`的SpatialQuery API,根据经纬度坐标在数据中查找包含该点的城市多边形或边界线。 4. **匹配过程**:通过比较经纬度坐标与城市边界的关系,确定最合适的匹配城市。这可能涉及到距离...
在IT行业中,尤其是在地理信息系统(GIS)领域,`shp`文件是一种常见的地理空间数据格式,用于存储矢量数据,如点、线和多边形。`shp`文件通常与`.dbf`(数据库文件)、`.prj`(投影信息文件)和其他辅助文件一起...
GeoTools是另一个开源的Java库,用于处理GIS数据。JTS作为其几何操作的底层引擎,为GeoTools提供了强大的空间计算能力。 **5. 文档和库依赖** "doc"目录可能包含JTS的API文档,帮助开发者了解如何使用其提供的接口...
3. 几何比较:JTS提供了多种比较几何对象的方法,如判断两个几何对象是否相等、是否覆盖或包含其他对象等。 4. 地理算法:JTS实现了许多地理计算算法,如最近邻搜索、最短路径计算和泰森多边形生成。 5. 测试用例...
它也被广泛地集成到了多种Java GIS项目中,例如GeoTools,这是一个开源的GIS工具包,广泛应用于Web GIS和桌面GIS领域。 在JTS的生态系统中,还存在另一个重要的项目——JSTS,它是一个JavaScript的端口,允许在...
1. **几何对象模型**:JTS提供了一系列的几何对象,如点、线、多边形等,这些对象遵循OGC(开放地理空间联盟)的标准,使得开发者可以方便地处理地理空间数据。 2. **数据结构与算法**:文档将详细介绍JTS如何存储...
4. **兼容性**:与多个桌面GIS软件(如ArcGIS、QGIS、uDig)和中间件服务器(如MapServer、GeoServer)兼容,并支持开发库(如GeoTools、OGRE、SRI ArcGIS)。 **数据读取与写入** 1. **psql语言**:通过PostgreSQL...
3. **地理空间查询**:osm-util 支持地理空间操作,比如查找某个坐标附近的节点、方式,或者判断一个几何对象是否位于另一个几何对象内等。 4. **数据转换**:该库可能包含将 OSM 数据转换为其他格式的功能,如 ...