public class LngLatUtil
extends java.lang.Object
| 限定符和类型 | 字段和说明 |
|---|---|
private static double |
WGS84_EARTH_RADIUS
地球半径
|
private static double |
WGS84_OBLIQUENESS
WGS84 扁率
|
| 构造器和说明 |
|---|
LngLatUtil() |
| 限定符和类型 | 方法和说明 |
|---|---|
java.util.Map<java.lang.String,java.lang.Double> |
calLocationByDistanceAndLocationAndDirection(double angle,
double startLng,
double startLat,
double distance)
根据一点的坐标与距离,以及方向,计算另外一点的位置(不带入扁率)正北0度即为纬度轴,横向为经度轴
|
java.util.Map<java.lang.String,java.lang.Double> |
calLocationByDistanceAndLocationAndDirection(double angle,
double startLng,
double startLat,
double distance,
CoordinateSystemEnum coordinateSystemEnum)
带入坐标系计算距离角度外的一点
根据一点的坐标与距离,以及方向,计算另外一点的位置(不带入扁率)正北0度即为纬度轴,横向为经度轴
|
Point3D |
calLocationByDistanceAndLocationAndDirection(double angle,
Point3D point3D,
double distance)
根据一点的坐标与距离,以及方向,计算另外一点的位置(不带入扁率)正北0度即为纬度轴,横向为经度轴
|
private static boolean |
check(java.awt.geom.Point2D.Double point,
java.util.List<java.awt.geom.Point2D.Double> polygon)
一个点是否在多边形内
|
static java.lang.Double[] |
deviation(java.lang.Double[] pointMercator)
偏移
依照墨卡托坐标计算
|
double |
getDistance(double startLng,
double startLat,
double endLng,
double endLat)
计算经纬度距离(不带扁率校准, 默认为WGS84坐标)
|
double |
getDistance(double startLng,
double startLat,
double endLng,
double endLat,
CoordinateSystemEnum coordinateSystemEnum)
计算经纬度 带入坐标系进行判断后计算
|
double |
getDistanceOfMeter(double startLng,
double startLat,
double endLng,
double endLat)
计算两个经纬度位置距离(带扁率校准)
|
static boolean |
isInCircle(double lng1,
double lat1,
double lng2,
double lat2,
double radius)
判断一个点是否在圆形区域内
|
static boolean |
isInCircle(double lng1,
double lat1,
double lng2,
double lat2,
double radius,
CoordinateSystemEnum coordinateSystemEnum)
判断一个点是否在圆形区域内 带入坐标系
|
static boolean |
isInPolygon(double pointLon,
double pointLat,
cn.hutool.json.JSONArray points)
判断是否在多边形区域内
|
static boolean |
isInPolygon(double pointLon,
double pointLat,
cn.hutool.json.JSONArray points,
CoordinateSystemEnum coordinateSystemEnum)
判断是否在多边形区域内
|
static boolean |
isInSector(double startLng,
double startLat,
double angel,
double diffuse,
double checkLng,
double checkLat)
计算是否在扇形区域内
|
static boolean |
isInSector(double startLng,
double startLat,
double angel,
double diffuse,
double checkLng,
double checkLat,
java.lang.Double distance)
计算是否在扇形区域内
|
static java.lang.Double[] |
route(java.lang.Double[] cenerPoint,
java.lang.Double[] point,
java.lang.Double legel)
求一点相对于另一点旋转一定角度后的坐标
|
private static final double WGS84_EARTH_RADIUS
private static final double WGS84_OBLIQUENESS
public double getDistanceOfMeter(double startLng,
double startLat,
double endLng,
double endLat)
startLng - 起始经度startLat - 起始纬度endLng - 结束经度endLat - 结束纬度public double getDistance(double startLng,
double startLat,
double endLng,
double endLat)
startLng - 起始经度startLat - 起始纬度endLng - 结束经度endLat - 结束纬度public double getDistance(double startLng,
double startLat,
double endLng,
double endLat,
CoordinateSystemEnum coordinateSystemEnum)
startLng - 起始经度startLat - 起始纬度endLng - 结束经度endLat - 结束纬度coordinateSystemEnum - 坐标系枚举public java.util.Map<java.lang.String,java.lang.Double> calLocationByDistanceAndLocationAndDirection(double angle,
double startLng,
double startLat,
double distance)
angle - 角度,从正北顺时针方向开始计算startLng - 起始点经度startLat - 起始点纬度distance - 距离,单位mpublic java.util.Map<java.lang.String,java.lang.Double> calLocationByDistanceAndLocationAndDirection(double angle,
double startLng,
double startLat,
double distance,
CoordinateSystemEnum coordinateSystemEnum)
根据一点的坐标与距离,以及方向,计算另外一点的位置(不带入扁率)正北0度即为纬度轴,横向为经度轴
angle - 角度,从正北顺时针方向开始计算startLng - 起始点经度startLat - 起始点纬度distance - 距离,单位mcoordinateSystemEnum - 坐标系public static boolean isInCircle(double lng1,
double lat1,
double lng2,
double lat2,
double radius)
lat1 - 圆心纬度lng1 - 圆心经度lat2 - 坐标纬度lng2 - 坐标经度radius - 需要计算的半径dpublic static boolean isInCircle(double lng1,
double lat1,
double lng2,
double lat2,
double radius,
CoordinateSystemEnum coordinateSystemEnum)
lat1 - 圆心纬度lng1 - 圆心经度lat2 - 坐标纬度lng2 - 坐标经度radius - 需要计算的半径coordinateSystemEnum - 坐标系public static boolean isInPolygon(double pointLon,
double pointLat,
cn.hutool.json.JSONArray points)
pointLon - 要判断的点的纵坐标pointLat - 要判断的点的横坐标points - 经纬度json数组 "[{\"x\":120.61123416,\"y\":31.32889074,\"z\":137.05},{\"x\":120.61312695,\"y\":31.31892631,\"z\":128.61},{\"x\":120.61455616,\"y\":31.30808702,\"z\":43.66},{\"x\":120.62127327,\"y\":31.30899876,\"z\":62.21},{\"x\":120.63003506,\"y\":31.31057071,\"z\":29.43},{\"x\":120.63726235,\"y\":31.31203339,\"z\":92.90},{\"x\":120.64536616,\"y\":31.31334188,\"z\":78.36},{\"x\":120.64402082,\"y\":31.31947999,\"z\":13.19},{\"x\":120.64136126,\"y\":31.32757908,\"z\":87.36},{\"x\":120.63689776,\"y\":31.33287239,\"z\":60.62},{\"x\":120.63502091,\"y\":31.33742080,\"z\":114.21},{\"x\":120.63071787,\"y\":31.33793104,\"z\":32.99},{\"x\":120.62952446,\"y\":31.34483170,\"z\":164.79},{\"x\":120.62710968,\"y\":31.34801804,\"z\":164.15},{\"x\":120.62731359,\"y\":31.34823458,\"z\":189.53},{\"x\":120.62700980,\"y\":31.34894193,\"z\":194.24},{\"x\":120.62700980,\"y\":31.34894193,\"z\":194.24},{\"x\":120.62700980,\"y\":31.34894193,\"z\":194.24},{\"x\":120.62665860,\"y\":31.34861797,\"z\":155.41},{\"x\":120.61706620,\"y\":31.34846463,\"z\":200.05},{\"x\":120.61854348,\"y\":31.34267516,\"z\":138.68},{\"x\":120.62111689,\"y\":31.33313042,\"z\":154.61}]"public static boolean isInPolygon(double pointLon,
double pointLat,
cn.hutool.json.JSONArray points,
CoordinateSystemEnum coordinateSystemEnum)
pointLon - 要判断的点的纵坐标pointLat - 要判断的点的横坐标points - 经纬度json数组 "[{\"x\":120.61123416,\"y\":31.32889074,\"z\":137.05},{\"x\":120.61312695,\"y\":31.31892631,\"z\":128.61},{\"x\":120.61455616,\"y\":31.30808702,\"z\":43.66},{\"x\":120.62127327,\"y\":31.30899876,\"z\":62.21},{\"x\":120.63003506,\"y\":31.31057071,\"z\":29.43},{\"x\":120.63726235,\"y\":31.31203339,\"z\":92.90},{\"x\":120.64536616,\"y\":31.31334188,\"z\":78.36},{\"x\":120.64402082,\"y\":31.31947999,\"z\":13.19},{\"x\":120.64136126,\"y\":31.32757908,\"z\":87.36},{\"x\":120.63689776,\"y\":31.33287239,\"z\":60.62},{\"x\":120.63502091,\"y\":31.33742080,\"z\":114.21},{\"x\":120.63071787,\"y\":31.33793104,\"z\":32.99},{\"x\":120.62952446,\"y\":31.34483170,\"z\":164.79},{\"x\":120.62710968,\"y\":31.34801804,\"z\":164.15},{\"x\":120.62731359,\"y\":31.34823458,\"z\":189.53},{\"x\":120.62700980,\"y\":31.34894193,\"z\":194.24},{\"x\":120.62700980,\"y\":31.34894193,\"z\":194.24},{\"x\":120.62700980,\"y\":31.34894193,\"z\":194.24},{\"x\":120.62665860,\"y\":31.34861797,\"z\":155.41},{\"x\":120.61706620,\"y\":31.34846463,\"z\":200.05},{\"x\":120.61854348,\"y\":31.34267516,\"z\":138.68},{\"x\":120.62111689,\"y\":31.33313042,\"z\":154.61}]"coordinateSystemEnum - 坐标系private static boolean check(java.awt.geom.Point2D.Double point,
java.util.List<java.awt.geom.Point2D.Double> polygon)
point - 要判断的点的横纵坐标polygon - 组成的顶点坐标集合public static boolean isInSector(double startLng,
double startLat,
double angel,
double diffuse,
double checkLng,
double checkLat)
startLng - 起始经度startLat - 其实纬度angel - 需要计算的角度diffuse - 计算角度向两边扩散度数checkLng - 需要校验的经度checkLat - 需要校验的纬度public static boolean isInSector(double startLng,
double startLat,
double angel,
double diffuse,
double checkLng,
double checkLat,
java.lang.Double distance)
startLng - 起始经度startLat - 其实纬度angel - 需要计算的角度diffuse - 计算角度向两边扩散度数checkLng - 需要校验的经度checkLat - 需要校验的纬度distance - 计算距离public Point3D calLocationByDistanceAndLocationAndDirection(double angle, Point3D point3D, double distance)
angle,从正北顺时针方向开始计算 - point3D - 计算位置的distance - 距离,单位mpublic static java.lang.Double[] route(java.lang.Double[] cenerPoint,
java.lang.Double[] point,
java.lang.Double legel)
cenerPoint - 中心点point - 待旋转的点legel - 旋转角度public static java.lang.Double[] deviation(java.lang.Double[] pointMercator)
pointMercator - 点位Copyright © 2023. All rights reserved.