【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]');
完✅