直接动态生成新字段

Github: https://github.com/FreeGIS/Postgis_Coordinate_Transform

支持WGS84与bd-09,gcj-02坐标系,百度经纬度与百度墨卡托之间互转。
支持点线面多点多线多面的复杂图形批量转换。
支持对整个表批处理转换。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
约束:

要求转换的表是基于PostGIS创建的空间关系表 示例支持的表:
create table point_test(
gid serial primary key,
name text,
geom geometry(Point,4326)
);
不支持的表:

create table point_test(
gid serial primary key,
name text,
lon numeric, --经度
lat numeric --纬度
);
不支持的表是普通关系表,非空间图形表。

要求转换的图形必须是二维图形 当前暂不支持三维或者多维,如带Z值的高程,带M值的测量值等

转换表图形坐标系必须是epsg:4326 除了将百度墨卡托坐标转百度经纬度外,其他转换方式,必须保证转换表的坐标系是4326,其他坐标系,需要用户使用ST_Transform函数,将其数据先转到4326坐标系下,再使用该工具。百度墨卡托坐标转百度经纬度转换,数据源必须是3857的。

图形数据是点线面多点多线多面 仅仅支持Point,LineString,Polygon,MultiPoint,MultiLineString,MultiPolygon六种明确类型。其他的PostGIS类型由于不常用,且不严格规范,通常不用于标准的空间数据库类型,暂时不考虑实现。

使用:

1
select FreeGIS_Coordinate_Transform('public','test','WGS2GCJ');

sql语句查询转换

github:https://github.com/geocompass/pg-coordtransform

基于PostgreSQL和PostGIS的坐标转换函数,支持点、线、面的WGS84、GCJ02以及BD09坐标系之间互转。

安装: 复制geoc-pg-coordtansform.sql中代码,在数据库执行

1
2
3
4
5
6
7
8
9
10
11
12
GCJ02转WGS84
select geoc_gcj02towgs84(geom) from test_table
WGS84转GCJ02
select geoc_wgs84togcj02(geom) from test_table
WGS84转BD09
select geoc_wgs84tobd09(geom) from test_table
BD09转WGS84
select geoc_bd09towgs84(geom) from test_table
GCJ02转BD09
select geoc_gcj02tobd09(geom) from test_table
BD09转GCJ02
select geoc_bd09togcj02(geom) from test_table