2011-02-08 65 views
1

我們有一個CSV格式的數據庫,所有縣(美國)及其邊界由SRID和MULTIPOLYGON定義。我怎樣才能確定任何給定的座標(十進制經度和緯度),它屬於哪個縣。我們計劃使用MySQL來存儲數據並執行查詢。如何確定一個座標是否在mutilpolygon內?

回答

-1

也許​​將有所幫助。

3

如果您的形狀繁多複雜,最好使用空間數據庫。 PostGIS是免費的,並且可以在大多數MySQL平臺上運行。空間數據庫具有用於存儲多邊形的空間數據類型,包括查詢數據庫的點是否在多邊形中的空間查詢以及使所有事情都合理高效的空間索引。

OTOH,如果您只處理相當少量的相當簡單的多邊形,則可以使用普通數據庫進行管理。我已經做了一次。我的方法:

有一個多邊形表。每個多邊形記錄包含主鍵,無論您需要用每個多邊形存儲哪些信息,以及多邊形的邊界框 - 最大值和最小值x和y值。

多邊形的點存儲在點表中,該點表是多邊形的子點。每個點記錄都包含它所屬的多邊形的主鍵,序列號以及x和y值。

要查找可能包含點的多邊形,可以查詢多邊形表,查找可能包含點的多邊形 - 點位於其邊界框內的多邊形。將這些候選多邊形讀入內存,並檢查每個多邊形是否包含該點。

有很多算法。 http://en.wikipedia.org/wiki/Point_in_polygon

我使用了光線投射法,因爲它很簡單。在任何方向上從點到無窮大繪製一條線,並計算您截取的線段的數量。如果你穿過一個奇數,你的觀點就在多邊形內。

相關問題