django orm查询经纬度最近距离的数据
参考网上计算距离的方法,用orm实现,代码如下
from django.db.models.functions import ACos, Sin, Cos# lat,long,km 是接口传进来的参数,经纬度和距离
# PI_VALUE是python math.pi, 由于数据库存的经纬度是decimal,所以PI_VALUE=decimal.Decimal(pi)
# REDIUS = decimal.Decimal(180)
# F('lat') F('long') 是使用数据库的值进行计算
XXModel.objects.annotate(distant=ACos(Sin((lat * PI_VALUE) / REDIUS) * Sin((F('lat') * PI_VALUE) / REDIUS)+ Cos((lat * PI_VALUE) / REDIUS) * Cos((F('lat') * PI_VALUE) / REDIUS) * Cos((long * PI_VALUE) / REDIUS - F('long') * PI_VALUE / REDIUS)) * 6380
).filter(distant__lte=km)
python代码计算两个经纬度距离
from math import acos, sin, cos, pidef haversine(lon1, lat1, lon2, lat2): # 经度1,纬度1,经度2,纬度2 (十进制度数)return acos(sin(lat1 * pi / 180) * sin(lat2 * pi / 180) +cos(lat1 * pi / 180) * cos(lat2 * pi / 180) *cos(lon1 * pi / 180 - lon2 * pi / 180)) * 6380
django orm查询经纬度最近距离的数据相关推荐
- Django ORM 查询重复记录并显示
文章目录 Django ORM 查询重复记录并显示 废话不谈,两横一竖开始 开始正题 下午继续vue Django ORM 查询重复记录并显示 写了简单的项目信息录入系统,让同事便于录入. 同事要求 ...
- python django orm查询集总结
1 .什么是ORM (Object Relational Mapping ) 它的作用是在关系型数据库和业务实体对象做一个映射,我们在操作具体业务对象的时候就可以省去了和SQL语句打交道,只需要简单的 ...
- vue前端与Django后端查询一定时间段内的数据
在开发过程中经常会遇到筛选查询之类的功能,比如查询某一个时间段内的数据而非所有数据. 这样我们就需要向后端发送时间段的参数,然后在后端处理查询. 这里以Django后端和vue前端的简单例子来记录大致 ...
- select_related与prefetch_related django ORM查询速度优化
深入select_related与prefetch_related函数 原文:https://www.cnblogs.com/tuifeideyouran/p/4232028.html 在数据库有外键 ...
- Django ORM查询之外键、关系的反向引用
关系本身就是相互的,只用在一个表中记录,而不是在有关系的两个表中都记录.所以外键.关系提供反向引用机制.当然,外键可以是多个表的外键,关系也可以与多个表有关系,所以反向引用必须显式指出关系对方表(然后 ...
- python爬虫 django搜索修改更新数据_一文搞懂Django数据库查询操作
本文略长,读完约需十分钟.当做复习笔记效果更佳. 查询操作: 数据查询是数据库操作中一个非常重要的技术.查询一般就是使用filter.exclude以及get三个方法来实现.我们可以在调用这些方法的时 ...
- django orm级联_Django数据表关联关系映射(一对一、一对多、多对多)
我们知道涉及到数据表之间的对应关系就会想到一对一.一对多.多对多,在学习 MySQL 数据库时表关系设计是需要重点掌握的知识.Django 中定义了三种关系类型的字段用来描述数据库表的关联关系:一对多 ...
- 067:【Django数据库】ORM查询条件详解-range
[Django数据库]ORM查询条件详解-range range: 判断某个 field 的值是否在给定的区间中.示例代码如下: # views.py文件内容:from datetime import ...
- 数据库根据经纬度查询离我最近的数据
之前很啥很天真地以为无非就是逐个计算距离,然后比较出来就行了,然后当碰到访问用户很多,而且数据库中经纬度信息很多的时候,计算量的迅速增长,能让服务器完全傻逼掉,还是老前辈的经验比我们丰富,给了我很大的 ...
- Mysql根据经纬度和距离检索符合条件的数据浅析
假设已知坐标lat1,lng1,距离distance 方法1:定义数据库函数方法 DROP FUNCTION IF EXISTS `getDistance`; DELIMITER ;; CREATE ...
最新文章
- Sublime Text 2快捷键大全
- CSS3:FlexBox的详解
- 【WC2016】挑战NPC 【带花树】【建图】
- 浅析DDD(领域驱动设计)
- 95-10-055-启动-MetadataCache
- 从华为看企业高效产品的研发管理
- 为什么rocketmq的queue分为读写?_分布式发布订阅消息系统Kafka 为什么快
- 基于jquery响应式网站图片无限加载瀑布流布局
- Android多进程之Binder的意外死亡及权限校验
- [转] ubuntu开启SSH服务
- NPOI word中插入图片
- Python爬取第一电影天堂最新电影(5000多部)代码实例(一)
- The forked VM terminated without properly saying goodbye. VM crash or System.exit called?
- 【自用错题集】C语言 基础错题整理
- windows安装hadoop教程,带截图
- vue-easy-print批量分页打印
- double转换为二进制
- vue动态配置嵌套页面(含iframe嵌套)可实现白天夜间皮肤切换
- 我是一个集技术和购物返利的机器人
- 浙江法院公开网文书PDF爬取
热门文章
- 保持积极向上的人生格言
- ECMAScript 语法
- 计算机求和怎样操作,电脑求和怎么操作
- webgl中顶点着色器的varying变量,使用方法。
- .Net框架设计(Yanlz+Unity+XR+C#+.Net+框架+框架设计+设计模式+工具可视化+SOA+立钻哥哥+==)
- nuxt整合vue-pdf插件和使用createLoadingTask方法进行分页
- 【高德地图API】Web地图开发系列(一)
- 转:创业者一手货:我是怎么在网上卖鱼的?
- openwrt 中 WiFi探针的三种实现办法
- html5中国产业联盟,中软国际联合发起HTML5+联盟为产业生态服务