提问人:epluribusunum 提问时间:10/24/2023 更新时间:10/24/2023 访问量:41
MBRContains(ST_GeomFromText) 多边形坐标未返回预期结果
MBRContains(ST_GeomFromText) Polygon coordinates not returning expected results
问:
我正在构建一个类似 Airbnb 的地图系统;
- 我正在使用谷歌地图和map.getBounds()来获取可见地图区域的坐标
- 然后,我使用这些坐标创建一个多边形(见下文),用于在表坐标列上进行搜索。
om_offices_2
- 返回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 语句传递的坐标时,多边形看起来是正确的。
答: 暂无答案
评论