2011-01-05 31 views
1

我有一系列自然保留區需要使用KML數據中包含的座標在地圖上繪製爲多邊形疊加層。我在Apple網站上找到了一個教程,用於在地圖實例上顯示KML覆蓋圖。計算iPhone應用程序KML多邊形的最近點

問題是,儲量大小差別很大 - 從一個小池塘到幾百公里的大小。因此,我無法使用中心點的座標來查找最近的儲備。相反,我需要計算儲備多邊形的最近點以找到最近的點。使用KML中的數據 - 我將如何着手實現這一目標?

我只設法找到一個其他人問這並沒有一個人回答說:(

+0

你能提供一個鏈接到其他的問題嗎?你需要最近的多邊形中的實際最近點還是距給定點最近的多邊形? – Anna 2011-01-05 20:28:57

+0

斯圖爾特,你是計算後端還是應用程序? – Xailor 2011-01-05 21:10:46

+0

如何添加meanRadius參數。計算到保留中心的距離,然後減去保留的平均半徑。 – Phil 2011-06-05 22:58:20

回答

2

嗯,有根據您的需要了幾個不同的解決方案。要求的精確度越高,需要更多的工作。我喜歡Phil的meanRadius參數想法,這會讓你大致瞭解哪個多邊形是最接近的,並且很容易計算,如果多邊形是「circlish」,這個想法效果最好,如果多邊形的形狀非常不規則,想法失去它的準確性。

從數學的角度來看,這裏是你想通過所有多邊形的所有點做的。循環的。計算到當前的coordinat從這些點的距離即然後只是跟蹤哪一個最接近。有一個最後的皺紋。想象一下兩點製作的線段非常長。你位於距線路中點一米遠的地方。那麼,這兩點的距離非常大,而實際上你非常接近多邊形。你將需要計算您的距離座標每一個可能的線段,您可以在各種不同的方式,其羅列如下操作:

http://www.worsleyschool.net/science/files/linepoint/distance.html

最後,你需要問自己,我在任何多邊形?如果你距離多邊形上的一個點10米,但事實上在多邊形內部,顯然你需要考慮這一點。要做到這一點,最好的辦法是使用光線投射算法:

http://en.wikipedia.org/wiki/Point_in_polygon#Ray_casting_algorithm