1 前言
众所周知,geoserver在发布服务的时候,数据源是多样,在实际开发过程中,最常用的可能就是连接数据库,对某个带有空间列的表中的数据进行服务发布,但有的时候我们可能希望发布的服务不这么死板,这个时候,我们可以通过自定义SQL实现借助GeoServer自己给自己写接口(当然如果有后台愿意给你提供接口那更好)。
(当然这种操作只针对比较简单的查询操作)
2.操作
具体操作如下:
(创建工作空间、存储仓库过程略过)
2.1 新建图层
新建图层,选择对应的存储仓库,配置新的SQL视图
在弹出的创建新的SQL视图中,输入视图名称(相当于服务名),输入写好的SQL
重点
在SQL中,如果需要传入参数,需要将参数使用两个%进行包裹,如:
select a,b,c from t where name = '%name%'
这里两个%中间的name即为服务调用时需要传入的参数
SQL编写完成后,点击从SQL猜想的参数,如果可以正确列出SQL中的参数,表明写法没有问题,在参数列表中可以设置参数的默认值
2.2 前端调用
前端使用正常WFS调用方法使用服务,如果要传入参数,在url后拼接&viewparams=name:李明
,其中name为sql中解析的参数,李明为值,
完整的请求地址实例如下:
`${httpgeoserver}/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=ruimind_cloud_subscribe%3Astate_center_point&outputFormat=application%2Fjson&viewparams=statecode:${statecode}`;