Sqlview动态发布地图图层的方法是什么?我相信很多没有经验的人都不知所措。为此,本文总结了问题产生的原因及解决方法。希望你能通过这篇文章解决这个问题。
1.SQL Views简介
geoserver PostgreSQL OpenLayers(Layers)是目前主流的gis开发工具。Postgresql用于存储地图数据,geoserver用于发布地图数据,openlayers或活页用于访问发布的地图。通常情况下,当shapefile格式的数据导入postgresql数据库时,我们需要通过geoserver发布所有的数据,这样我们就可以访问它。正常情况下,这种操作方式是没有问题的,因为地图作为基础服务,一旦发布就不会改变。但是它对室内地图不起作用。如果一个购物中心有五层,每层有五个地图图层,对于这样的购物中心,所有的25个地图图层都需要在geoserver中发布才能访问该购物中心的所有地图。如果你还能忍受出版这个商场的25层,你还能忍受出版几千个商场的地图吗?如果你不能忍受,你必须找到解决办法。既然发布地图是一个机械重复的任务,我们能不能想办法帮我们完成这些任务?这就是我们的sqlView出来的时候。
首先介绍一下sql View,通过它可以做以下事情:
(1)数据库视图在geoserver中可以发布为完全相同的表,而geoserver的SQLViews不仅可以实现简单的查询发布,还可以输入参数作为查询视图的条件。
(2)SQLViews可以发布数据库的存储过程或函数,以执行更复杂的逻辑操作和查询。
(3)SQL view查询可以通过字符串替换进行参数化,参数值可以在wms和wfs请求中使用,输入值可以通过设置的正则表达式进行验证,消除SQL注入攻击的风险。
(4)SQLViews是数据库操作和查询的结果,wfs_t不能用来操作它,但wfs和WMS可以正常请求或查询。
2.创建带查询条件的SQL Views视图:
(1)登录到地理服务器,单击图层,选择工作区,并创建一个新图层。
(2)创建一个新的SQL视图视图层并发布它。
这里,创建了一个视图来发布传入的表名数据。
tbl的默认值设置为数据库中始终存在的表,设置的正则表达式只允许输入字母数字字符和下划线。
输出结果的类型和坐标系在属性值中设置。
(3)层访问
当您通过wms获取地图时,您只需要通过viewparams传递tbl值。
http://10 . 20 . 135 . 14/geo server/parking/WMS?SERVICE=wmsversversion=1 . 3 . 0 request=GetMapFORMAT=image/pngtransparrent=true layers=parking:vTingcheweiCRS=EPSG:4326 styles=WIDTH=2700 height=1200 bbox=20.02708134918213,110.33805803565978,20 . 0381787
viewparams格式一般为viewparams=p1:v1p2:v2…可以添加几个参数。不同参数之间;分离,单个参数是键值对,即p1是参数名,v1是参数值。
通过wms访问已发布视图的方法如下:
varparams={ layers : ' parking : vtingchewei ',format : ' image/png ' };varviewparams=[' TBL : wanghaigoujia _ B2 _ ting chewei '];params . view params=view params;varvTingchewei=new ol . layer . image({ source : newol . source . imagewms({ URL : ' http://10 . 20 . 135 . 14/geoserver/parking/WMS ',params:params,serverType:'geoserver ',})}));这样,无论有多少商店需要在geoserver中发布五次视图,发布视图的代码都可以预写在geoserver中并打包。这样,该系统可以在任何购物中心使用,而无需发布地图。
3.创建包含function的SQL View视图
解决了图层发布的问题,我们终于可以松一口气了。然而,没想到棘手的问题来了。让领导做室内导航功能。动手吧。我们是努力工作的程序员。那怎么做室内导航呢?在做这个功能之前,我们还是要计划一下。首先,编写最短路径查询算法;然后在查询路径时,只需要将起点和终点的位置输入到算法中进行查询。最后,查询结果由wms或wfs获得并显示在地图上。
写最短路径规划算法时,需要输入:用户所在楼层的道路名称、起点和终点的位置,然后我们会奋战三天三夜,把它完成。
然后,查询,简单易行,只需按照上面所说的,发布一个基于商场所有五层对应楼层的结果路径视图。机智吗?不不不!我只是不知道该怎么想。这时候,肯定需要换一种新的方法,把最短路径规划算法写成一个Function,嵌入到postgresql数据库中。该功能的输入参数为:用户所在楼层、起始位置、结束位置;输出参数是起点和终点直接经过的点的坐标。
通过wms或wfs获取最短路径结果。
上面提到的边肖介绍的用Sqlview实现动态发布地图图层的方法会对你有帮助!
看完以上内容,你掌握了用Sqlview动态发布地图图层的方法了吗?如果您想学习更多技能或了解更多相关内容,请关注行业资讯频道,感谢您的阅读!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/127857.html