postgis数据库部署及坐标转换

PostGIS数据库部署

相关部署Dockerfile见:postgis-docker
相关文件

初始化数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
docker run --name postgis -e POSTGRES_PASSWORD=123456 -p 5432:5432 -d postgres

# postgis 坐标转换函数环境

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

## 首先保证postgresql中存在postgis扩展

创建postgis扩展

```sql
CREATE EXTENSION postgis
-- 查看扩展版本
select * from postgis_full_version();

函数安装方式

添加扩展坐标加偏函数(来源https://github.com/geocompass/pg-coordtransform)这个库里的函数有一点点问题,已修改见:coordtransform

建表时geom字段类型选用geometry

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

转换函数使用示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
-- 如果转换后结果为null,查看geom的srid是否为4326或者4490
WGS84转GCJ02
select geoc_wgs84togcj02(geom) from test_table
GCJ02转WGS84
select geoc_gcj02towgs84(geom) from test_table

WGS84转BD09
select geoc_wgs84tobd09(geom) from test_table
BD09转WGS84
select geoc_bd09towgs84(geom) from test_table

CGCS2000转GCJ02
select geoc_cgcs2000togcj02(geom) from test_table
GCJ02转CGCS2000
select geoc_gcj02tocgcs2000(geom) from test_table

CGCS2000转BD09
select geoc_cgcs2000tobd09(geom) from test_table
BD09转CGCS2000
select geoc_bd09tocgcs2000(geom) from test_table

GCJ02转BD09
select geoc_gcj02tobd09(geom) from test_table
BD09转GCJ02
select geoc_bd09togcj02(geom) from test_table

postgis数据库部署及坐标转换
https://hanke-janson.github.io//blog/2025/05/12/postgis数据库部署及坐标转换/
作者
雾月山河
发布于
2025年5月12日
许可协议