1000个地理坐标,任意选中一个,找出其中最接近的一个
地理坐标包括(经度,纬度),请问这个怎么算?如果要找出最接近的3个,又要怎么算? 内存只有128MB --------------------编程问答-------------------- 根据用途,算法也不一样。你要给弹道导弹用?还是给城市导航用? --------------------编程问答--------------------
两点之间的距离:((x2-x1)^2 + (y2-y1)^2)^0.5
如果单纯比较,开平方可以省略。 --------------------编程问答-------------------- 点和点的距离 算起来很简单的 1000个而已 用不了多少时间的 --------------------编程问答--------------------
呵呵 你太拽了吧 --------------------编程问答-------------------- 城市导航用. --------------------编程问答-------------------- 公式的话要如何表达? --------------------编程问答--------------------
地球表面是一个近似球面(可以认为它是个球面),经纬度是球面坐标的一种形式。
球面上两点弧距公式是:
d(x1,y1,x2,y2)=r*arccos(sin(x1)*sin(x2)+cos(x1)*cos(x2)*cos(y1-y2))
其中r=地球半径。地球平均半径为:6371.3km=6371300m --------------------编程问答--------------------
因为只是在一个城市里?是否可以假设是一个平面,平面的公式又应该是怎样的呢? --------------------编程问答--------------------
Private Sub Command1_Click()--------------------编程问答--------------------
'根据两点坐标计算两点水平距离
Dim X1, Y1, X2, Y2 As Double
Dim SD As Double
A: X1 = 55458.325: Y1 = 55485.456
B: X2 = 55244.254: Y2 = 25425.252
SD = Format(Sqr(Abs(Val(Y2) - Val(Y1)) ^ 2 + Abs(Val(X2) - Val(X1)) ^ 2), "#.###") 'A-B 水平距离
MsgBox SD
End Sub
d(x1,y1,x2,y2)=SQR(abs(x1-x2)^2*xs+abs(y1-y2)*ys)
其中xs、ys分别是该纬度下经、纬度距离平均值。
--------------------编程问答-------------------- 上面公式写得有些错误:
d(x1,y1,x2,y2)=SQR(abs(x1-x2)^2*xs+abs(y1-y2)^2*ys)
--------------------编程问答-------------------- 模拟一下C++里的数据结构。。比如二叉树什么的
补充:VB , 基础类