Algorithm 如何确定地图上某个点的纬度和经度?

Algorithm 如何确定地图上某个点的纬度和经度?,algorithm,maps,latitude-longitude,Algorithm,Maps,Latitude Longitude,我想做一个映射应用程序,映射室内的地方,如商场。我需要能够计算特定地图上任何点的纬度和经度(即知道特定商店的纬度和经度)。我知道地图可能是旋转的,并且没有与正北对齐,所以我首先需要提供关于几个点的信息来进行“校准”,以便知道地图的方向,如果你明白我的意思的话 我的地图将被格式化为网格/坐标系。我将提供地图上三个特定点的纬度和经度。在提供这些信息之后,我如何计算地图上任何其他点的纬度和经度?例如,我有一张地图,我告诉我的程序(0,0)、(5,5)和(10,12)的纬度和经度数据。然后我输入(3,5

我想做一个映射应用程序,映射室内的地方,如商场。我需要能够计算特定地图上任何点的纬度和经度(即知道特定商店的纬度和经度)。我知道地图可能是旋转的,并且没有与正北对齐,所以我首先需要提供关于几个点的信息来进行“校准”,以便知道地图的方向,如果你明白我的意思的话

我的地图将被格式化为网格/坐标系。我将提供地图上三个特定点的纬度和经度。在提供这些信息之后,我如何计算地图上任何其他点的纬度和经度?例如,我有一张地图,我告诉我的程序(0,0)、(5,5)和(10,12)的纬度和经度数据。然后我输入(3,5),程序会告诉我该点的纬度和经度


这可能吗?我将如何着手编写这个算法?此外,用户仅向程序提供两点的位置是否可以这样做?谢谢 您还需要能够在lat/long和米(或英尺或像素)之间进行转换。 纬度(南北多远)很容易——因为穿过两极的圆圈长度相同,所以纬度总是相同的米数(精确到您的精度)。经度更为复杂,因为当你往北走得更远时,围绕地球画的圆圈会变小——参见


或者,如果您知道已知点(如角)的纬度/长度,您可以直接从度缩放到米/英尺/像素。请记住N-S刻度与E-W刻度不同。

这是可能的,您只需要两点的位置。如果面积足够小,你就不必担心飞机倾斜或地球是圆的

假设在地图坐标中有两个点X1,Y1和X2,Y2(如果你有一张扫描过的地图,像素就可以了,或者毫米,或者其他的)

在这两点中,你也知道坐标,比如说,UTM,设为x1,y1和x2,y2

根据此信息,您可以导出从UTM更改为map所需的旋转和缩放,反之亦然

在该点上,已知地图坐标X3、Y3的任何其他点,可以计算其UTM坐标

假设X轴和Y轴具有相同的UTM参考方向(为此,您需要管理旋转,这更复杂-涉及一点三角)

因此

 Zx = (X2-X1)/(x2-x1)

 x3 = x1 + Zx * (X3-X1)
最后

 x3 = x1 + (X3-X1)*[  (X2-X1)/(x2-x1)   ]
(方括号中的部分在确定两点的位置后不会发生变化-它将是一种校准常数)

y3和y3也是如此。请注意,Y轴可能具有与Y相反的符号

对于非常小的区域,考虑到一度等于60分钟,一分钟等于60秒,一秒等于1000毫秒,您可以将纬度和经度转换为直线任意单位。然后将纬度(或经度)转换为毫秒。你得到的数字没有什么意义——你不知道“毫秒”是什么——但是一旦你计算出,比如说,以毫秒为单位的x3,你就可以把它恢复到经度,忘记毫秒;经度将是可用的,并且大致正确。如果你没有偏离你的两点;如果你不把他们看得太远。一个大商场是可以的,一个城市。。。不太好


这个算法是非常基础的,我希望很快就会被一群愤怒的地图制作者和数学家所嘲弄(我也该得到),但是对于那些允许把地球看作是局部平坦的小区域,它可能会起作用。你有联系方式吗?如果我搞不懂,我可能会付钱给你帮我编写算法。我会很高兴收到“接受答案”,但如果我要钱,我就有资格偷窃:-):代码几乎都在那里!如果您想做更专业的工作,或者需要特定于平台的优化,那么Martin Beckett建议的矩阵编码就是一种选择。十分钟后,用Excel电子表格输入数据,您将自己计算出来。
 x3 = x1 + (X3-X1)*[  (X2-X1)/(x2-x1)   ]