postgresql基于postgis常用空间函数

1、st_astext 空间二进制转文本

select st_astext(geo) from <table>

2、ST_AsGeoJSON 空间数据转geojson格式

select ST_AsGeoJSON(geom) from <table> limit 10

3、ST_Transform 坐标转换

select st_transform(geom,3857) from mytable

4、st_srid 查询数据表坐标系

select st_srid(geom) from mytable

5、ST_GeomFromText 文本转二进制

select ST_GeomFromText('POINT(119.976900368929 31.8078044056892)',3857)

6、计算线路长度(米)

SELECT patrolid, st_length(ST_Transform(geom,3857))

FROM public.patrolrecord where patrolid='3d4f8e0d-e759-469f-b78e-50f6445b56c9'

ST_Area(ST_Transform(geom,3857))

7、空间相交计算

判断点是否在面内:

select ST_DWithin(ST_SetSRID(ST_MakePoint(117.272031,31.868486),4326),(SELECT geom from mytable where xzqhcode='340103009'),0)

8、矩形查询

_st_intersects(st_transform(ST_MakeEnvelope(" + leftTopX + "," + leftTopY + "," + rightBottomX + "," + rightBottomY + ",4326" + "),4326),geom)

9、多边形查询

SELECT gid,year,cc,gb,ec,name,type,cc,gb,ec,name,type,st_astext(geom) wkt FROM mytable where ST_Intersects(st_geometryfromtext('wkt',4326), geom) and year='2017'

10、根据已存在经纬度字段更新geometry字段

update mytable set geom =ST_SetSRID(ST_MakePoint(longitude,altitude),4326) where id=138

11、查询两点之间的距离(获取面状要素几何中心)

select jdm,st_distance(ST_Centroid(geom),ST_GeomFromText('POINT(117.12927656982 31.9223723088035)',4326),true) as distance from mytable order by distance asc limit 5

12、合并多个几何对象

update mytable set geom=SELECT st_union(geom) from tb_duty_area where (uid=49 or uid =107) WHERE uid=363

相关推荐
张哈大15 分钟前
【 Redis | 实战篇 秒杀实现 】
数据库·redis·缓存
weixin_4723394618 分钟前
Postgresql与openguass对比
数据库·postgresql
惊起白鸽4505 小时前
MySQL全量,增量备份与恢复
数据库·mysql
暮雨疏桐6 小时前
MySQL SQL Mode及其说明
数据库·sql·mysql·sql mode
Tangcan-6 小时前
【MySQL】数据库基础
数据库·mysql
蔡蓝7 小时前
Mysql的索引,慢查询和数据库表的设计以及乐观锁和悲观锁
数据库·mysql
jstart千语7 小时前
【Redis】分布式锁的实现
数据库·redis·分布式
一把年纪学编程8 小时前
【牛马技巧】word统计每一段的字数接近“字数统计”
前端·数据库·word
极小狐8 小时前
极狐GitLab 通用软件包存储库功能介绍
java·数据库·c#·gitlab·maven
钢铁男儿8 小时前
C# 方法(可选参数)
数据库·mysql·c#