最近一个项目要用GeoServer,匆忙上手就用,遇到了很多可能出人意料的问题,“用一个shape文件发布多个图层时出现openlayers调用显示空白的问题“就是其中一个,百思不得其解,到GeoServer中文社区遍查贴子,GeoServer.org中扫完UserManual,花了一天半时间,也没有找到答案,中午趴着眯会儿时忍不住还在想,到处都没有相关资料,肯定不是一个常规问题,于是静下心来想,发布一个图层的几个关键环节和服务渲染的原理,工作区->数据存储->(图层+样式+……),一个数据按理说一定可以支持发布多个图层,图层在server端将一个数据用不同的样式渲染后,存到不同的文件夹中传回到客户端,应该也不会有问题,后来几乎是同时,公司一个技术资深的大牛和我都想到了问题出在了样式,事实
上果真如此!!。
1、要明白这个问题所在,必须先理解样式文件结构:
其中有关键的两个Name,SLD:Name是样式的名称,SLD:FeatureTypeName是样式所应用的图层名称,之前一直不能出图,就是发布图层的名称和所用样式中名称不对应所引起的,样式应用后图层与样式中规定图层名称不匹配,(居然也不报错,难道也是弱类型,,,)
2、问题重现
服务发布的名称为jzmd,U_JZMD样式中的FeatureTypeName是grid200_avg2,jzmd图层发布的时候指定样式为U_JZMD。
发布后openlayers浏览的效果如下:
3、问题解决
修改U_JZMD样式中的FeatureTypeName的值为jzmd
提交后再浏览:
4、总结
开源产品上手由于是英文多,资料少,相对确实是难一点,但是切记,遇到问题一定要动脑筋多从原理上思考,解决办法总是多于问题。
时间: 2024-10-10 15:45:40