从KML

时间:2015-07-23 01:20:00

标签: javascript java kml polygon

我正在开发一款应用程序来测试某个坐标是否在" beam"卫星转发器。除了打开多边形的情况之外,我的代码运行良好。我只是通过在末尾添加一个与第一个相同的坐标来关闭这些多边形,但这不是一个好的方法,如我附加的图像中的情况所示。黑色表示它们应该如何完成。 Google Earth Screenshot

我正在解析包含这些以LinearRing形式存在的多边形的KML。它们并不总是逆时针方向,因为它们应该是这样的,所以我无法摆脱那条线索。

对于黄色示例,我考虑过只使用两端的坐标并固定经度并生成纬度值,直到它们匹配为止。 由于极点问题,这种方法对于蓝色示例失败,但是一旦我到达极点,我可以翻转180度。我也不确定如何决定上下纬度。显然,半圆向北开放,所以我会这样做,但由于红色的例子,我无法确定它是如何打开的可靠测试。它主要向北开放(这是它应该的方式),但结束开始向南,所以我不能只测试两端,因为它看起来像是向南开放。有没有办法测试抛物线的主要方向"主要是"打开了?

可能使其变得简单的事情是,由于它是地球卫星,它只能看到地球的一半以纬度0度为中心。这就是为什么我想要在经度上下移动。

我正在考虑的另一件事......我可以将其视为伪笛卡尔系统,因为我是一颗看着地球一半的卫星。它几乎类似于偏斜的x-y系统。

我的问题是,完成多边形和保留预期光束模式的最佳方法是什么?

编辑:我可以使用终点计算两端之间的点,然后使用原始曲线的中点获得平分线的斜率。这将为我提供如何开放的方向。

y+, x+ : it opens toward the upper right
y+, x- : it opens toward the upper left
y-, x+ : it opens toward the lower right
y-, x- : it opens toward the lower left

从那里,我不确定如何生成积分。我可以只使用其中一个终点的经度,并在遍布全球的纬度迭代时保持固定,直到它与另一个终点的纬度相匹配?我觉得我过于简单了。我讨厌得到它"工作"然后意识到这是浪费,因为它只适用于某个测试用例。

0 个答案:

没有答案