我对Django很熟悉,但对GeoDjango和PostGIS很陌生。
我有一个问题,我想找到离一个点最近的MuliPolygon。这个点可以是在MultiPolygon之外,也可以是在MultiPolygon之内。最近的意思是最近的边界点。
我知道我可以用以下方法计算两点之间的距离 from django.contrib.gis.db.models.functions import Distance
- 但我不想使用 centroid
因为多角形的边界有可能比多角形的边界更接近一点。centroid
的。
我有一个模型 Land
随地 surface_area
这是个 MultiPolygon
. 我有一个用 from django.contrib.gis.geos import Point
. 这是我用来尝试建立查询的数据。
如果有任何关于最佳实践的帮助,我将不胜感激。
GeoDjango's 距离查询 利用相应数据库的距离函数。
由于你使用的是PostgreSQL和PostGIS,所以相应的 ST_Distance
方法,对于几何体类型返回两个几何体之间的最小二维笛卡尔(平面)距离,单位为投影单位(空间参考单位)。
对于几何体类型,以投影单位(空间参考单位)返回两个几何体之间的最小2D笛卡尔(平面)距离。
因此你可以使用 距离查询 来进行计算。
如果你想用不同的方式来实现它(例如使用多边形的边界框),你可以参考这个Q&A。如何在geodjango中获得k个最近的邻居?