GeoHash
[Django-doc]本身可以计算not任何东西.本质上,它只是一些抽象的语法树 node ,可以转换为SQL表达式.因此,算法在数据库中进行判断,而不是Django.
是否可以直接使用这个GeoHash类而不在数据库上创建模型?
是的,或者至少是金.我们可以进行一个SELECT
查询,并确定其中的geohash,比如:
你可以使用另一个与它无关的模型来判断它,其中:
from app_name.models import SomeModel
from django.contrib.gis.db.models.functions import GeoHash
from django.contrib.gis.geos import Point
from django.db import connections
db_name = 'default'
connection = connections[db_name]
compiler = conn.ops.compiler('SQLCompiler')(
SomeModel.objects.none(), connection, db_name
)
with connection.cursor() as cursor:
sql, params = GeoHash(Point(x=lon, y=lat, srid=4326)).as_sql(
compiler, connection
)
cursor.execute(f'SELECT {sql};', params)
result, *__ = cursor.fetchone()
另一个 Select 是重建数据库使用的算法,但不同的数据库可以使用不同的算法,最终可能改变他们的 idea .