簡體   English   中英

MySQL - 地理空間對象

[英]MySQL - Geo-Spatial Object

我一直在 Postgis 中為 poly's 點工作,我有這個功能:

select * from table_name where st_contains(column, st_setsrid(st_makepoint(-92.095109, 46.804100),4326));

該列是一個多項式((((點)))

我試圖找到一種方法來用 MySQL 進行類似的練習,並想知道是否有類似的功能可以這樣做。 MySQL 的開發站點對 Multipolys 的描述和文檔非常有限。

有沒有人做過這樣的事情?

MySQL 沒有實現很多空間查詢——我不確定包含,但有一些方法可以近似它和其他函數。 例如,您可以通過在給定矩形中使用坐標拉取所有結果,然后按照此處所述計算距離來計算點之間的距離 您還可以使用矩形來近似contains問題。 首先,為您的選擇提供更通用的 WKT 語法:

select * from table_name where contains(the_polygon, GeomFromText('POINT(12.3 45.6)');

我認為contains的開放規范沒有實現,但是有一個 MySQL 函數用於使用最小邊界矩形來近似您的點是否在多邊形中:

select * from table_name where MBRContains(the_polygon, GeomFromText('POINT(12.3 45.6)');

我最終在 MySQL 上使用了很多矩形,因為它很容易計算坐標集的外邊界。 總體而言,PostGIS 要好得多,但如果需要,您可以做一些跨數據庫的事情。

更新:在問到這個問題之后,一個很好的總結被發布到 opengeo.org ; 似乎即使在不明顯或聲明的地方,MySQL 也經常使用 MBR。 如果您想更多地了解 PostGIS 的工作原理以及為什么它的 2d 功能實現者通常需要更短的行,還可以查看原生 postgres 類型point, lseg, box, path, polygon,circle

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM