2011-05-24 101 views
2

我是C#.NET的初学者,我在一个项目上处理接近地图。这个地图包含跑道的周边区域,飞行时可以飞行的区域。 这张地图是一个位图image.it,它包含图像边界的经度和纬度!获取位图中两点之间的像素数

现在该项目的目标是根据地图上边界上给定的地质坐标,获得地图上点的地质坐标(拉特/长)(当点击或在该点上鼠标悬停时) map.so如果我们使用lats/long坐标为点提供输入,则可以插入地图上的其他点。

假设任何两个经度之间有X个像素,任意两个纬度之间有Y个像素。如果我们设置了一个参考点,则根据距离(单独在x和y方向上参考点的像素数)通过鼠标指针悬停或点击的像素,我们可以在小窗口中获取该点的拉特/经度(可能像工具提示或弹出)。

包围内插的数学可以是:

新LAT = REF LAT + [参考LAT(仅分钟)/ Y] *(参考点和新点中的像素之间的垂直距离)

新long = ref long - [ref long(only minutes)/ X] *(参考点与新点之间的水平距离,以像素为单位)。我还需要找到由加入中点和新点的线所形成的角度(鼠标悬停或点击的位置),这个点位于运行方式中心的中点(位于图的中心)与地图的垂直。

所以任何人请给我想法如何启动项目和什么是东西(工具栏控件,方法)我需要建立包含图片窗口和弹出窗口(包含关于该点或像素的信息)在哪里我曾经点击鼠标。提前感谢。

回答

1

您的问题与您的需求非常具体,并且有几个元素可能是他们自己的问题。你可能想把它分解成几个问题,或者独立研究每个项目。例如

你想看看WPFWindows Forms。您需要了解如何calculate the angle between two points

3

在标题中提出的问题进行回答如下:

double distance = Math.Sqrt(Math.Pow(x2 - x1, 2) + Math.Pow(y2 - y1, 2)); 

这是在一个平面上两点之间的距离,因此,在一个位图。

身体问的问题根本没有回答。如果您有给定的地图,则定义两个坐标之间距离的函数可能不是线性的。这里有一篇关于Map projection的文章,它显示了一些不同的地图类型。为了能够计算出你需要的东西,你首先需要知道你实际工作的地图是什么样的,并且相应地调整你的公式。

如果您的地图只有小尺寸,这可能没有太大区别。如果这只是一个机场,那么你在谈论跑道,那么投影不一定是问题。如果你正在研究不同机场的两条跑道之间的距离,那将是另一回事。

相关问题