判斷經緯度點座標是否在經緯度點所組成的面內
阿新 • • 發佈:2018-11-12
maven的pom配置
<dependency> <groupId>com.vividsolutions</groupId> <artifactId>jts</artifactId> <version>1.13</version> </dependency>
jts包,大概的思想就是經緯度組成一個封閉幾何圖形,然後看座標點是否落在於此圖形中,可以用於解決諸如點面選擇這類問題上。
程式碼
/** * @auther: qiwenshuai * @param: [xys, lng, lat] * xys:經緯度點組成的封閉圖形,格式為經度,緯度,經度,緯度 * lng:經度; * lat:緯度 * @return: java.lang.Boolean * @description: 電子圍欄多邊形判斷經緯度點是否在多邊形內 * @requestJson: * @createTime: 18-10-10 下午2:37 * @editTime: */ private static Boolean polygonJudgment(String xys, Double lng, Double lat) { String[] strings = xys.split(","); Coordinate[] coordinates = new Coordinate[strings.length / 2]; try { for (int i = 0; i < strings.length; i += 2) { coordinates[i / 2] = new Coordinate(Double.parseDouble(strings[i]), Double.parseDouble(strings[i + 1])); } GeometryFactory factory = new GeometryFactory(); if (coordinates.length > 3) { LinearRing shell = factory.createLinearRing(coordinates); Polygon polygon = factory.createPolygon(shell, null); if (polygon.contains(factory.createPoint(new Coordinate(lng, lat)))) { return true; } } } catch (Exception ignored) { return false; } return false; }
返回true說明此點在此面中,已測試,可以放心使用。