2011-11-14 221 views
0

我有一個大的座標集,其中包括喜歡:座標點爲多邊形

59.284 18.42
59.401 18.078
58.894 17.854
59.277 18.742
59.219 18.186
59.472 18.108

緯度座標的分辨率爲0.001,經度爲0.002。

每個點都與一個矩形區域相關聯。對於點(x,y),該區域的緯度範圍從x到x + 0.01,經度y是y + 0.02。

每個點具有值1和10

之間我希望做的是,在一個多邊形的形式相同的值組相鄰的區域相關聯。多邊形將定義構成其外邊界的線,並且如果它的形狀像環形,則還需要定義內邊界。

有沒有任何算法或工具可以幫助我做到這一點?

我可以用python,csharp,java或C++編程。

感謝您的幫助,

巴里

回答

0

我不知道回答你的全部問題,但我會建議由1000縮放你的座標,以便應對可能的話整數。爲了測試鄰接關係,你需要做精確的算術和比較,否則你將不得不做所有的比較「足夠接近」(epsilon值)。

0

您可以根據自己的需要改編contour finding algorithm。許多文章和幾個程序可以在線獲得。在article in a CFD forum

回答#11總結的一種方法如下:

(1)假設有一個情節包,可以繪製直線段。 (2)在要繪製的域上構建一個具有(x,y)座標的細網格。 (3)通過計算函數或可能內插一些離散近似值來評估每個節點處的函數。 (4)選擇要繪製的coutour等級列表。 (5)對於網格的每個矩形:(a)找出角上最大和最小的函數值。 (b)忽略最大值和最小值範圍以外的輪廓等級。 (c)對於每個可接受的輪廓和每條邊,找出輪廓水平與連接角上的函數值的直線的交點的座標值。 (d)用相等的輪廓值繪製連接座標的線段。

請注意,回答#6-#10簡要討論瞭如何使用gri,PGPLOT,matlab和Plotmtv進行輪廓繪圖。

1

對於每一組與所述值相關聯的座標的1〜10做

  1. 刻度座標爲整數值(乘以1000),以避免浮點比較
  2. 座標轉換到矩形多邊形
  3. '工會」這些多邊形(使用ClipperBoost GeometryBoost Polygon)合併相鄰