由于项目中使用的数据库是mysql,为了保证数据同步,geoserver也需要使用mysql数据源。
(GIS服务引擎也是因为ArcGIS不支持mysql才转到geoserver的)
geoserver的开源性质,决定了他难免会有BUG,好在有源码,修复起来不算麻烦。
BUG 1:
配置的图层数据空间字段不能有空值,否则会抛出边界范围无法计算的错误。导致图层完全无法使用。
解决方案:
在表图层的空间字段上增加默认值属性。
视图则需要增加函数转换如:create view V_POINTS AS SELECT COALESCE (pt.GEOM,ST_GEOMFROMTEXT (‘POINT(0 0)‘,4326)) as GEOM FROM POINTS
BUG 2:
分页搜索形同虚设,WFS查询中GEOSERVER独创的startIndex,maxFeatures分页搜索确实好用。但在mysql插件中则会出现数据查询结果不符或干脆为0条结果。
其根本原因是在做SQL映射时,未将过滤where条件写到查询语句中。修改方法也很简单,找到gt-jdbc-mysql-version.jar, 修改MySQLFilterToSQL.java源文件。估计是原作者的疏忽。只添加了空间查询过滤,而忽略了一般的DBMS sql过滤。caps.addAll(SQLDialect.BASE_DBMS_CAPABILITIES)@Override
protected FilterCapabilities createFilterCapabilities() {
//MySQL does not actually implement all of the special functions
Filter