PostGIS空间函数
格式转换
ST_AsEWKT — 返回带有SRID元数据的几何体的已知文本(WKT)表示。
ST_AsText — 返回不带SRID元数据的几何图形/地理图形的已知文本(WKT)表示形式
ST_AsGeoJSON(geom) -返回geojson,geom数组形式
1.查询点所在的几何面上
根据车辆经纬度判断所在哪条道路ID上(车道面)
select lane_id from yzsfq_hd_lane_buffer_v1
where ST_Intersects(ST_MakePoint(116.48663718,39.78318701)::geography, geom );
2.查询坐标点距离哪个几何线最近
根据车辆经纬度判断所在哪条道路ID上(车道线)
select lane_id from yzsfq_hd_lane_v1
order by ST_Distance(ST_MakePoint(116.5061774,39.7893351)::geography, geom ) limit 1;
3.计算几何线长度
-- 对geom格式进行转换:geography
SELECT ST_Length(geom::geography);
4.查询两点之间距离,单位是米
select
ST_Distance(ST_GeographyFromText('POINT(101.75882888992 36.62314533104)'),ST_GeographyFromText('POINT(101.77041344989 36.604966696412)'))
5.几何线分段
SELECT ST_LocateBetween(ST_AddMeasure(geom,0,100),0,50)
ST_AddMeasure(geom,0,100) 参数 0 和 100 表示要分的份数
ST_LocateBetween(ST_AddMeasure(geom,0,100),0,50) 参数 0 和 50 表示从0到50份为一段
6.几何线合并
ST_Union | 任何图形 | Multi类型,collection类型 | 聚合后的图形联合 |
ST_LineMerge | MultiLineString | LineString,MultiLineString | 将MultiLineString中相连的线路合并成完整的LineString |
ST_MakeLine | Point,MultiPoint,LineString | LineString | 构造新的线路 |
SELECT ST_Union(geom::geometry,geom::geometry);
SELECT ST_LineMerge(ST_Union(geom::geometry,geom::geometry));
PostGreSQL应用
1.数据类型UUID使用
1.1 通过运行以下命令查看是否有 uuid-ossp
SELECT * FROM pg_extension;
查看是否有 uuid-ossp 。如果没有,运行以下命令
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
1.2 UUID_v4与UUID_V1
在UUID版本1(UUID_v1)中,这些值是由计算机系统使用当前时间和计算机MAC地址(如上例所示)的组合生成的。
UUID_v4使用随机数生成器生成32个随机数字。这是最常用的UUID。
select uuid_generate_v1();
select uuid_generate_v4();
1.3 建表语句
CREATE TABLE PINK_FLOYD (
id uuid DEFAULT uuid_generate_v4 (),
album_name VARCHAR NOT NULL,
release_date DATE NOT NULL,
PRIMARY KEY (id)
);