软件安装完,开始数据处理。
从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写个脚本导入数据。