軟件安裝完,開始數據處理。
從China Historical GIS下載一份數據。
一、數據下載
數據來源:
China Historical GIS:
https://sites.fas.harvard.edu/~chgis/data/chgis/v6/
先下載一份時間序列數據:
Download CHGIS V6 TIME SERIES Data
https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/Q9VOF5
V6 Time Series Prefecture Points
https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/WW1PD6
V6 Time Series Prefecture Polygons
https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/I0Q7SM
二、數據查看
這份數據是shp格式的。打開QGIS看一眼數據。
QGIS教程參看:https://blog.csdn.net/u014397092/article/details/89403468
因為只是看一眼,所以XYZ Tiles加載一下OpenStreetMap就可以了。
把下載好的數據v6_time_cnty_pts_utf_wgs84.shp加載進去,utf是編碼格式,wgs84是坐標系。
v6_time_cnty_pts_gbk_wgs84.shp和v6_time_cnty_pts_utf_wgs84.shp內容一樣,就是編碼不一樣。
Layers——Open Attribute Table,打開屬性表,查看一下,如果是亂碼,可能編碼不兼容,換utf的shp或gbk的shp。
下圖是點。

把其他數據都加載進來,保持坐標系與編碼統一。
其中:
v6_time_cnty_pts_gbk_wgs84.shp
歷史行政區劃點,到縣一級。
v6_time_pref_pts_gbk_wgs84.shp
歷史行政區劃點,到州一級。
v6_time_pref_pgn_gbk_wgs84.shp
歷史政區面。

三、數據入庫
1.初始化數據庫
先下載安裝navicat用來連接pg庫。
安裝教程參見:https://blog.csdn.net/tqs314/article/details/80760401
Navicat連接pg庫參見:https://jingyan.baidu.com/article/642c9d34ea3ada644a46f7ad.html
因為我之前裝postgresql和postGIS的時候,忘了端口號,也忘了初始化數據庫,所以……
沒關系,卸載,重新安裝一下就好了。
如果數據庫初始化失敗,打開cmd。
Cd 到安裝目錄下,C:PostgreSQL10bin。
initdb -D 數據庫保存路徑。
安裝postGIS的時候,確保路徑是在postgresql下:C:PostgreSQL10。
Win10安裝postgresql和postgis的時候,確保安裝路徑下沒有空格,既沒有這樣的program files。
2.空間擴展
用navicat打開數據庫postgres,就是初始化的數據庫。
新建查詢,執行CREATE EXTENSION postgis,為數據庫添加空間擴展。
會發現數據庫中多了一個表spatial_ref_sys。
3.用PostGIS工具上傳shp
用PostGIS Shapefile Import/Export Manager工具上傳shp。
我們把utf8編碼格式、wgs84坐標系的文件上傳數據庫,因為數據庫一般都是utf-8編碼的。
v6_time_cnty_pts_utf_wgs84.shp
v6_time_pref_pts_utf_wgs84.shp
v6_time_pref_pgn_utf_wgs84.shp
首先打開PostGIS Shapefile Import/Export Manager,點擊View connection details,打開PostGIS connection,輸入賬號密碼,連接數據庫。

Import——Add File,選擇3個shp文件,然后點擊Import。數據就導入pg庫了。

就此,數據入庫就結束了。
4.用QGIS看pg庫中的數據
可以用QGIS連接一下數據庫,看看效果。
先給QGIS加一個地圖瓦片。
Browser——XYZ Tiles——右鍵——New Connection,打開 XYZ Connection。
把瓦片url粘貼進去。
http://webrd01.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scale=1&style=8

QGIS連接postgresql。
打開Data Source Manger,選擇Vector,選擇Database,下拉選擇PostgreSQL,選擇new,輸入Connection Information,輸入User name和Password,勾選store,Test Connection,顯示連接成功,ok,ok,add。


看效果還可以。
5.用sql查看數據
Navicat打開一個表,看geom列,都是這樣的內容:0101000000A265DD3F16C55B4088963C9E96814340,geometry對象是geohash編碼的。
寫個sql看看:SELECT st_astext(geom) FROM v6_time_cnty_pts_utf_wgs84 LIMIT 1
至少知道坐標了:POINT(111.079483 39.012409)
其他表再看看。
SELECT st_astext(geom) FROM v6_time_pref_pgn_utf_wgs84 LIMIT 1
MULTIPOLYGON(((113.549411712145 36.7545434898289,113.543285553768 36.7521524539279,113.560044728209 36.7134634435762,113.55651873219 36.7287158304727,113.552914744172 36.7456842597138,113.549411712145 36.7545434898289)))
SELECT st_astext(geom) FROM v6_time_pref_pts_utf_wgs84 LIMIT 1
POINT(111.076347 39.017826)
用postgis就能把數據都導入postgresql里面,也不用寫程序了。
但這樣就無處顯示我會寫python了。
接下來看看,怎么用python寫個腳本導入數據。