网站首页 > 技术文章 正文
因为一直开发的内容都是基于内网的系统,所以常用的数据库是ORACLE。图形数据也是使用的Oracle Spatial。以前的开发也是很粗暴,直接使用SQL查询,将查询后的数据封装为WKT格式,前台使用Openlayers展示。展示效果如下。
但是在不断的迭代过程中,频繁的修改代码,代码量也越来越大。业务逻辑与图形展示频繁的穿插,后期维护越来越难,且需要前端去绘制每一个图元性能很差。
目前想的是将图形数据全部交给Geoserver来管理。
在使用geoserver发布oracle spatial过程中,出现了一些问题,这里记录一下。
背景:
在数据库中原来的数据格式有两种,第一种是历史迁移过来的数据,这种数据 GTYPE=1或者GTPE=2;一种是后期新建生成的数据,这种数据GTYPE=2001或者GTYPE=2002;主要问题就出现在数据上。
1、下载geoserver,因为我主要是验证,所以我直接下载的Platform Independent Binary这种可以直接运行的包。
- http://geoserver.org/release/stable/(下载页面)
同时需要下载oracle的扩展。我下载的geoserver版本是2.20.1
- 然后将下载后的oracle扩展包 gt-jdbc-oracle-26.1.jar 、ojdbc8-19.10.0.0.jar 放入到 geoserver-2.20.1\webapps\geoserver\WEB-INF\lib 下。
- 在geoserver-2.20.1\bin 下,启动startup.bat。
2、配置oracle数据源。
- 本地访问 http://127.0.0.1:8080/geoserver/web/ ,登录 admin/geoserver。
- 新建数据存储,填上相应的数据库信息。
- 新建图层。选择对应的数据存储,选择对应的数据表,点击发布。图层详情页面计算一下边框,直接保存即可。
- 在图层预览功能页面。找到生成的图层,点寂Openlayers,查看效果。
但是展示效果报错
java.lang.ArithmeticException: / by zero
at org.geotools.data.oracle.sdo.SDO.coordinates(SDO.java:1712)
at org.geotools.data.oracle.sdo.SDO.create(SDO.java:1880)
其实报错的原因就是因为数据库中旧数据的GTYPE=1或者GTYPE=2这种情况导致的。
- 所以我们需要修改源码SDO.java文件。让它判断是旧数据的情况下,将GTYPE+2000。
// SDO.class create(GeometryFactory,int,int, double[],int[],double[]) 增加下面
if(XGTYPE < 1000) {
GTYPE = 2000 + XGTYPE;
}
- 将编译好的class放入到jar包中。
jar uvf gt-jdbc-oracle-26.1.jar org/geotools/data/oracle/sdo/SDO.class
- 重新将jar包放入geoserver-2.20.1\webapps\geoserver\WEB-INF\lib下
再次预览图层
猜你喜欢
- 2025-07-10 整理汇总数据-执行失败:ORA-01438: 值大于为此列指定的允许精度
- 2025-07-10 oracle列转行以及C#执行语句时报错问题
- 2024-10-17 ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务
- 2024-10-17 mybatis中oracle模糊查询like concat报错
- 2024-10-17 如何高效进行Oracle巡检?顺序方法缺一不可
- 2024-10-17 详解4个方法--解决Oracle快照过旧问题
- 2024-10-17 Kettle 连接Oracle rac报ORA-12505错误解决方法
- 2024-10-17 centos7.4安装oracle11GR2报错解决办法
- 2024-10-17 centos安装oracle 11.2.0.1报错的处理方法
- 2024-10-17 详解Oracle数据库如何有效处理失效对象
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- oracle面试 (55)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)