GDAL - 地理数据导入PostGIS

将空间数据导入PostGIS存储和管理,是比较常见的需求,PostGIS本身提供了shp2pgsql和pgsql2shp进行Shapefile和PostGIS的互转,如果是其他格式的空间数据就无能为力。我们可以使用QGIS和GDAL来做数据的互操作,QGIS非常好用,但我们有时候需要自己开发应用,GDAL优势就体现出来了,其实,QGIS也是使用了GDAL。这篇文章咱就说说利用GDAL的数据互操作工具ogr2ogr,将数据导入PostGIS中的那些事。

转换字段名称

可通过-sql转换导入PostgreSQL的字段名称,我们可以将原始数据看成是数据库中的一张表,-sql参数指定了一个标准的sql语句,该语句执行的结果会被保存到结果数据中。整个过程可以类比PostgreSQL中的create table as select ...语句。

例如入库一个shapefile文件,数据原有的字段是id,name,age,现在想入库的时候name改为s_name,命令如下:

ogr2ogr -sql “select id, name as s_name, age from layer_name”

数据的字段列表可以通过ogrinfo 判断。

转换数据字段类型

不同于PostgreSQL中的数据类型,ogr有一套自己的数据类型系统:

  • character,对应PostgreSQL中的Character Types
  • float,对应PostgreSQL中的double precision
  • numeric,可自定义精度的数值类型,可对应PostgreSQL中的numeric
  • integer,对应PostgreSQL中的integer
  • date,对应PostgreSQL中的date
  • time,对应PostgreSQL中的time
  • timestamp,对应PostgreSQL中的timestamp

使用COLUMN_TYPES参数可以指定数据类型转换列表,不同字段使用逗号分隔。例如我要将一个shapefile导入PostgreSQL中,更改原为int类型的column1为float,那么命令可以这么写:

ogr2ogr -f "Postgresql" PG:"host=localhost port=5432 dbname=test user=user password=pass" -lco COLUMN_TYPES="column1=float" file.shp

如果字段的原始类型不能转换成指定的类型,会报错。

添加转换进度

ogr2ogr使用-progress可以获得粗略的进度信息,每2.5%就会输出一次进度。

关于导入数据内容乱码

PostgreSQL是以utf8编码存储数据的,客户端也默认以utf8读取内容,然后以utf8写入到数据库。如果待输入的文件内容编码非utf8,那么导入数据库的内容,也会乱码。

解决问题的方法自然就是让ogr2ogr以正确的编码读取文件内容,然后再以utf8编码输入到PostgreSQL。ogr2ogr会根据PGCLIENTENCODING环境变量指定的编码读取内容,因此我们可以在执行ogr2ogr入库命令之前,可以先设置该环境变量为文件内容编码,这样,导入的数据便不会再出现乱码问题。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,045评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,114评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,120评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,902评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,828评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,132评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,590评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,258评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,408评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,335评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,385评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,068评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,660评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,747评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,967评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,406评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,970评论 2 341

推荐阅读更多精彩内容

  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,438评论 0 13
  • 转 # https://www.cnblogs.com/easypass/archive/2010/12/ 08/...
    吕品㗊阅读 9,690评论 0 44
  • 那天跟妹妹视频,妹妹忘了是因为什么事,妹妹,调侃说:“喲哟哟,你这个老司机要开车了” 妈妈不知道从来里冒了出来,好...
    就是流氓阅读 359评论 0 2
  • 有人问:这傻妮子从哪来? 有人答:许是从天上来。 那人又问:孙悟空还从石头缝里蹦出来的呢…… 其实,傻妮子没有了爹...
    郝逗阅读 1,125评论 0 1
  • 我给大家来讲个真实的故事:曾经有这么一个恶毒的女人,她为了利用企业达到自己的个人私欲,利用悲鄙的手段,残害①个正直...
    清简如荷阅读 248评论 1 1