文章目录
前言一、数据准备二、使用GeoServer发布PostGIS图层1.创建数据源2.发布图层三、使用GeoServer发布SQL1.创建SQL图层2.图层配置3.服务发布4.参数传值总结前言
PostGIS是对象关系型数据库系统PostgreSQL的一个扩展,PostGIS提供如下空间信息服务功能:空间对象、空间索引、空间操作函数和空间操作符。使用GeoServer可以方便的将PostGIS中的数据发布成服务。
一、数据准备
使用PostGIS Shapefile Import/Export Manager工具将Shapefile文件导入到Postgres数据库中。
二、使用GeoServer发布PostGIS图层
1.创建数据源
在新增数据源页面选择PostGIS类型数据源。
在新建数据源配置页面选择工作区,填写数据源名称及PostGIS数据库连接参数信息。
点击保存并关闭按钮后,GeoServer将跳转至图层发布界面,页面中会列出数据源中所有能够进行发布的图层。
2.发布图层
与发布Shapefile数据一样点击发布按钮,进行图层发布。发布的时候需要坚持坐标系信息,计算图层的原始边界范围和经纬度范围。
点击保存并关闭按钮完成发布后,可以在图层预览页面中对刚发布的图层进行预览。
三、使用GeoServer发布SQL
GeoServer除了可以直接将PostGIS中带空间字段的表发布成地图服务外,还可以在GeoServer中配置SQL,将SQL的查询结果进行服务发布。
1.创建SQL图层
点击图层进入图层列表页面,在图层列表页面点击新增图层,然后选择刚新增的PostGIS数据源,点击页面中的Configure new SQL view进入图层配置界面。
2.图层配置
在新增页面填写sql视图名称和sql语句,sql语句可以配置参数,参数是允许在服务调用时通过url参数传递进来作为sql查询条件使用,参数格式为"%参数名%",最后还需设置空间字段的SRID值,用来标识当前图层所使用的坐标系信息。
3.服务发布
保存进入图层编辑界面,检查图层坐标系及计算边界范围和经纬度范围,最后点击保存并关闭完成服务发布。
4.参数传值
预览图层是可以在URL中添加viewparams进行参数传递,多个参数使用 ; 进行分隔,如存在特殊字符需使用 \ 进行转义。
viewparams=NAME:集美
http://localhost:8080/geoserver/kongj18/wms?service=WMS&version=1.1.0&request=GetMap&layers=kongj18%3Axiamen_view&bbox=117.881308968799%2C24.4212524537416%2C118.407871968799%2C24.9057384737416&width=768&height=706&srs=EPSG%3A4326&styles=&format=application/openlayers&viewparams=NAME:集美
总结
使用GeoServer可以方便的发布PostGIS中的表和视图,但使用sql参数时需要注意,只有在无其他更好解决方法时才使用,如果可以使用cql filter或者其他方法可以实现的不建议使用sql参数。如果没有设置好参数字段的校验规则可能会sql注入的风险。