拥有正方形经纬度中心点、正方形边长,如何计算正方形范围内最大最小经纬度?
2017-08-17 11:45
621 查看
假设我们拥有了一个栅格边长为5米的栅格的中心点经纬度坐标,如何计算栅格的最大最小经纬度呢?
1)首先,需要把经纬度转化为mercator米坐标:
2)把栅格中心点换算为mercator米坐标后,可以根据栅格边长算出经、纬度最大、最小mercator坐标值:
3)把米坐标的最大最小经纬度转化为经纬度的最大最小经纬度,即为:栅格的最大最小经纬度。
验证数据结果:
1)首先,需要把经纬度转化为mercator米坐标:
class Geometry(_x: Double, _y: Double) { def x: Double = _x def y: Double = _y } def lonLat2Mercator_(lon: Double, lat: Double): Geometry = { val x = lon * 20037508.34 / 180; var y = Math.log(Math.tan((90 + lat) * Math.PI / 360)) / (Math.PI / 180) y = y * 20037508.34 / 180 new Geometry(x, y) }
2)把栅格中心点换算为mercator米坐标后,可以根据栅格边长算出经、纬度最大、最小mercator坐标值:
var longitude: Double = 120.099878323 var latitude: Double = 30.876723923 var abc = lonLat2Mercator_(longitude, latitude) var dfs: Geometry = mercator2lonLat(new Geometry(abc.x, abc.y)) println(dfs.x) println(dfs.y) var mercatorLngLat = lonLat2Mercator_(longitude, latitude) var minX: Double = mercatorLngLat.x - 2.5 var maxX: Double = mercatorLngLat.x + 2.5 var minY: Double = mercatorLngLat.y - 2.5 var maxY: Double = mercatorLngLat.y + 2.5
3)把米坐标的最大最小经纬度转化为经纬度的最大最小经纬度,即为:栅格的最大最小经纬度。
var leftUpLngLat: Geometry = mercator2lonLat(new Geometry(minX, maxY)) var rightDownLngLat: Geometry = mercator2lonLat(new Geometry(maxX, minY)) var minLng: Double = leftUpLngLat.x var maxLat: Double = leftUpLngLat.y var maxLng: Double = rightDownLngLat.x var minLat: Double = rightDownLngLat.y println(minLng) println(maxLng) println(minLat) println(maxLat)
def mercator2lonLat(mercator: Geometry): Geometry = { val x: Double = mercator.x / 20037508.34 * 180 var y: Double = mercator.y / 20037508.34 * 180 y = 180 / Math.PI * (2 * Math.atan(Math.exp(y * Math.PI / 180)) - Math.PI / 2) new Geometry(x, y) }
验证数据结果:
"D:\Program Files\Java\jdk1.8.0_111\bin\java。。。" com.intellij.rt.execution.application.AppMain TestScalaMain 120.099878323 30.876723923000004 120.09985586511787 120.09990078088211 30.87670464799393 30.876743198002185 Process finished with exit code 0
相关文章推荐
- PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
- 根据已知经纬度和指定的范围求出最大及最小的经纬度
- PHP计算当前坐标3公里内4个角落的最大最小经纬度实例???
- C#以中心点经纬度和范围半径为基准计算矩形四个顶点的经纬度
- PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
- PHP根据中心经纬度和半径画圆圈得出的最大最小经纬度
- POJ 3301 (坐标变换、三分枚举计算 点集最小正方形覆盖)
- DataPicker设置时间范围 最大时间和最小时间
- php求出当前坐标 3公里内4个角落的最大最小经纬度
- 算法训练 最大值与最小值的计算
- (kruscal12.3.5)POJ 2485 Highways(使用kruscal来计算最小生成树的最大边)
- 微信 根据当前地理位置经纬度计算1000米以内的经纬度范围 php版
- 地图按范围查找-经纬度计算
- python3-开发进阶 heapq模块(如何查找最大或最小的N个元素)
- 根据类Student的定义,创建五个该类的对象,输出每个学生的信息, 计算并输出这五个学生Java语言成绩的平均值,以及计算并输出他们Java语言成绩的最大值和最小值。
- PHP版根据经纬度和半径计算出经纬度的范围
- 【转】那我们是如何计算出客户地址多少米范围内有哪些门店呢
- poj2309 计算完全二叉树中最大节点和最小节点值
- awk命令计算一列数值的总和,平均值,最大值,最小值
- delphi 随机函数的利用random 取10个介于1000与2000之间的随机数,并计算它们的最大,最小值及总和