2012-07-07 77 views
0

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

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

这是可能的吗?我将如何去写这个算法呢?另外,是否有可能通过用户仅向程序提供两个点的位置来完成此操作?谢谢!

回答

1

假设您的商场足够小,您可以将Lat和Long视为线性,即与X和Y相同,那么只需应用缩放和旋转transformation matrices即可。

如果你的数学是你可能想试试这个simple introduction

您还需要能够经/纬度和米(或英尺或像素)之间进行转换有点弱。 纬度(多远北/南)很容易 - 因为通过两极画出的圆圈长度相同,所以纬度总是相同的米数(与您的准确度相同)。经度更加棘手,因为随着你走向更远的北方,画在地球上的圆圈变小 - 请参阅Expressing_latitude_and_longitude_as_linear_units

或者,如果知道已知点的纬度/经度(例如拐角),则可以从度数转换为米/英尺/像素直接。记住N-S量表与E-W量表不同。

+0

感谢您的帮助和资源!我很感激。 – 2012-07-07 01:02:21

0

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

假设你在地图坐标系中有两个点X1,Y1和X2,Y2(如果你有扫描地图,或者是毫米,或者其他的话)。

在这两点上,你也知道UTM中的坐标,并让它们为x1,y1和x2,y2。

从这些信息中可以推导出旋转和缩放需要从UTM改变映射,反之亦然。

在这一点上,考虑到其中,你知道的地图坐标X3,Y3任何其它点,其UTM坐标可以被计算出来。

假设X和Y轴有UTM参考相同的方向(为此,你需要管理的旋转,这是更复杂 - 一个小三角参与),

x2-x1 = Zx * (X2-X1) 
x3-x1 = Zx * (X3-X1) 

,因此

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以毫秒为单位,你就可以拿回来经度和忘记了毫秒;和经度将是可用的和正确。如果你不偏离你的两点;如果你不让他们离得太远。一个大商场是好的,一个城市......不太好。

的算法是非常基本的,我希望通过制图员和数学家的一群愤怒的暴徒(,我会已经活该)很快被私刑处死,但对于小面积允许考虑地球作为局部平坦,它只是可能会工作。

+0

感谢您的帮助!你有任何联系信息?如果我无法弄清楚,我可能会付给你编码算法给我。 – 2012-07-07 01:03:42

+0

我会很高兴地收到“接受答案”,但如果我问的钱,我有资格成为偷:-):该代码是几乎所有有!如果你想做更专业的工作,或者需要平台特定的优化,那么马丁贝克特建议的矩阵编码就是要走的路。使用Excel电子表格输入数据十分钟,然后您将自行完成。 – LSerni 2012-07-07 01:08:37

相关问题