在过去的几年中,我们深度涉足地图类系统的开发,从业务设计、系统开发到测试使用,尽管付出了大量的努力,但总觉得存在一些不尽如人意之处。以下是我们在此过程中遇到的一些问题及其解决策略,敬请各位专家和同行给予指正和交流。
一、遇到的问题及解决方式
问题1:IN查询超出最大限制
解决方式:
在Oracle和MySQL中,IN查询都存在长度限制,Oracle的限制为1000,而MySQL也有类似的限制。以下的解决方案适用于两者:
1. SQL查询优化:关于这个问题的详细探讨,可以参考这篇博客文章:https://blog.csdn.net/qq_40896997/article/details/119897608,其中提供了深入的分析和可能的解决方案。
2. Lambda表达式查询优化:我们可以利用工具包MybatisParameterUtils进行循环遍历,该工具包位于com.gtzh.tools.MybatisParameterUtils。具体的应用示例可以在接口gisElement/listPages中找到。
需要注意的是,当数据量较大且查询速度变得非常慢时,我们不建议继续使用IN查询。在这种情况下,采用’EXISTS’替代’IN’可能会是一个更优的选择,因为它能够在满足条件的情况下尽早终止查询,避免了临时表的生成和扫描,从而提高查询效率。
问题2:在台账新增要素时,发现标绘未能正常显示
解决方式:首先,我们需要点击数据源校正选项,以此来核实台账新增要素的ID是否已经存在于已发布的SHP数据中。如果在进行校正操作后没有观察到任何变化,这可能意味着该数据已经存在,这时需查看唯一id是否相同
问题3:sld样式文件修改
解决方式:
-
非代码相关问题:
- Geoserver服务尚未启动,导致系统无法正常运行。
- SLD文件的位置不准确,可能造成了服务无法找到并应用相应的样式定义。
- SLD格式被识别为不可用,可能是由于文件损坏或者格式不符合规范所致。
- 账号密码输入错误,导致系统权限验证失败,建议核实并重新输入正确的登录凭证。
-
代码相关问题:
- 在拼接SLD的子父级关系时出现了错误,这可能会导致样式层级混乱,影响数据的正确显示。
- 请求拼接的格式不正确,特别是在请求时使用了GBK编码,而在获取响应时却采用了UTF-8编码,这种编码不一致可能导致数据解析异常。
- 解析格式不正确,可能是由于数据源或响应格式与预期不符,需要检查并调整解析逻辑以确保数据能够被正确解读和处理。
问题4:要素数量过多时无法加载或加载速度慢(用下述方法还是很慢,希望大家有思路的话可以交流一下)
解决方式:
1. 后台拼接ogc,使用案例接口gisProjMap /layerConvert
2. 在前端请求成功后,我们将数据存储在缓存中。这是因为Geoserver在处理请求时存在长度限制,当要素数量过大时,可能会导致请求失败。通过缓存机制,我们可以分批次处理和展示数据,从而提高加载效率
问题5:地图上图层不显示或要素不显示
解决方式:
1. geoserver图层或图层组无法显示,可能是shp数据有问题,可能是唯一ID、要素类型等存在错误
2. 这种情况可能是由以下几种原因引起的:台账系统中不存在此数据、返回的OGC格式不正确或数据数量不符、或是显示配置设置存在问题。为了解决这个问题,我们需要逐一排查这些可能性,确保每个环节的设置都准确无误
问题6:shp数据发布后不生效
解决方式:
1. 基础地图中替换shp数据的压缩包
2. 查看geoserver服务中图层组或者单个图层是否生效
3. 未删除geoserver图层或图层组
4. 如果遇到专题图无法生效的问题,可能的原因在于虽然已在基础地图中替换了SHP数据压缩包,但专题图中并未进行相应的替换。这种情况尤其常见于专题图已经配置完成的情况下。因此,记得在专题图中也进行同样的数据替换操作,以确保其与基础地图的数据保持一致
问题7:专题台账导入失败
解决方式:
1. 非代码问题:导入模板不正确、自定义字段格式不正确
2. 代码问题:自定义字段数量不对应(目前自定义字段的数量需要后端手动写死)、基础字段与自定义字段没有对应
注意:自定义字段顺序问题
问题8:拓扑分析中地图不显示
解决方式:
1. 未导入拓扑要素台账
2. 已经导入台账,需查看专题图图层是否显示。若专题图不显示,需要看地图显示的问题
问题9:拓扑资源台账导入失败
解决方式:
1. 导入顺序需先导入拓扑图,再带入资源台账
2. 资源台账GISID不存在专题图中
问题10:拓扑配置中配置要素一段时间后还需要重新配置
解决方式:代码问题,导入的时候没有通过专业、拓扑清单筛选,导致导入后数据不匹配
二、待解决问题
在渲染专题图图层数据时,需对基础地图图层数据进行二次筛选拼接,实现专题图与专专题图之间的数据隔离及准确性。但由于数据量过多在请求geoserver服务时,将会导致拼接的参数过长,同时请求geoserver服务的参数也有长度的限制,导致了专题图渲染速度过慢或失败
我们当前正在积极探讨解决方案,希望能找到一种有效的方法来优化地图加载速度,同时保持图层数据的精确性和完整性。因此我们诚邀各位业界大神分享你们的见解和解决思路。
无论您有任何可能的策略、技巧或是以往的经验,我们都热烈欢迎并期待与您进行深入的交流和讨论。您的专业意见可能会为我们的难题带来突破性的解答,共同推动地理信息处理技术的进步。让我们携手合作,共创高效、流畅的地图展示体验。