PostGIS里修改坐标系统SRID以及将所有线要素长度存入新列

【PostGIS里坐标系统SRID转化】
在空间数据库PostGIS里,对geometry类型的地理数据转换坐标系统。此处,geom列始终是geometry类型,我们只是转换它的坐标系统,将EPSG从4326转换为102039,SQL代码如下。

ALTER TABLE all_lines
ALTER COLUMN geom
TYPE geometry(LINESTRING, 102039)
USING ST_SetSRID(geom,102039);

【Postgres里在表中新建或删除列】
在表中加一新列line_len,存储下边步骤的计算结果。

ALTER TABLE all_lines
ADD COLUMN len_in_m double precision;

在PostgreSQL里,删除某一不想要的列的方法如下。

ALTER TABLE all_lines 
DROP COLUMN line_len;

【PostGIS里计算几何要素长度,并存入某列】
使用ST_LENGTH()方法, 能够计算出LineString的长度。还可以使用ST_LengthSpheroid()方法,并规定球面,即可计算出该球面基准下的线长度。
本例中,geom是存储了几何要素的列名,每行是一个线几何要素LineString。
在postGIS中,geometry的存储格式是既定坐标系统SRID下的一串字符。
例如,某一个geom在数据库表中显示为:

0102000020978E0100020000000DFAD2DB9F6C52C022895E46B15C4440E0F76F5E9C6C52C09885764EB35C4440

本例中使用’SPHEROID[“WGS 84”,6378137,298.257223563]'为基准面,计算出来的长度就会以米(meter)为单位。

UPDATE all_lines 
SET len_in_m = ST_LengthSpheroid(geom, 'SPHEROID["WGS 84",6378137,298.257223563]');

完✅

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值