我在一個MySQL數據庫中有一個POINT類型的空間幾何列的表。我希望能夠在地圖中心獲取一個點,並查找X英里(或任何距離)內的所有記錄。我似乎無法找到一個很好的例子或解釋如何做到這一點,並沒有嚴重到幾何數學。我很高興能夠走這條路,但首先會嘗試用真正的空間數據庫來解決它。如何使用MySQL空間查詢來查找X半徑中的所有記錄?
回答
它不會工作,因爲MySQL實際上沒有實現代碼來實現這個工作。他們只使用邊界框查詢。
注意有沒有在這裏列出的功能: http://dev.mysql.com/doc/refman/5.5/en/functions-for-testing-spatial-relations-between-geometric-objects.html
我會建議使用的PostGIS或Spatialite代替。
從MySQL 5.6.1開始不再是這樣:http://dev.mysql.com/doc/refman/5.6/en/functions-for-testing-spatial-relations-between-geometric-objects.html#function_st包含。但我還不能證實這些功能的表現。 – 2012-01-25 22:03:28
同意 - 事情已經改變與MySQL 5.6.1,但我還沒有測試 – TheSteve0 2012-03-21 07:23:01
我看到在該資源上列出的噸功能。你能澄清嗎? – 2012-07-25 15:33:21
- 1. MySQL查詢 - 查找有多個不同值的所有記錄
- 2. MySQL的 - 實時記錄所有查詢
- 3. 如何查詢mysql中的所有記錄字段不爲空或爲空?
- 4. MySQL空間查詢來查找傳送到設定點的所有行
- 5. 需要使用SQL查詢來查找沒有子記錄的父記錄
- 6. Access查詢查找所有記錄所有鏈接的記錄匹配
- 7. 如何記錄MySQL查詢?
- 8. 查找在mysql中查詢使用的臨時空間
- 9. 如何查詢MYSQL中具有相同時間戳的記錄?
- 10. 查找mysql中記錄佔用的空間
- 11. SQL查詢來查找日期和時間之間記錄
- 12. 如何使用psycopg中的SELECT查詢來查找空值?
- 13. 登錄所有MySQL查詢
- 14. MySQL查詢來計算查詢中2層深的記錄數
- 15. 記錄mysql查詢
- 16. MySQL使用LEFT JOIN查詢所有記錄不只是一個
- 17. 查詢查找所有空表
- 18. 迭代查詢的空間記錄
- 19. Mongo查詢查找屬性不是空字符串的所有記錄
- 20. 如果記錄存在,匹配數組中的所有記錄MySQL查詢
- 21. 如何讓MySQL記錄下所有未使用索引的查詢?
- 22. MySQL空間查詢
- 23. 空和空記錄查詢
- 24. 使用Map Reduce查找所有記錄接近特定記錄
- 25. 查找所有列的空/空記錄數
- 26. 查找包含空列和空列的所有記錄
- 27. count在Yii中查找所有記錄
- 28. HANA空間:按圈查詢(中心和半徑)
- 29. SQL查詢查找列值爲空的記錄爲空
- 30. 查找記錄在一個半徑的PostgreSQL
只是想要說明的是,我正試圖用數據點的技術來解決這個問題(並不精確,但現在就試試這個)。我的查詢看起來像這樣。 SELECT * from business WHERE MBRContains(GeomFromText('Polygon((30 -100,30 -90,25 -90,25 -100,30 -100))'),geolocation) 我在表中有一條記錄經度爲39,長度爲-94。據我瞭解,這應該顯示在結果集中,而不是。所以這是另一個問題。 – 2010-07-09 00:46:58
你做錯了(或者只是複雜)。使用https://github.com/anthonymartin/GeoLocation.php在PHP中計算邊界框,然後查詢「WHERE lat BETWEEN minL AND maxL AND lon BETWEEN minO AND maxO'。這是方形區域搜索而不是圓形,但是您的網絡地圖是矩形,不是嗎? – Slawa 2014-02-25 13:00:47