安装postgis
由于postgresql安装了多个版本,在安装完postgis之后有问题,无法识别,所以先卸载了postgresql然后安装了最新的版本
sudo apt-get --purge remove postgresql\*
sudo apt-get upgrade
sudo apt search postgresql
sudo apt install postgresql-12
sudo /etc/init.d/postgresql start
查看5432端口是否正常运行
netstat -nlt
引入软件源
sudo apt install gnupg software-properties-common
wget -qO - https://qgis.org/downloads/qgis-2021.gpg.key | sudo gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/qgis-archive.gpg --import sudo chmod a+r /etc/apt/trusted.gpg.d/qgis-archive.gpg
sudo add-apt-repository "deb https://qgis.org/ubuntu $(lsb_release -c -s) main"
鉴于仓库 'https://qgis.org/ubuntu focal InRelease' 不支持 'i386' 体系结构
sudo apt-get update
sudo apt install postgis
建议安装这个带界面
sudo apt-get install postgis-gui
postgis是postgresql的扩展,需要在数据库启用,要在postgres数据库上启用
导入shape文件查看数据
shp2pgsql -s 4326 -c -W "UTF-8" mline.shp public.mline | psql -d databasename -U postgres -W
shp2pgsql -s 3857 -c -W "UTF-8" mline.shp public.mline | psql -d databasename -U postgres -W
投影标准:
在地理坐标系中经纬度的单位是度,坐标表示为:(117.435974 33.609617);但在投影坐标系中不同的投影标准有不同的单位,如常用到的投影标准:3857以米为单位,4326以度为单位。
地理数据的类型:geography和geometry
在数据库中, 地理坐标系类型是 geography;投影坐标系的类型是 geometry
类型 geography 的数值单位是度,如数据(117.435974 33.609617) 表示 东径 117.435974 度, 北纬33.609617度;
但对于 geometry 类型,在 4326 投影标准中表示为 东径 117.435974 度, 北纬33.609617度,但在 3857的投影标准中则表示为东径 117.435974 米 北纬33.609617米
· 单位的差异
单位 | 例子 | 值范围限制 | |
---|---|---|---|
geography | 度 | (117.435974 33.609617) | 径度: 0 ~ ±180; 纬度: 0~ ±90,超出异常或负值 |
geometry-4326 | 度 | (117.435974 33.609617) | 径度: 0 ~ ±180; 纬度: 0~ ±90,超出异常或负值 |
geometry-3857 | 度 | (13072912.8999608,3976502.86726954) | 具体参照3857标准 |
·类型的转换
在数据库操作中通过 :: 进行类型转换时,表示只修改类型,但值不会改变,如 1::text, ‘1’::int 等
因此数据在范围(径度: 0 ~ ±180; 纬度: 0~ ±90)中的地理信息,可以直接用 :: 操作符进行geography和geometry的转换,但经过转换后实际的含义也会发生变化,如
geography | geometry-4326 | geometry-3857 | |
---|---|---|---|
geography | 可以 | 可以 | 可以 |
geometry-4326 | 可以 | 可以 | 可以 |
geometry-3857 | 不可以 | 可以 | 可以 |