mysql - 使用 MariaDB/MySql 进行 GeoDjango 最近点查询

标签 mysql postgresql mariadb nearest-neighbor geodjango

在我的 Django 项目中,我会使用 MySQL 和/或 MariaDB。

我有一个包含纬度和经度的实体。

我必须实现搜索来查找最接近 geoPoint(按距离参数)的所有点。

可能我必须使用 GeoDjango,但我对与 MySQL 和地理距离查询的兼容性有一些疑问。我特别读过这篇documentation page和兼容性表(我没有看到 MySQL 的 distance_lte:我需要使用它吗?)

我的项目中使用 MariaDB/MySQL 和 GeoDjango 可以拥有这种类型的功能吗?

我可以高效地使用此功能吗? 最好使用其他 DBMS,例如 PostgreSQL?

最佳答案

更新 MySQL 8+ handles long / lat directly 。您需要使用Spatial Reference System SRID 4326 ,如果您使用 GPS 数据,也称为 WGS 84。

MariaDB 10.3 和 10.6 没有 SRID 4326,因此您获得的只是平面几何图形。

要在 GeoDjango 中使用距离测量功能,您需要 postgreSQL 或 MySQL 8:早期的地理空间扩展(5.7 及更早版本)不支持纬度/经度距离测量。 (我的 MySQL 5.7 没有 information_schema.ST_SPATIAL_REFERENCE_SYSTEMS 或类似的任何内容。MariaDB 10.3 和 10.6 没有 SRID 4326。

如果您不习惯 GeoDjango,您可以使用 MySQL。您需要做一些工作来提高查找效率。看这里。 http://www.plumislandmedia.net/mysql/haversine-mysql-nearest-loc/

如果您想使用地理空间,请参阅此处。 http://www.plumislandmedia.net/mysql/using-mysqls-geospatial-extension-location-finder/

关于mysql - 使用 MariaDB/MySql 进行 GeoDjango 最近点查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29054951/

相关文章:

php转换数据库中的所有密码

php - 对 foreach 中的项目进行分组并创建数组

mysql - 从 MySQL 获取唯一数据

java - 获取 hibernate 中实体的最后一个ID

php - 如何创建与我的 php 函数执行类似工作的程序(优化加速)

php - Codeigniter 插入不工作发生数据库错误

postgresql - Sequelize Migration addIndex 不按降序添加索引

java - 如何中断使用 Postgresql 运行 JDBC 查询的线程?

centos - 安装后 MariaDB 服务立即失败 - CentOS 7

mysql - 在 MySQL 查询中使用 WHILE LOOP 时出错