如何在geodjango中转换英里公里

Posted

技术标签:

【中文标题】如何在geodjango中转换英里公里【英文标题】:How convert miles km in geodjango 【发布时间】:2021-10-07 17:57:24 【问题描述】:

我的这个视图可以正常工作,但我发现很难以公里为单位显示结果。我计算了两点之间的距离,但我得到的结果以米为单位,但我想要以公里为单位。

vews.py

from django.contrib.gis.db.models.functions import Distance



class SearchResultsView(generic.TemplateView):
    template_name = "search.html"

    def get_context_data(self, **kwargs):
        context = super(SearchResultsView, self).get_context_data(**kwargs)
        query = self.request.GET.get('q', default='')
        location_ = self.request.GET.get('location')
        geolocator = Nominatim(user_agent="geo", timeout=10000)
        location = geolocator.geocode(location_)
        print(location)
        new = Point(location.latitude, location.longitude, srid=4326)
        context.update(
            'job_listing': JobListing.objects.annotate(
                distance=Distance("location_on_the_map", new)
            ).filter(Q(job_title__icontains=query)).order_by("distance")
        )
        return context


【问题讨论】:

这能回答你的问题吗? Django django.contrib.gis.db.models.functions.Distance to return values in feet instead of meters 【参考方案1】:

根据geodjango docs ,您在 JobListing 查询集中注释的距离对象将为您进行转换 - 您只需参考 distance.km 或 distance.mi

【讨论】:

以上是关于如何在geodjango中转换英里公里的主要内容,如果未能解决你的问题,请参考以下文章

mySQL 在 y 范围内选择 x 公里/英里内的邮政编码

如何在 Webfaction 上已经存在的 postgres 数据库上启用 GeoDjango?

谷歌api返回公里而不是英里

作业:1.12假设一个跑步者1小时40分钟35秒 内跑了24英里。编写一个程序显示以每小时多少公里为单位的平均速度值(注意,1英里等于1.6公里。)

作业:1.12假设一个跑步者1小时40分钟35秒 内跑了24英里。编写一个程序显示以每小时多少公里为单位的平均速度值(注意,1英里等于1.6公里。)

20英里还是60英里?