cesuim加载geoserver+mysql发布的地图遇到的坑

时间:2019-06-18
本文章向大家介绍cesuim加载geoserver+mysql发布的地图遇到的坑,主要包括cesuim加载geoserver+mysql发布的地图遇到的坑使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

最近在整cesium,碰到大量矢量数据加载,于是想用geoserver+mysql发布成图层服务。这里只是记录下遇到问题和解决方案

首先是mysql8.0数据库搭建。参考我的另一篇:https://www.cnblogs.com/smlPig/p/11026440.html

然后geoserver服务搭建,网上有教程,这里不赘述。对mysql支持需要下个jar包,网址:下载最新的就行,然后放到(你的geoserver安装路径)\GeoServer 2.15.1\webapps\geoserver\WEB-INF\lib路径下,打开geoserver出现

说明插件成功。向MySQL库里添加一个测试表geo_poi,添加测试数据。

insert into geo_poi(name,geo) VALUE('1',ST_GeomFromText('Point(116.52564653125002 39.99001174246744)',4326))

悲剧了,发现插不进去。一直报经度位置不在-90~90范围,后来查资料发现mysql8.0的空间录入时是纬经度,纬度在经度前。好吧,不要srid试下,哎~录进去了,很开心。于是开始向geoserver添加mysql的数据源,然后展示图层。额。。又杯具了

报geo.asWKB函数不存在,在mysql数据库里测试了一下。有哇。哎~~整不了(我怀疑是geoserver对8.0支持不太全,srid缺失导致的经纬度无法识别)。既然8.0不行就整个稳定的5.7呗。然后开始下mysql5.7,下完搭环境,发现net start mysql5.7无法启动,怀疑是之前的8.0的影响,于是先关掉之前的服务,还是不行。于是查资料,说要mysqld --initialize-insecure --user=mysql 说要这么一下。然后我就这么一下,结果报错了,说我的data文件不是空文件夹。然后我一看,我踏马连这个文件都没有,然后我就在bin的同目录下建了一个空文件夹,还是报这个错。一头迷雾,就搁置了下。、

后来觉得还是之前8.0影响的,删了吧,于是就删数据库,参考:https://lxzqz.iteye.com/blog/2432472。又是一顿操作(不过因为当时用的.zip文件夹安装的,所以注意的地方不是很多)。删完一运行,还是那个错。好吧,然后我就小崩溃。然后我就已经放弃治疗了,把8.0的安装包也删了,就好了!!!想想可能是由于之前的mysql服务有残余?data指向是8.0的data文件?

然后添加测试数据,在geoserver服务添加mysql数据源,发布服务通了。

最后是用cesium加载wms服务,在geoserver发布的服务右键,然后就能看见所需参数。

然后加载

            let layers = viewer.imageryLayers;
            let layerPoi = new Cesium.WebMapServiceImageryProvider({
                url: "http://localhost:8080/geoserver/lslSelf/wms?",
                layers: 'lslSelf:geo_poi2',
                parameters: {
                    service : 'WMS',
                    format: 'image/png',
                    srs:'EPSG:4326',
                    transparent: true//是否透明
                }
            });
layers.addImageryProvider(layerPoi);

ok,成功展示

原文地址:https://www.cnblogs.com/smlPig/p/11045270.html