判断经纬度点坐标是否在经纬度点所组成的面内

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说明此点在此面中,已测试,可以放心使用。

猜你喜欢

转载自blog.csdn.net/gpdsjqws/article/details/82996636