环境:
QGIS:QGIS-OSGeo4W-3.14.1-1-Setup-x86_64
下载地址-请下载独立安装版本:
https://www.qgis.org/zh-Hans/site/forusers/download.html
PostgreSQL:12
下载地址:https://www.postgresql.org/download/
postgis:postgis-bundle-pg12x64-setup-3.0.1-3
下载地址:http://download.osgeo.org/postgis/windows/pg12/
可以将postgis安装覆盖到postgresql中并创建数据库,省去很多麻烦
安装后可以创建一个库并验证是否成功:
create database postgis_test OWNER = postgres ENCODING = 'UTF8';
CREATE EXTENSION postgis;
SELECT postgis_full_version();
-- 简单使用:
CREATE TABLE table1 (
id int primary key
);
alter table table1 add column name text;
-- 添加坐标列 使用EPSG:4326 坐标系统
SELECT AddGeometryColumn ('table1', 'the_geom', 4326, 'POINT', 2);
INSERT INTO table1(id, the_geom, name)
VALUES (4,ST_GeomFromText('POINT(-0.1257 51.508)',4326),'London, England')
, (2,ST_GeomFromText('POINT(-81.233 42.983)',4326),'London, Ontario')
, (3,ST_GeomFromText('POINT(27.91162491 -33.01529)',4326),'East London,SA');
select * from table1;
-- 十六进制不便于查看,要转为十进制
SELECT id, ST_AsText(the_geom), ST_AsEwkt(the_geom), ST_X(the_geom), ST_Y(the_geom) FROM table1;
-- 计算两点距离,旧版本
SELECT p1.name,p2.name,st_distance_sphere(p1.the_geom,p2.the_geom) FROM table1 AS p1, table1 AS p2 WHERE p1.id > p2.id;
-- 新版本
SELECT p1.name,p2.name, ST_DistanceSphere(p1.the_geom,p2.the_geom) FROM table1 AS p1, table1 AS p2 WHERE p1.id > p2.id;
QGIS介绍:
QGIS是一个用户界面友好的桌面地理信息系统,可运行在Linux、Unix、Mac OSX和Windows等平台之上。QGIS是基于Qt,使用C++开发的一个用户界面友好、跨平台的开源版桌面地理信息系统
QGIS软件的主要特点有:
1 支持多种GIS数据文件格式。通过GDAL/OGR扩展可以支持多达几十种数据格式.
2 支持PostGIS数据库。
3支持从WMS,WFS服务器中获取数据
4 集成了Grass的部分功能。
5 支持对GIS数据的基本操作,如属性的编辑修改等。
6 支持创建地图。
7 通过插件的形式支持功能的扩展
PostGIS简介
PostGIS是对象关系型数据库系统PostgreSQL的一个扩展,PostGIS提供如下空间信息服务功能:空间对象、空间索引、空间操作函数和空间操作符。同时,PostGIS遵循OpenGIS的规范。
PostGIS的版权被纳入到GNU的GPL中,也就是说任何人可以自由得到PostGIS的源码并对其做研究和改进。正是由于这一点,PostGIS得到了迅速的发展,越来越多的爱好者和研究机构参与到PostGIS的应用开发和完善当中
下面是测试步骤:
1) qgis软件,点击上方菜单的project –> new
2)layer –> Create layer –> New Shapefile Layer
3) 画图
4) 保存
剩下的就是导入postgis中(如果不方便使用图形工具导入,可以使用命令行导入命令,请看后边参考)
1)打开shp2pgsql-gui并连接数据库
2)导入文件
将上面保存的文件放到一个没有中文目录的路径中
最后导入即可
如果失败,可以配置编码等信息
查看:
登录postgresql数据库查看是否成功
图形查看
命令行导入postgis步骤:
1)进入安装的postgresql的bin目录,执行
-- 其中-W 代表设置字符集,可以为UTF-8或者GBK等,t_china_map为shp导入的表名,后边的china为转换待导入的sql
D:\PostgreSQL\12\bin>shp2pgsql -W "UTF-8" "D:\PostgreSQL\shapefile\China\china.shp" t_china_map > "D:\PostgreSQL\shapefile\China\china.sql"
Field x is an FTDouble with width 19 and precision 11
Field y is an FTDouble with width 19 and precision 11
Shapefile type: Polygon
Postgis type: MULTIPOLYGON[2]
2)导入数据
-- 第一行设置密码是为了可以在第二个命令上不输入密码
D:\PostgreSQL\12\bin>set PGPASSWORD=China
-- 具体导入
D:\PostgreSQL\12\bin>psql -d postgis_test1 -U username -f "D:\PostgreSQL\shapefile\China\china.sql"
SET
SET
BEGIN
CREATE TABLE
ALTER TABLE
addgeometrycolumn
----------------------------------------------------------
public.t_china_map.geom SRID:0 TYPE:MULTIPOLYGON DIMS:2
(1 行记录)
...
3)验证是否有表(t_china_map)和数据
其他shp文件:
https://www.naturalearthdata.com/
一些shp文件:链接:https://pan.baidu.com/s/18kcXeKh4VksSdqsZ6VIg9w
提取码:b9d6