判断点在凸多边形内(基于经纬度坐标)
2017-07-04 16:24
501 查看
private boolean isContain(double center_lng, double center_lat, List<Map<String, Double>> array_points) { double total_angle = 0; for (int i = 0; i < array_points.size(); i++) { Map<String, Double> point = array_points.get(i); Map<String, Double> next_point = null; if (i < array_points.size() - 1) { next_point = array_points.get(i + 1); } else { next_point = array_points.get(0); } double angle = getAngle(center_lng, center_lat, point.get("lng"), point.get("lat"), next_point.get("lng"), next_point.get("lat")); total_angle = total_angle + angle; } if ((int) (total_angle * 100) == (int) (2 * Math.PI * 100)) { return true; } else if (total_angle == 0) { return false; } return false; } private double getAngle(double lng1, double lat1, double lng2, double lat2, double lng3, double lat3) { double distance_1_2 = getDistanceBetweenPointsNew(lat1, lng1, lat2, lng2); double distance_1_3 = getDistanceBetweenPointsNew(lat1, lng1, lat3, lng3); double distance_2_3 = getDistanceBetweenPointsNew(lat3, lng3, lat2, lng2); return Math.acos((distance_1_2 * distance_1_2 + distance_1_3 * distance_1_3 - distance_2_3 * distance_2_3) / (2 * distance_1_2 * distance_1_3)); } private double getDistanceBetweenPointsNew(double latitude1, double longitude1, double latitude2, double longitude2) { double theta = longitude1 - longitude2; double miles = (Math.sin(Math.toRadians(latitude1)) * Math.sin(Math.toRadians(latitude2))) + (Math.cos(Math.toRadians(latitude1)) * Math.cos(Math.toRadians(latitude2)) * Math.cos(Math.toRadians(theta))); miles = Math.acos(miles); miles = Math.toDegrees(miles); miles = miles * 60 * 1.1515; double feet = miles * 5280; double yards = feet / 3; double kilometers = miles * 1.609344; double meters = kilometers * 1000; return meters; }
相关文章推荐
- java实现判断一个经纬度坐标是否在一个多边形内(经自己亲测)
- 如何判断一个指定的经纬度点是否落在一个多边形内
- 输入N个点的坐标,由程序判断该N个点是否能构成一个凸多边形。(VB)
- 判断一个指定的经纬坐标是否落在一个多边形区域内?
- php+mongodb判断坐标是否在指定多边形区域内的实例
- php结合mongodb判断坐标是否在指定多边形区域内的实例
- 如何判断一个指定的经纬度点是否落在一个多边形区域内?
- 依据地图上的经纬度坐标计算某个点到多边形各边的距离
- JS判断坐标点是否在给定的多边形内
- 在Android里如何判断一个指定的经纬度点是否落在一个多边形区域内
- 判断一个坐标点是否在不规则多边形内部的算法
- 如何判断一个指定的经纬度点是否落在一个多边形内
- 如何判断一个指定的经纬度点是否落在一个多边形区域内?
- 多边形坐标点记录是顺时针还是逆时针的判断
- 经纬度坐标数据处理——基于R
- 基于Arcgis的投影坐标与经纬度坐标的相互转换代码
- 平面直角坐标系---点坐标与多边形位置判断
- 经纬度坐标下求多边形的面积
- mongodb 判断坐标是否在指定多边形区域内的方法
- 利用百度API(JavaScript 版)实现在地图上绘制任一多边形,并判断给定经纬度是否在多边形范围内。以及两点间的测距功能