I 相关工具包
GeoServer下载地址:
http://geoserver.org/download/
PostgreSQL下载地址:
https://www.postgresql.org/download/
paAdmin4下载地址:
https://www.pgadmin.org/download/pgadmin-3-windows/
PostGIS下载地址:
http://postgis.net/windows_downloads/
pgRouting已经包含在安装程序中
II 工具安装
PostgreSQL
本机安装PostgreSQL 的话 , pgAdmin4 不用另外安装 , 已经包含在安装程序中
PostGIS
PostGIS 安装需要依赖PostgreSQL (安装到PostgreSQL安装目录下面就可以)
新的空间数据库里添加空间扩展
CREATE EXTENSION postgis;
CREATE EXTENSION pgrouting;
CREATE EXTENSION postgis_topology;
CREATE EXTENSION fuzzystrmatch;
CREATE EXTENSION postgis_tiger_geocoder;
CREATE EXTENSION address_standardizer;
安装问题
1 PostgreSQL 安装完成后 , 可以配置下相关环境变量(方便后续支持dos命令)
2 PostgreSQL 安装后有时会出现没有初始化 ${installDir}/data 目录 , 导致数据库服务无法启动Or无法登录 , 需要手动初始化一下data的数据 :
管理员身份下进入dos (cmd) 命令界面
创建Postgres用户
net user postgres postgres /add
在数据库根目录建立data目录
D:\GIS\PostgreSQL>md data
将data目录的权限赋给postgres
用户
D:\GIS\PostgreSQL>Cacls data /e /t /r postgres:C
处理目录:D:\GIS\PostgreSQL\data
初始化数据库
D:\GIS\PostgreSQL\bin>initdb.exe -D ../data -E UTF-8 --locale=chs -U postgres -W
初始化后,需要输入新的用户密码,用于登录数据库。
注册PostgresSQL
服务
D:\GIS\PostgreSQL\bin>pg_ctl.exe register -N PostgreSQL -D D:\GIS\PostgreSQL\data
启动PostgresSQL
服务
net start PostgreSQL
停止PostgresSQL
服务
net stop PostgreSQL
如果登录时提示 用户 ‘postgres’ 不存在 , 运行如下命令 :
createuser -s -r postgres
** Postgresql
异常Down机后服务无法启动,
服务未报告任何错误,
右键电脑
-->
管理
存在遗留postgres 进程 , 找到日志中报错的 pid 例 : 4016
查看进程 netstat -ano | findstr 4016
杀死进程
taskkill /pid 4016
/f
重启服务 net start [postgresql]
III 数据问题
1 安装PostGIS 后 , 可以使用 PostGIS 3 Shapefile and DBF LoaderExporter 工具将shapefile文件数据导入PostgreSQL数据库
2 OSM 路网资源拉取&入库操作
a 从官网可以导出对应地区的OSM数据
b 使用 osm2pgsql 工具将osm文件数据导入PostgreSQL 数据库
dos 进入工具包解压目录下 (D:\osm2pgsql)
osm2pgsql -d osm -U postgres -P 5432 -C 1024 -S "D:\osm2pgsql\ default.style" ../asia-latest.osm
-d:你的数据库名称
-U:数据库的用户名
-P:数据库的端口
-C:数据缓存(单位是M,你导入的数据的大小合理的设置缓存,如果设置的缓存太小,会导致由于缓存不足造成的导入失败)
-S:选择导入时候用到的style文件
asia-latest.osm:这个是我要导入的osm数据文件
c 数据转变问题
osm数据导入数据库后 , 可以用PostGIS工具导出成shapefile,再重新将shapefile导入数据库就好(解决数据兼容问题)
IV 路由查询问题
1 路由数据查询时 , 报错提示 :
org.postgresql.util.PSQLException:错误: Operation on mixed SRID geometries
查看 对应表中对应 geom 字段的 SRID 是否已经给定
SELECT st_srid(geom) FROM planet_osm_roads
如果给定的 SRID 与查询时指定的 SRID 不一致或者未给定(SRID=0),保持查询的SRID 与 数据表给定 SRID一致,如果是未给定(SRID = 0) , 则设置一个默认的
update planet_osm_roads set geom = st_geomfromtext(ST_AsText(geom),4326)
V 地图资源发布
1 地图资源入库
将拿到的地图资源(shp文件格式)导入到PostgreSQL数据库
打开 PostGIS shp 数据导入工具 , 然后配置数据库信息
点击OK后 , 会提示连接信息 , 提示连接成功后 , 添加需要导入的shp 文件
文件路径尽量别用中文 , 否则导入时会出现编码异常 , 文件添加后 , 将 SRID 设置为 4326 (这个很重要 , 指定地图加载时使用的坐标系) , 然后点击导入 import
如果文件内容中存在中文信息 , 可能会出现导入报错 , 需要转码处理 , 不用特意去修改 , 报错了再去修改
数据导入成功后 , 可以登录到数据库查看 , 表名=文件名
2 地图数据算法
运行pgAdmin服务
($PostgreSQLDir$/pgAdmin 4/bin/ pgAdmin4.exe)
双击后 , 浏览器会弹出PostgreSQL数据库可视化界面 , 配置好数据库连接信息 , 登入对应数据库 , 可以看到我们已经导入的数据
新建对应的数据分析算法函数 , 对应数据表结构修改 , 上面已经有提到 , 需要对会检索到的数据表进行结构变更
3 地图资源发布
运行geoserver 服务 ($geoserverDir$/bin/startup.bat) , 服务器来后 , 登入系统 : http://localhost:8080/geoserver/web/
默认的账号密码是 admin/geoserver
登陆成功后 , 可以开始地图资源发布以及管理相关操作
新建工作区
添加数据存储 , 选择矢量数据源 PostGIS
新建图层 , 选择工作区后 , 能看到对应数据库下面所有的资源数据都可以在这里发布
配置SQL视图
到这里 , 地图已经发布完成 , 可以通过openlayers 进行调用测试
4 地图数据加载
关于地图样式的修改 , 可以在geoserver 系统里面进行单独调整
VI 影像数据(img)发布支持
1 geoserver 扩展插件安装
从官网下载 gdal 插件包 (需要对应geoserver服务版本)
http://geoserver.org/release/2.16.0/
下载拿到压缩包后 , 将其解压到 geoserver-2.16.0 应用服务目录的 lib 路径下($geoserver$ \WEB-INF\lib) , 已经存在的包 , 直接覆盖替换
2 GDAL (源栅格空间数据转换库) 安装
下载 gdal 安装包 (我的安装是依赖python完成的 , 直接安装不确定是否能够成功)
安装完成后会生成 C:\Program Files\GDAL 安装路径
将这个路径添加环境变量的Path 内容中
相关配置需要重启电脑生效 , 然后重启 geoserver , 可以看到数据源发布中已经能够支持 ERDASImg 栅格数据发布