postgres 坐标_PostgreSQL 添加postgis插件实现获取经纬度间的距离

本文介绍了如何在PostgreSQL中利用PostGIS扩展来处理地理坐标数据。通过添加postgis插件,创建geography类型的字段,并将经纬度转换为几何点,可以计算两点之间的距离。查询示例展示了如何找出距离特定坐标点五公里内的所有记录,返回的距离以米为单位。
摘要由CSDN通过智能技术生成

概念: geometry和geography的区别

geometry:planar 平面坐标系【supported by SQL Server conforms to the Open Geospatial Consortium (OGC) Simple Features for SQL Specification version 1.1.0.】

geography: terrestrial 地理坐标系【stores ellipsoidal (round-earth) data, such as GPS latitude and longitude coordinates.】

安装 postgresql-12 可postgis 网上查找与postgresql对应版本的postgis

sudo apt install postgresql-12sudo add-apt-repository ppa:ubuntugis/ppa

sudo apt-getinstall postgis

sudo-i -u postgres

安转完成之后:执行

sudo -i -u postgres

进入psql命令行/切换到需要的gis的数据库执行

CREATE EXTENSION postgis;

CREATE EXTENSION postgis_topology;

之后在所需表新建字段

alter 表名

add where_is geography;

将经纬度信息转到geography

update表名 set where_is=ST_POINT(lat,lng) where 1=1;

lat 为单独字段,lng为单独字段

具体查询信息

select *, st_distance(t_shop.where_is,ST_POINT(31.23037,121.4737)) as distance FROM t_shop where st_distance(t_shop.where_is,ST_POINT(31.23037,121.4737)) < 5000ORDER BY distance;

查询距离坐标点(31.23037,121.4737) 五公里的所有数据

查询出来的数据以米为单位

a02adc08cf75f04d5c753e707b9686a3.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值