我們有一個CSV格式的數據庫,所有縣(美國)及其邊界由SRID和MULTIPOLYGON定義。我怎樣才能確定任何給定的座標(十進制經度和緯度),它屬於哪個縣。我們計劃使用MySQL來存儲數據並執行查詢。如何確定一個座標是否在mutilpolygon內?
1
A
回答
-1
也許將有所幫助。
3
如果您的形狀繁多複雜,最好使用空間數據庫。 PostGIS是免費的,並且可以在大多數MySQL平臺上運行。空間數據庫具有用於存儲多邊形的空間數據類型,包括查詢數據庫的點是否在多邊形中的空間查詢以及使所有事情都合理高效的空間索引。
OTOH,如果您只處理相當少量的相當簡單的多邊形,則可以使用普通數據庫進行管理。我已經做了一次。我的方法:
有一個多邊形表。每個多邊形記錄包含主鍵,無論您需要用每個多邊形存儲哪些信息,以及多邊形的邊界框 - 最大值和最小值x和y值。
多邊形的點存儲在點表中,該點表是多邊形的子點。每個點記錄都包含它所屬的多邊形的主鍵,序列號以及x和y值。
要查找可能包含點的多邊形,可以查詢多邊形表,查找可能包含點的多邊形 - 點位於其邊界框內的多邊形。將這些候選多邊形讀入內存,並檢查每個多邊形是否包含該點。
有很多算法。 http://en.wikipedia.org/wiki/Point_in_polygon
我使用了光線投射法,因爲它很簡單。在任何方向上從點到無窮大繪製一條線,並計算您截取的線段的數量。如果你穿過一個奇數,你的觀點就在多邊形內。
2
嘗試地理擴展的MySQL
http://dev.mysql.com/tech-resources/articles/4.1/gis-with-mysql.html
雖然在PostGIS的Postgres是一個比較成熟的地理數據庫,如果你有選擇,我會使用它。
相關問題
- 1. 確定一個座標是否在另一個的半徑內
- 2. 如何確定一個多邊形是否在另一個內?
- 3. 計算一個座標是否在另一個範圍內
- 4. C#:如何確定座標是否在美國大陸?
- 5. Django的 - 確定地理座標是一個圓圈內
- 6. 如何知道某個x-y座標是否在矩形內?
- 7. 如何確定一個超鏈接的座標在WPF
- 8. 如何確定Task.Run是否在一個循環內完成
- 9. 確定一個線段的座標
- 10. 檢查座標是否在區域內
- 11. 如何檢查一個點(int - 座標)是否在三角形的斜邊內
- 12. 如何找到一個人是否在建築物內使用GPS座標
- 13. 如何確定一個點是否位於kml或shape內
- 14. 如何確定一個html標籤是否分割成多行
- 15. 如何確定座標是否在當前可見的地圖區域中?
- 16. 在網格中生成座標在一個圓內的座標
- 17. 檢查座標是否在預定義的區域內
- 18. 如何確定一個點是否是一個四邊形
- 19. 如何確定一個url是否是一個圖像?
- 20. 如何知道給定的latlng是否在geojson多邊形座標內
- 21. 如何從一個座標拖放到另一個座標C#
- 22. 如何確定堆疊面板內物品的座標?
- 23. 如何確定一個流是否是在STDIN PHP
- 24. 如何確定一個目錄是否在同一分區
- 25. 如何確定GPS是否可用?另外,如何根據GPS座標確定城市/州/國家?
- 26. 如何在imageMap的精確座標處插入一個div
- 27. 確定一個點是否在路上
- 28. 確定行是否在一個DataGridView
- 29. Redis或Mongo確定一個數字是否在範圍內?
- 30. 確定一個點是否在Raphael.js中的路徑元素內