| | |
| | | package com.panzhihua.common.utlis; |
| | | |
| | | import com.panzhihua.common.model.vos.grid.LatLngVO; |
| | | |
| | | import java.awt.geom.Point2D; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | import com.panzhihua.common.model.vos.grid.LatLngVO; |
| | | |
| | | public class LngLatUtils { |
| | | |
| | | public static boolean check(Point2D.Double _point, List<Point2D.Double> polygon) |
| | | { |
| | | public static boolean check(Point2D.Double _point, List<Point2D.Double> polygon) { |
| | | java.awt.geom.GeneralPath peneralPath = new java.awt.geom.GeneralPath(); |
| | | |
| | | Point2D.Double first = polygon.get(0); |
| | | peneralPath.moveTo(first.x, first.y); |
| | | polygon.remove(0); |
| | | |
| | | for(Point2D.Double d : polygon) |
| | | { |
| | | for (Point2D.Double d : polygon) { |
| | | peneralPath.lineTo(d.x, d.y); |
| | | } |
| | | |
| | |
| | | |
| | | /** |
| | | * |
| | | * @param bound 经纬度数组 |
| | | * @param pointlng 短 |
| | | * @param pointLat 长 |
| | | * @param bound |
| | | * 经纬度数组 |
| | | * @param pointlng |
| | | * 短 |
| | | * @param pointLat |
| | | * 长 |
| | | * @return |
| | | */ |
| | | public static boolean isInPolygon(List<LatLngVO> bound, double pointlng, double pointLat) |
| | | { |
| | | public static boolean isInPolygon(List<LatLngVO> bound, double pointlng, double pointLat) { |
| | | Point2D.Double point = new Point2D.Double(pointlng, pointLat); |
| | | List<Point2D.Double> pointList = new ArrayList<>(); |
| | | for (int i = 0; i < bound.size(); i++) { |
| | |
| | | |
| | | /** |
| | | * 从txt数据中获取经纬度 |
| | | * @param latlngTxt |
| | | * |
| | | * @param lngLatTxt |
| | | * @return |
| | | */ |
| | | public static List<LatLngVO> getLatLngFromText(String latlngTxt){ |
| | | public static List<LatLngVO> getLatLngFromText(String lngLatTxt) { |
| | | List<LatLngVO> rtResult = new ArrayList<>(); |
| | | String str = latlngTxt.replace("[[",""); |
| | | String str = lngLatTxt.replace("[[", ""); |
| | | |
| | | str=str.replace("]]",""); |
| | | String[] loca=str.split("],\\["); |
| | | for (int i=0;i<loca.length;i++) |
| | | { |
| | | String[] loca1=loca[i].split(","); |
| | | rtResult.add(new LatLngVO(Double.valueOf(loca1[1]), Double.valueOf(loca1[0]))); |
| | | str = str.replace("]]", ""); |
| | | String[] loca = str.split("],\\["); |
| | | for (int i = 0; i < loca.length; i++) { |
| | | String[] loca1 = loca[i].split(","); |
| | | rtResult.add(new LatLngVO(Double.valueOf(loca1[0]), Double.valueOf(loca1[1]))); |
| | | } |
| | | return rtResult; |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | String latLngTxt = "[[104.065958,30.662621],[104.06419,30.663172],[104.06315,30.660648],[104.065548,30.661036]]"; |
| | | String latLngTxt = |
| | | "[[104.066974,30.660293],[104.053394,30.658114],[104.059921,30.657076],[104.065231,30.657086]]"; |
| | | List<LatLngVO> latLngList = getLatLngFromText(latLngTxt); |
| | | |
| | | System.out.println(isInPolygon(latLngList, 104.0612, 30.6608)); |
| | | System.out.println(isInPolygon(latLngList, 104.063398, 30.657929)); |
| | | } |
| | | |
| | | } |