PostgreSQL Always功能使用

背景

有些弱gis项目,比如通讯行业,大部分都是采集的poi点,比如基站或者信令数据,录入数据的应用都是用的X,Y坐标,那如何再不改变应用的情况下,可以在一些GIS软件是展示这些数据,毕竟很多的GIS软件并不支持直接显示X,Y坐标

解决方法

可以通过在表中添加一个类型为geometry的字段,然后利用PG的Generate Always功能自动更新该类型的值

步骤

create table testg (id serial primary key ,x double precision,y double precision, geom geometry(point,4326) generated always as ST_SetSRID(ST_MakePoint(x,y),4326) stored);
insert into testg (x,y) values (12.34,34.3);
insert into testg (x,y) values (23.34,44.3);
select geom from testg;
                        geom
----------------------------------------------------
 0101000020E6100000AE47E17A14AE28406666666666264140
 0101000020E6100000D7A3703D0A5737406666666666264640
(2 行记录)

select st_asewkt(geom) from testg;
          st_asewkt
-----------------------------
 SRID=4326;POINT(12.34 34.3)
 SRID=4326;POINT(23.34 44.3)

 create index on testg using gist(geom);
CREATE INDEX

\d testg
                                                  数据表 "sde.testg"
 栏位 |         类型         | 校对规则 |  可空的  |                               预设
------+----------------------+----------+----------+-------------------------------------------------------------------
 id   | integer              |          | not null | nextval('testg_id_seq'::regclass)
 x    | double precision     |          |          |
 y    | double precision     |          |          |
 geom | geometry(Point,4326) |          |          | generated always as (st_setsrid(st_makepoint(x, y), 4326)) stored
索引:
    "testg_pkey" PRIMARY KEY, btree (id)
    "testg_geom_idx" gist (geom)

使用GeoScene Desktop展示如下

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值