PostGIS匯入匯出柵格資料
上一篇博文PostGIS匯入匯出ESRI Shapefile資料介紹瞭如何匯入空間向量資料到PostgreSQL中,緊接上一篇,本文將介紹如何使用PostGIS匯入匯出空間柵格資料。
實驗環境和上一篇的博文一樣: Ubuntu 16.04 LTS 。
資料為全球影像(ESRI ArcGIS提供的示例資料),下載連線:全球影像百度網盤下載
可以使用GDAL的gdalinfo命令檢視其詳細資訊:
在QGIS中檢視如下:
PostGIS提供了raster2pgsql工具用於柵格資料的匯入(可以使用man raster2pgsql命令檢視幫助文件)。
使用如下命令進行影像資料的插入,具體引數的含義這裡不在累贅,上篇文章有說明。關於raster2pgsql的引數可以使用man命令進行檢視。
raster2pgsql -s 4326 -C ~/Downloads/gisdata/wsiearth.tif staging.wsiearth | psql -h localhost -p 5432 -U postgres -d postgis_in_action -W
可以使用psql進入資料庫檢視:
還可以使用\d staging.wsiearth
檢視關係表的結構:
可以看到有一個rid和rast的列,rid是以一個整形對插入的柵格資料進行的標示,rast列的型別是raster儲存了具體資料。
如果想要匯出資料,可以使用PostGIS提供的內建函式。其中ST_AsGDALRaster 是一個通用性的函式,可以匯出為GDAL支援的任意格式。此外,還有ST_AsPNG,ST_AsJPEG和ST_AsTIFF等函式,提供了直接匯出到指定格式,並且接受更少的引數。
注意:PostGIS的預設匯出GDAL支援的格式資料是關閉的,啟用的話需要修改PostgreSQL的配置檔案。修改的方法比較多,而且不同的PostgreSQL版本的支援情況不一樣。我使用如下命令進行修改:
sudo vim /etc/postgresql/9.5/main/postgresql.conf
在該配置檔案後面新增:
postgis.gdal_enabled_drivers = 'ENABLE_ALL'
postgis.enable_outdb_rasters = True
重啟PostgreSQL:
sudo service postgresql restart
第二個問題是:這些內建函式提供的匯出結果是PostgreSQL的bytea (byte array)資料型別,我們需要自己寫程式進行轉換成實際的影象檔案。
# -*- coding: utf-8 -*-
import psycopg2
# Connect to an existing database
conn = psycopg2.connect('host=localhost port=5432 user=postgres password=password dbname=postgis_in_action')
# Open a cursor to perform database operations
cur = conn.cursor()
# Execute SQL query
cur.execute("SELECT ST_AsTIFF(rast, 'LZW') AS rasttiff FROM staging.wsiearth WHERE rid=1;")
# Fetch data as Python objects
rasttiff = cur.fetchone()
# Write data to file
if rasttiff is not None:
open('/home/theone/Desktop/wsiearth.tif', 'wb').write(str(rasttiff[0]))
# Close communication with the database
cur.close()
conn.close()
在QGIS中檢視匯出結果如下:
可以發現匯出的結果,丟失了影象的colormap,但是每個畫素值都是正確的。
相關推薦
PostGIS匯入匯出柵格資料
上一篇博文PostGIS匯入匯出ESRI Shapefile資料介紹瞭如何匯入空間向量資料到PostgreSQL中,緊接上一篇,本文將介紹如何使用PostGIS匯入匯出空間柵格資料。 實驗環境和上一篇的博文一樣: Ubuntu 16.04 LTS 。 資料為
PostGIS匯入匯出ESRI Shapefile資料
PostGIS作為PostgreSQL資料庫的空間擴充套件,提供了對空間資料管理的支援。對於空間向量資料,PostGIS提供了Geometry和Geography倆種類型用於空間物件的儲存,Geometry使用笛卡爾座標系,而Geography使用球面座標系(預
mysql匯入匯出指定資料指令碼(含遠端)及弊端
有時候,需要匯出表中的指定列的資料,拼接成INSERT語句。如下: Code(遠端匯出需要加入引數"-h+ip";本地則去掉該引數,或者將ip換為本地ip即可) mysql -h+ip -uusername -ppassword -e "select concat('insert i
mysql匯入匯出全部資料指令碼(含遠端)及錯誤收集
使用mysql的mysqldump命令進行資料的匯入匯出。 1、匯出 匯出(遠端): 以下指令碼為預設語句,其他引數預設 mysqldump -h127.0.0.1 -uusername -ppassword --databases dbname --tables tablenam
MySQL mysqldump 匯入/匯出 結構&資料&儲存過程&函式&事件&觸發器
一、使用mysqldump匯出/匯入sql資料檔案 二、使用infile/outfile匯入/匯出txt/csv資料檔案 ———————————————-庫操作———————————————- 1.①匯出一個庫結構 mysqldump -d dbname -u ro
MongoDB 匯入匯出和資料遷移
遷移需求 現有測試伺服器A 和 測試伺服器 B,需要實現從測試伺服器A向測試伺服器B進行mongoDB 資料庫的遷移。 可以使用 mongoDB 的匯出工具 mongoexport 和匯入工具 mongoimport 實現。 官方英文文件連結 mongoDB mongoexport
5.非關係型資料庫(Nosql)之mongodb:建立集合,備份與匯入匯出, 資料還原,匯入匯出
1固定集合固定集合值得是事先建立而且大小固定的集合2固定集合的特徵:固定集合很像環形佇列,如果空間不足,最早文件就會被刪除,為新的文件騰出空間。一般來說,固定集合適用於任何想要自動淘汰過期屬性的場景
C#實現匯入匯出Excel資料的兩種方法詳解
這篇文章主要為大家詳細介紹了C#匯入匯出Excel資料的兩種方法,具有一定的參考價值,感興趣的小夥伴們可以參考一下本文為大家分享了C#匯入匯出Excel資料的具體程式碼,供大家參考,具體內容如下注:對於實體類物件最好新建一個並且繼承原有實體類,這樣可以將型別進行修改;方法一:
Mysql匯入匯出大量資料的方法、備份恢復辦法
經常使用PHP+Mysql的朋友一般都是通過phpmyadmin來管理資料庫的。日常的一些除錯開發工作,使用phpmyadmin確實很方便。但是當我們需要匯出幾百兆甚至幾個G的資料庫時,phpmyadmin就會很卡。甚至如果你是想匯入大量資料,則phpmyadmin完全
PostGIS匯入匯出SHP檔案常用命令
SHP匯入POSTGIS資料庫[quote][color=red]直接匯入資料庫shp2pgsql -I -s 2437 -W GBK shop_point.shp public.ntable | psql -U postgres -w -d jwsz匯出sql再匯入資料庫
MAPublisher9.5快速開始指南 第7章 匯入GIS柵格資料
7 匯入GIS柵格資料 繼續製作地圖,開啟Vancouver Downtown 7.ai 1. 從MAPublisher工具條,點選匯入按鈕。從格式下拉選單中選擇Image,點選瀏覽按鈕,定位到\Quick Start Data\RasterFiles,選擇Vanc
poiExcel表格所有操作以及資料匯入匯出
這個是本人在學習中記錄的筆記以供大家參考 Poi簡介: 1.1什麼是poi Apache POI [1] 是用Java編寫的免費開源的跨平臺的 Java API,Apache POI提供API給Java程式對Microsoft Offi
使用POI將資料匯入匯出資料庫。
POI將資料匯入匯出資料庫。(採用ssm框架) 1.前臺列表的展示 <script type="text/javascript"> //進行資料的全選 function selectAll(){ var ids=document.get
linux下匯入、匯出mysql資料庫命令的實現方法
首先建空資料庫 mysql>create database abc; 匯入資料庫 mysql>use abc; 設定資料庫編碼 mysql>set names utf8; 匯入資料(注意sql檔案的路徑) mysql>source /home/abc/abc.sql;
Oracle資料庫資料常用的匯入匯出
採用exp/imp命令 知識擴充: 資料泵匯出匯入(EXPDP和IMPDP)的作用 1、實現邏輯備份和邏輯恢復。 2、在資料庫使用者之間移動物件。 3、在資料庫之間移動物件 4、實現表空間搬移。 資料泵匯出匯
【轉載】oracle 資料匯入匯出
oracle 資料匯入匯出 一、oracle中copy from的用法 1.語法及使用說明 1.1 語法 下面我們來看一下SQL*Copy Command的語法及使用說明。 在解釋SQ
Hive命令之三:hive的資料匯入匯出
Hive 資料的匯入匯出: 一 Hive資料匯出 1、匯出資料到本地檔案系統: insert overwrite local directory '/software/data/data1' select * f
oracle 11g 資料庫表空間建立與資料匯入匯出
** oracle資料庫中進行資料的匯入匯出時要在cmd中進行而不是在sqlplus中進行操作! (1)向oracle資料庫中匯入完整的資料庫(字尾名:dmp) 首先進入cmd,輸入sqlplus /nolog執行oracle自帶程式,
Oracle利用exp和imp,資料泵impdp和expdp匯入匯出資料,spool匯出資料
Oracle利用exp和imp,資料泵impdp和expdp匯入匯出資料,spool匯出資料 注意: (1)imp只能匯入exp匯出的檔案 ,imp,exp是客戶端程式,操作少量資料 (2)impdp只能匯入expdp匯出的檔案,impdp,expdp是伺服器端程式,操作適量大的
thinkphp5匯入匯出大量csv資料
在thinkphp/library/think下新建Csv.php檔案: <?php /** * Created by PhpStorm. * User: sunin * Date: 2018/10/18 * Time: 17:42 */ namespace think;