sql 新建发布 找不到存储过程_pgRouting教程九:使用GeoServer发布WMS/WFS接口

5d73b724b2b7ad695006ef1bf2cb1a26.png

本文衔接上篇文章:

不睡觉的怪叔叔:pgRouting教程八:使用pl/pgsql写存储过程​zhuanlan.zhihu.com
7245645692f1db0ef9ea55b72a35cd25.png

上篇文章使用pl/pgsql实现了存储过程,本文将使用GeoServer实现WMS/WFS接口,前端通过HTTP协议访问该WMS/WFS接口就能间接调用上篇文章实现的存储过程。

一、安装GeoServer并登录到管理页面

关于GeoServer的安装和简单使用可以查看以下文章:

不睡觉的怪叔叔:GeoServer的安装(Windows)与初步使用​zhuanlan.zhihu.com
37f1d71b804b3549b591e5932d2f55f0.png

安装完成后登录到管理页面,默认账号为:admin默认密码为:geoserver。

0fa77bb573669650b589ad5aff0a75b3.png

二、创建图层和WMS/WFS接口

2.1、创建工作区

GeoServer的工作区相当于放置特定资源文件的文件夹。我们创建一个"shenzhen"工作区:

8655117bc91aa6f0baaf8a8dec9a6fac.png

点击"保存"按钮,保存工作区。

2.2、创建数据存储

GeoServer的数据存储相当于数据源,定义了数据的来源。我们创建一个同样名为"shenzhen"的数据存储:

d19bd58f0c1c03e7c4a5c5e4e4c92b71.png

bbae0fab3f59c7ca1a82f970ac57b9d3.png

b838e9613984e26a18e2bec250898920.png

最后点击"保存"按钮,保存新建的数据存储。

2.3、创建图层/SQL视图

点击"图层" -> "添加新的资源",进入新建图层页面:

bfe2bbd1ce6826e9cf6a122ba4254387.png

在新建图层页面选择工作区和数据存储为"shenzhen:shenzhen",再点击"配置新的SQL视图":

eb670f0749a109031787552988bbd6a2.png

在创建新的SQL视图页面,填写视图名称为"shenzhen",并填写如下SQL语句:

SELECT ST_MakeLine(route.geom) FROM (
    SELECT geom FROM wrk_fromAtoB('vehicle_net', %x1%, %y1%, %x2%, %y2%) ORDER BY seq
) AS route;

以上SQL语句中,使用两个百分号表示中间的变量是参数。

然后再点击"从SQL猜想的参数", 页面中就会显示两个百分号包含的参数,设置四个参数的默认值为0,并且配置"验证的正则表达式"都为"^-?[d.]+$",这样参数只能接受数字值(为了防止SQL注入)。

接着再点击属性下面的"刷新"按钮,将会出现一个名称为st_makeline的属性,设置该属性的类型为LineString,设置该属性的SRID为3857。所有设置如下所示:

16f1fcefce9efc3f04d8c0da08868521.png

最后点击"保存"按钮,保存我们新配置的SQL视图。

这样就会返回到编辑图层页面,我们需要在该页面设置"边框"参数,分别点击如下按钮:

a3b80779056c49ac69bef4063f485f77.png

最后,点击"保存"按钮,就可以在图层列表看到新建的图层/SQL视图:

dc2209a5a00479c2b7161541bb947b96.png

三、测试

GeoServer的SQL视图的参数是通过将viewparams参数添加到WMS的GetMap或WFS 的GetFeature请求来指定的。viewparams参数是一个键值对列表,键值对与键值对之间用分号分隔:viewparams=p1:v1;p2:v2;...

现在就使用上篇文章中使用的两个位置坐标(x1=12677354.9,y1=2578172.3,
x2=12677441.2, y2=2577908.3)进行测试。

打开浏览器,发送一个WFS的GetFeature请求:

http://localhost:8080/geoserver/shenzhen/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=shenzhen:shenzhen&maxFeatures=50&outputFormat=application/json&viewparams=x1:12677354.9;y1:2578172.3;
	x2:12677441.2;y2:2577908.3

浏览器将会收到一份GeoJSON数据:

{
	"type": "FeatureCollection",
	"features": [{
		"type": "Feature",
		"id": "shenzhen.fid-61be8e79_172e5251868_-7feb",
		"geometry": {
			"type": "LineString",
			"coordinates": [
				[1.267733314942105E7, 2578207.10933218],
				[1.267731205437755E7, 2578186.95527014],
				[1.267742715873103E7, 2578062.82510839],
				[1.267744051706992E7, 2578048.2762173],
				[1.267740226769289E7, 2578012.16320045],
				[1.267737693137678E7, 2577988.24861564],
				[1.267737108710352E7, 2577980.24495178],
				[1.267736941731116E7, 2577976.86991396],
				[1.267736439680212E7, 2577966.75685832],
				[1.26773591091263E7, 2577953.60627906],
				[1.267738583693604E7, 2577945.74727608],
				[1.267740857950801E7, 2577939.05748352],
				[1.267744528154413E7, 2577926.3529119],
				[1.267744156347314E7, 2577915.51666732],
				[1.267743928142357E7, 2577908.85099422]
			]
		},
		"geometry_name": "st_makeline",
		"properties": {}
	}],
	"totalFeatures": 1,
	"numberMatched": 1,
	"numberReturned": 1,
	"timeStamp": "2020-06-24T08:15:53.968Z",
	"crs": {
		"type": "name",
		"properties": {
			"name": "urn:ogc:def:crs:EPSG::3857"
		}
	}
}

将该数据保存到文件(文件后缀为.geojson),并使用桌面GIS软件打开即可看见查询的结果路径:

88efbcdcae4a044e9df6c1abe124c43a.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值