GDAL - 地理數(shù)據(jù)導(dǎo)入PostGIS

將空間數(shù)據(jù)導(dǎo)入PostGIS存儲(chǔ)和管理稠屠,是比較常見(jiàn)的需求操禀,PostGIS本身提供了shp2pgsql和pgsql2shp進(jìn)行Shapefile和PostGIS的互轉(zhuǎn)涧窒,如果是其他格式的空間數(shù)據(jù)就無(wú)能為力肌似。我們可以使用QGIS和GDAL來(lái)做數(shù)據(jù)的互操作棵里,QGIS非常好用义黎,但我們有時(shí)候需要自己開(kāi)發(fā)應(yīng)用禾进,GDAL優(yōu)勢(shì)就體現(xiàn)出來(lái)了,其實(shí)廉涕,QGIS也是使用了GDAL泻云。這篇文章咱就說(shuō)說(shuō)利用GDAL的數(shù)據(jù)互操作工具ogr2ogr,將數(shù)據(jù)導(dǎo)入PostGIS中的那些事狐蜕。

轉(zhuǎn)換字段名稱

可通過(guò)-sql轉(zhuǎn)換導(dǎo)入PostgreSQL的字段名稱宠纯,我們可以將原始數(shù)據(jù)看成是數(shù)據(jù)庫(kù)中的一張表,-sql參數(shù)指定了一個(gè)標(biāo)準(zhǔn)的sql語(yǔ)句层释,該語(yǔ)句執(zhí)行的結(jié)果會(huì)被保存到結(jié)果數(shù)據(jù)中婆瓜。整個(gè)過(guò)程可以類比PostgreSQL中的create table as select ...語(yǔ)句。

例如入庫(kù)一個(gè)shapefile文件,數(shù)據(jù)原有的字段是id廉白,name个初,age,現(xiàn)在想入庫(kù)的時(shí)候name改為s_name猴蹂,命令如下:

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

數(shù)據(jù)的字段列表可以通過(guò)ogrinfo 判斷院溺。

轉(zhuǎn)換數(shù)據(jù)字段類型

不同于PostgreSQL中的數(shù)據(jù)類型,ogr有一套自己的數(shù)據(jù)類型系統(tǒng):

  • character磅轻,對(duì)應(yīng)PostgreSQL中的Character Types珍逸;
  • float,對(duì)應(yīng)PostgreSQL中的double precision聋溜;
  • numeric谆膳,可自定義精度的數(shù)值類型,可對(duì)應(yīng)PostgreSQL中的numeric撮躁;
  • integer摹量,對(duì)應(yīng)PostgreSQL中的integer
  • date馒胆,對(duì)應(yīng)PostgreSQL中的date
  • time凝果,對(duì)應(yīng)PostgreSQL中的time祝迂;
  • timestamp,對(duì)應(yīng)PostgreSQL中的timestamp器净。

使用COLUMN_TYPES參數(shù)可以指定數(shù)據(jù)類型轉(zhuǎn)換列表型雳,不同字段使用逗號(hào)分隔。例如我要將一個(gè)shapefile導(dǎo)入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

如果字段的原始類型不能轉(zhuǎn)換成指定的類型,會(huì)報(bào)錯(cuò)浪慌。

添加轉(zhuǎn)換進(jìn)度

ogr2ogr使用-progress可以獲得粗略的進(jìn)度信息冤荆,每2.5%就會(huì)輸出一次進(jìn)度。

關(guān)于導(dǎo)入數(shù)據(jù)內(nèi)容亂碼

PostgreSQL是以u(píng)tf8編碼存儲(chǔ)數(shù)據(jù)的权纤,客戶端也默認(rèn)以u(píng)tf8讀取內(nèi)容钓简,然后以u(píng)tf8寫入到數(shù)據(jù)庫(kù)。如果待輸入的文件內(nèi)容編碼非utf8汹想,那么導(dǎo)入數(shù)據(jù)庫(kù)的內(nèi)容外邓,也會(huì)亂碼。

