mysql - 判断一个点是否在区域内

标签 mysql database map geolocation

我有一个包含许多区域(例如建筑物或属性)的 kml 文件。形状可能很复杂(不仅仅是矩形,还可能是 n 边形,甚至是凸形),但在大多数情况下它们会很小(每边不超过一公里)。可能有数万个坐标和数百(也许数千)个区域。

我想知道一组坐标中的任何坐标是否在这些区域之一内,如果是,是什么坐标和什么区域。这可以通过一次一个区域查找每个区域内的所有点,或者通过一次一个点查找每个点是否位于区域内来完成。

我希望有某种数据库驱动的解决方案,但对任何解决方案都持开放态度。

该应用程序将在 Amazon EC2 实例上启动,因此与 RDS 兼容的东西会很好)

暂定方案是mysql中的ST_WITHIN或ST_CONTAINS或ST_INTERSECTS,但我不清楚它们之间的区别。

我还查看了 Google Fusion Tables,但找不到执行我想要的操作的 SQL 查询(并不意味着没有 - 我只是错过了)。

最佳答案

郑重声明,我最终使用了带有支持 mysql 数据库的 geodjango。

RegionContainer.objects.filter(region_area__contains=Point(longitude, latitude))

给出一个区域列表,其中包含具有给定纬度和经度坐标的点。 python/django 代码成为 sql 查询。

SELECT `locationapp_region_container`.`id`,
       `locationapp_region_container`.`profile_id`,
       AsText(`locationapp_region_container`.`region_area`) 
       FROM `locationapp_region_container` 
       WHERE MBRContains(`locationapp_region_container`.`region_area`,
       GeomFromText(POINT (80.6123000000000047 -43.2349804300000002)))

因为后台数据库是MySQL,所以支持RDS。

关于mysql - 判断一个点是否在区域内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7467118/

相关文章:

php - 使用php和phpexcel将两个表中的mysql数据导出到excel

database - GAE数据存储同时更新记录的字段

C# + OLEDB 插入具有特殊字符的 varchar?

c++ - 简单高效的C++容器,具有map和list容器的特点

java - 推荐一个快速且可扩展的持久化 Map - Java

php - 将base64图像插入php中的mysql表

mysql - 合并多对多结果

使用 "IN"重写 MySQL 到 PostgreSQL 查询?

mysql - 查询3张表,永远持续

map - Clojure 应用映射和关键字参数破坏