MBRContains(ST_GeomFromText) 多边形坐标未返回预期结果

MBRContains(ST_GeomFromText) Polygon coordinates not returning expected results

提问人:epluribusunum 提问时间:10/24/2023 更新时间:10/24/2023 访问量:41

问:

我正在构建一个类似 Airbnb 的地图系统;

  1. 我正在使用谷歌地图和map.getBounds()来获取可见地图区域的坐标
  2. 然后,我使用这些坐标创建一个多边形(见下文),用于在表坐标列上进行搜索。om_offices_2
  3. 返回post_id(然后我使用此 ID 从 WordPress 获取数据)

但是,返回的条目不一致。放大时似乎没问题,但缩小地图时不太一致。

我在表中存储了以下数据om_offices_2;

(还有其他列,为了方便起见,我在这里删除了)

post_id 坐标
5665 点(54.8726203 -1.5834213)
5670 点(51.5072178 -0.1275862)
5671 积分(34.0549076 -118.242643)
6066 点(-25.267257264196 133.86886311182)

以下代码按预期返回 A、B 和 C。

SELECT post_id FROM om_offices_2
    WHERE MBRContains(ST_GeomFromText('POLYGON((
         73.335891622515 -123.06100216909, 
         -29.204445033493 -123.06100216909, 
         -29.204445033493 10.70852908091, 
         73.335891622515 10.70852908091,
         73.335891622515 -123.06100216909))', 4326), coordinates)

当我缩小并发出此请求时,返回 D(并且 D 在地图上甚至不可见)

SELECT post_id FROM om_offices_2
    WHERE MBRContains(ST_GeomFromText('POLYGON((
         84.000596900924 -156.19576779409, 
         -73.963342127533 -156.19576779409, 
         -73.963342127533 111.34329470591, 
         84.000596900924 111.34329470591,
         84.000596900924 -156.19576779409))', 4326), coordinates)

以下是该表的创建方式;

"CREATE TABLE om_offices_2 (
                post_id INT AUTO_INCREMENT PRIMARY KEY,
                coordinates POINT NOT NULL SRID 4326,
                bu VARCHAR(255),
                sectors VARCHAR(255),
                cont VARCHAR(255),
                SPATIAL INDEX(coordinates)
            )

以下是数据的存储方式

"INSERT INTO om_offices_2 (post_id, coordinates, bu, sectors, cont)
        VALUES ($post_id, ST_SRID(POINT($longitude, $latitude),4326), '$bu', '$sectors', '$cont')
        ON DUPLICATE KEY UPDATE 
            coordinates = ST_SRID(POINT($longitude, $latitude),4326),
            bu = '$bu',
            sectors ='$sectors',
            cont = '$cont';"

当我使用 https://www.keene.edu/campus/maps/tool/ 等工具映射通过 mysql 语句传递的坐标时,多边形看起来是正确的。

MySQL WordPress 坐标

评论


答: 暂无答案