PostGIS从csv文件导入文本wkt形式的geometry

当我们有一些存为csv文本形式的地理数据,其中的地理要素用wkt表示,如何导入PostGIS呢?

我们拥有一个csv文件,内容如下:

id,participant,geom,startt,endt
1,1,"LINESTRING(20.331 54.33, 21.67 44.89, 12.67 13.5679)",2014-03-09 13:30:33,2014-03-09 13:31:33
2,2,"LINESTRING(25.331 14.33, 41.67 44.119, 15.67 23.5679, 34.55 48.11)",2014-03-10 13:30:33,2014-03-10 13:31:33
3,1,"LINESTRING(21.331 51.33, 11.67 44.32, 32.67 13.59)",2014-03-22 13:30:33,2014-03-23 13:31:33
4,5,"LINESTRING(10.331 24.22, 23.37 34.89, 22.17 12.29)",2014-03-24 13:30:33,2014-03-24 13:31:33

我们希望将该csv文件加载到Postgres里,并且将其中的地理数据从文本形式转化为几何要素(地理要素)。

1)首先,在你的数据库中,确保已经创建了postgis拓展。

SELECT PostGIS_Full_Version();

如果查询结果显示尚未创建postgis拓展,那么运行以下代码创建postgis拓展:

CREATE EXTENSION postgis; ; 

2)然后,打开PgAdmin,在你的数据库中运行以下script,以新建一个表。

CREATE TABLE public.linestringtest
(
  id integer NOT NULL,
  participant integer,
  geom text,
  startt timestamp without time zone,
  endt timestamp without time zone,
  CONSTRAINT linestringtest_pkey PRIMARY KEY (id)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE public.linestringtest
  OWNER TO postgres;

3)此后,运行以下代码将csv文件中的数据导入新建的表。需要注意的是,在csv文件中,不要含有题头那一栏(“id,participant,geom,startt,endt”),首行应当直接从数据内容本身开始。DELIMITER参数是指你的csv文件中用于分隔的符号。

COPY linestringtest (id,participant,geom,startt,endt) 
FROM '/home/linestringtest.csv' 
WITH (FORMAT csv , DELIMITER E',', NULL '');

4)现在,我们要将几何元素所在列geom从text文本格式转为geometry几何格式。此步骤中,可以将坐标系统SRID同时写入数据。

ALTER TABLE public.linestringtest ALTER COLUMN geom TYPE geometry USING ST_SetSRID((geom::GEOMETRY), 4326);

完成✅

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值