判断一个(火星坐标)坐标是否在另一个坐标 x 米范围内

2015-05-28 11:23:29 +08:00
 Lilacs

请教了各位了。。。

3295 次点击
所在节点    问与答
16 条回复
mhycy
2015-05-28 11:27:36 +08:00
火星坐标是啥?
另外这个需求确定不是直角三角求斜边长?
mhycy
2015-05-28 11:29:47 +08:00
补充:
如果是加偏坐标要求距离的话, 因为加偏是非线性的,所以在没有转换成实际坐标之前, 无法运算
Lilacs
2015-05-28 11:30:53 +08:00
@mhycy 火星坐标就是咱们国家使用的坐标系,从腾讯地图中取出的点给我出的坐标就是这个。
mhycy
2015-05-28 11:33:35 +08:00
@Lilacs
然后就这个坐标系在纠偏前还能运算么...囧
记忆中那纠偏函数的源代码是国家顶级机密来的吧
Lilacs
2015-05-28 11:36:50 +08:00
@mhycy
我在github中找到了这个https://github.com/hiwanz/wgs2mars.js,转换后的坐标在腾讯地图中显示正常。
还真是,那么连个加偏坐标可以判断出来吗?
mhycy
2015-05-28 11:48:55 +08:00
@Lilacs 记忆中只有用真实的GPS数据去拟合加偏函数..
这货到底是不是真实的算法这个就不清楚了,有个算法名wgtochina_lb
有坐标只要纠偏就好了...
fangjinmin
2015-05-28 12:33:15 +08:00
假设是2维坐标的话,基点坐标为(a1,b1),目标坐标为(a2,b2),判断的条件为

(|a1-a2|绝对值的平方+|b1-b2|的绝对值的平方)再开平方< X 米
mhycy
2015-05-28 12:45:32 +08:00
@fangjinmin 应该需要考虑,这是一个球面坐标...
choury
2015-05-28 12:58:45 +08:00
@fangjinmin 不能这么算吧,这个加偏函数不是线性的,我觉得火星坐标是不能直接计算的
processzzp
2015-05-28 13:06:56 +08:00
@mhycy 这东西现在算不上机密了,几年前就有人(具体是谁忘了,当时互联网还不怎么发达)用搜狗还是高德的API把实际坐标--火星坐标的对应关系一点点爬出来了。
吐槽:这玩意鸟用没有,就增加了一堆麻烦,真想打兔子的机构早就研究得一清二楚了,反而害苦了一群开发者,不知道浪费了多少人力
Lilacs
2015-05-28 13:14:55 +08:00
换算一下思路,就是两个坐标点的距离,结果换算为米。在火星坐标系内。
GhostFlying
2015-05-28 13:34:24 +08:00
看你精度要求,转换回 wgs 84 目前只看到二分逼近的做法,10次一般能把误差控制在 0.5 米左右,如果更高,只能增加迭代次数。

但是如果小范围精度要求不高的话,甚至没必要转换回来,直接火星坐标算就好了。
wesley
2015-05-28 13:41:53 +08:00
google 球面2点记录公式
wesley
2015-05-28 13:42:10 +08:00
球面2点距离公式
Lilacs
2015-05-28 14:14:54 +08:00
Lilacs
2015-05-29 14:50:27 +08:00
到最后我是这样算的,在坐标中1米 = 0.00001

public static boolean isArrive(double lat, double lng, double targetLat, double targetLng, int scope) {

double latDistance = Math.abs(lat - targetLat);
double lngDistance = Math.abs(lng - targetLng);

double targetScope = scope * 0.00001;
if(latDistance < targetScope && lngDistance < targetScope) {
return true;
}

return false;
}

如果坐标范围过大就会有问题,但是我使用的基本都在北京。

纬度在赤道附近0.00001 > 1米 在极点附近 基本 = 0

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/194340

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX