在我的 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/