解決問(wèn)題的方法自然就是讓ogr2ogr以正確的編碼讀取文件內(nèi)容古掏,然后再以u(píng)tf8編碼輸入到PostgreSQL损话。ogr2ogr會(huì)根據(jù)PGCLIENTENCODING環(huán)境變量指定的編碼讀取內(nèi)容,因此我們可以在執(zhí)行ogr2ogr入庫(kù)命令之前,可以先設(shè)置該環(huán)境變量為文件內(nèi)容編碼丧枪,這樣光涂,導(dǎo)入的數(shù)據(jù)便不會(huì)再出現(xiàn)亂碼問(wèn)題。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末豪诲,一起剝皮案震驚了整個(gè)濱河市顶捷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌屎篱,老刑警劉巖服赎,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異交播,居然都是意外死亡重虑,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門秦士,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)缺厉,“玉大人,你說(shuō)我怎么就攤上這事隧土√嵴耄” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵曹傀,是天一觀的道長(zhǎng)辐脖。 經(jīng)常有香客問(wèn)我,道長(zhǎng)皆愉,這世上最難降的妖魔是什么嗜价? 我笑而不...
    開(kāi)封第一講書人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮幕庐,結(jié)果婚禮上久锥,老公的妹妹穿的比我還像新娘。我一直安慰自己异剥,他們只是感情好瑟由,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著冤寿,像睡著了一般错妖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上疚沐,一...
    開(kāi)封第一講書人閱讀 49,772評(píng)論 1 290
  • 那天暂氯,我揣著相機(jī)與錄音,去河邊找鬼亮蛔。 笑死痴施,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播辣吃,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼动遭,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了神得?” 一聲冷哼從身側(cè)響起厘惦,我...
    開(kāi)封第一講書人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎哩簿,沒(méi)想到半個(gè)月后宵蕉,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡节榜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年羡玛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宗苍。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡稼稿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出讳窟,到底是詐尸還是另有隱情让歼,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布丽啡,位于F島的核電站谋右,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏碌上。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一浦徊、第九天 我趴在偏房一處隱蔽的房頂上張望馏予。 院中可真熱鬧,春花似錦盔性、人聲如沸霞丧。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蛹尝。三九已至,卻和暖如春悉尾,著一層夾襖步出監(jiān)牢的瞬間突那,已是汗流浹背构眯。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工葱弟, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留芝加,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像祥楣,于是被迫代替她去往敵國(guó)和親误褪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子兽间,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • pyspark.sql模塊 模塊上下文 Spark SQL和DataFrames的重要類: pyspark.sql...
    mpro閱讀 9,448評(píng)論 0 13
  • 轉(zhuǎn) # https://www.cnblogs.com/easypass/archive/2010/12/ 08/...
    呂品?閱讀 9,709評(píng)論 0 44
  • 那天跟妹妹視頻讼育,妹妹忘了是因?yàn)槭裁词履潭危妹茫{(diào)侃說(shuō):“喲喲喲词裤,你這個(gè)老司機(jī)要開(kāi)車了” 媽媽不知道從來(lái)里冒了出來(lái)吼砂,好...
    就是流氓閱讀 361評(píng)論 0 2
  • 有人問(wèn):這傻妮子從哪來(lái)因俐? 有人答:許是從天上來(lái)蓉坎。 那人又問(wèn):孫悟空還從石頭縫里蹦出來(lái)的呢…… 其實(shí)蛉艾,傻妮子沒(méi)有了爹...
    郝逗閱讀 1,128評(píng)論 0 1
  • 我給大家來(lái)講個(gè)真實(shí)的故事:曾經(jīng)有這么一個(gè)惡毒的女人,她為了利用企業(yè)達(dá)到自己的個(gè)人私欲勿侯,利用悲鄙的手段拓瞪,殘害①個(gè)正直...
    清簡(jiǎn)如荷閱讀 253評(píng)論 1 1