梯子
PostGIS
創建
安裝就不必介紹了,windows下使用安裝工具Application Stack Builder
,選擇空間擴展PostGIS即可自動安裝
然后新建庫后,在庫中執行以下語句創建控件擴展
CREATE EXTENSION postgis
也可以創建數據庫時選擇postgis的模板庫創建
create database postgisdb template postgis_template;
新建數據庫后添加postgis擴展后會發現庫內public模式下函數序列觸發器等都會增加一些postgis相關功能
然后就可以通過PostGIS Shapefile and DBF Loader
工具導入shp數據
備份
postgersql的備份恢復主要有
- 增量備份和基於時間點恢復(RITR)
- pg_dump和pg_dumpall進行轉儲,從SQL轉儲文件恢復
- 文件系統級別備份
這里我們使用簡單,容易掌握的pg_dump
命令,一般在安裝目錄bin下
pg_dump備份單庫,不導出角色和表空間相關信息
pg_dump -h localhost -U postgres postgisdb > D:\backup\postgisdb.bak
有一些參數選項可以參考(很多,具體不列了,執行help可以查看到)
pg_dump --help
恢復
恢復可以使用psql
psql -h localhost -U postgres -d postgisdb2 < D:\backup\postgisdb.bak
恢復時可以指定不同的數據庫,如果pg_dump時-C創建數據庫,那也可以不用先新建數據庫
postgis庫的恢復備份還是挺簡單的,所有的東西都在public下
ArcGIS
創建
ArcGIS要連接到postgresql,需要將postgresql安裝目錄lib下的libeay32.dll、libiconv-2.dll、libintl-8.dll、libpq.dll 和 ssleay32.dll
拷貝到ArcGIS Desktop的安裝目錄bin下
將ArcGIS Desktop目錄DatabaseSupport\PostgreSQL下的st_geometry.dll
拷貝到postgresql的lib下
使用ArcGIS工具箱中Create Enterprise Geodatabase
工具創建SDE,完事后會在創建一個sde登陸角色
並在庫中創建一個sde模式
,包含諸多函數序列管理表等。(注意:ArcGIS雖然可以在系統庫postgres中創建SDE擴展,然並連不上,ArcGIS不允許連接訪問系統數據庫)
然后ArcGIS可以連接該數據庫,並且進行空間數據管理操作。(注意:默認ArcGIS創建空間數據,只能創建在和登陸用戶同名的模式下)
備份
我們可以向上面PostGIS備份恢復一樣,直接備份整個庫
恢復
如果恢復至同名數據庫,像上面恢復是沒有問題的
但如果數據庫改名了,則會有驚喜發生,ArcGIS管理空間報底層gdb_release之類的錯誤
,同樣的問題不止恢復庫時,修改數據庫名稱也不像其他庫那么隨心所欲,以含SDE擴展的庫為模板創建新庫也會有問題
ArcGIS SDE未見文檔介紹內部結構邏輯,只能猜測大概,或不准確,願聞其詳
ArcSDE空間數據創建時會在SDE管理表里注冊相關信息
,比如空間參考,列啊,表的唯一標識等,便於它做數據管理、版本控制
修改庫名后,ArcSDE管理就出問題,主要是一些注冊項,安裝SDE時也會把該庫的信息注冊到SDE管理表
中去,所以新庫名,它就不認識了
如果修改了庫名,我們找到以下表
select * from sde.gdb_items
you need modify : name physicalname path etc...
update sde.sde_table_registry set database_name='testdb';
update sde.sde_column_registry set database_name='testdb';
update sde.sde_geometry_columns set f_table_catalog='testdb';
update sde.sde_raster_columns set database_name='testdb';
update sde.sde_layers set database_name='testdb';
然后就一切正常
當然我們建議不輕易改庫名
這就是商業軟件,足夠強大不夠靈活,封裝和靈活總會互相博弈