WebGIS中基于控制点库进行SHP数据坐标转换的一种查询优化策略
2016-05-07 13:51
309 查看
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/
a.控制点库有100W个控制点对。
b.待转换SHP数据有5K个面要素。
转换完毕大概需要120分钟。
此效率是相对较低的,如果想对更多包含大量要素的图层组数据进行批量转换,耗时会成倍增长。这里,我们进行了一些列优化探索。
对大表查询有很多种优化策略,比如将大表改成多个小表,根据业务建立相关索引等等。这里我们一起探讨另外一种方法,流程图如下:
该思路的核心为:遍历获得单个feature后,便根据该feature的extent建立包含局部信息的视图,减少不必要的全表查询。
最后结果测试为:
a.控制点库有100W个控制点对。
b.待转换SHP数据有5K个面要素。
转换完毕大概需要5分钟。
会话临时表是指:该临时表肯定与会话有关。会话在不退出时,则些临时表中的数据存在,会话退出,该临时表中的数据也会随之消失。并且,在多用户操作的情况下,一个会话从来不阻塞另一个会话使用临时表。即使锁定临时表,一个会话也不会阻塞其他会话使用临时表。
事务临时表是指:该临时表与事务相关,当进行事务提交或者事务回滚的时候,临时表中的数据将自行被截断。
根据业务需求,这里选用事务临时表,主要利用其事务结束后会自动将数据做TRUNCATE的功能。
事务临时表的构建规则如下:
Create global temporary table table_name
(col1 type1, col2 type2 …)
On commit delete rows;
a.控制点库有100W个控制点对。
b.待转换SHP数据有5K个面要素。
转换完毕大概需要2.5分钟。
-----欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/
1.前言
目前项目中基于控制点库进行SHP数据的坐标转换,流程大致为:遍历图层要素,获取每个要素的坐标串,查询控制点库,分别进行坐标转换,构建新的要素,最后构建新的图层。此方法效率如下:a.控制点库有100W个控制点对。
b.待转换SHP数据有5K个面要素。
转换完毕大概需要120分钟。
此效率是相对较低的,如果想对更多包含大量要素的图层组数据进行批量转换,耗时会成倍增长。这里,我们进行了一些列优化探索。
2.思路分析
以上方法,耗时最多的是大表查询,即在控制点库中查询对应参考坐标。对大表查询有很多种优化策略,比如将大表改成多个小表,根据业务建立相关索引等等。这里我们一起探讨另外一种方法,流程图如下:
该思路的核心为:遍历获得单个feature后,便根据该feature的extent建立包含局部信息的视图,减少不必要的全表查询。
最后结果测试为:
a.控制点库有100W个控制点对。
b.待转换SHP数据有5K个面要素。
转换完毕大概需要5分钟。
3.进一步优化
以上方法是利用视图来进行查询优化,但是每个视图建立完后还需要控制代码销毁。这个过程会影响效率。3.1事务临时表
临时表分为了会话临时表和事务临时表。会话临时表是指:该临时表肯定与会话有关。会话在不退出时,则些临时表中的数据存在,会话退出,该临时表中的数据也会随之消失。并且,在多用户操作的情况下,一个会话从来不阻塞另一个会话使用临时表。即使锁定临时表,一个会话也不会阻塞其他会话使用临时表。
事务临时表是指:该临时表与事务相关,当进行事务提交或者事务回滚的时候,临时表中的数据将自行被截断。
根据业务需求,这里选用事务临时表,主要利用其事务结束后会自动将数据做TRUNCATE的功能。
事务临时表的构建规则如下:
Create global temporary table table_name
(col1 type1, col2 type2 …)
On commit delete rows;
3.2测试结果
使用事务临时表进行改造后,测试结果如下:a.控制点库有100W个控制点对。
b.待转换SHP数据有5K个面要素。
转换完毕大概需要2.5分钟。
4.总结
这里的核心思想还是进行大表改小表,不过将小表设计为临时表,此种方法在过滤查询数据时效果十分明显。-----欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/
相关文章推荐
- 用gsoap实现面向Java客户端的WebService
- poj1236——Network of Schools(加最少边组成强连通分量)
- 对原生态jdbc(单独使用jdbc开发)问题总结
- 将同一文件批量复制并有序命名(bat程序)
- 计算机图形学(二)输出图元_8_像素编址和对象的几何要素
- javascript原型链简单示例(实现简单的继承)
- 完全不知道怎么取标题,但是不进来看看也许会后悔--其实我一开始想写关于virtual 函数的
- 软件体系结构之框架的选择及说明
- dedecms自定义模型之独立模型在首页、列表页、内容调用内容
- nginx.conf
- 有效解决win10偷跑流量的三种方式
- 运动不再无聊--GEEKERY无线运动激励耳机
- _EPROCESS结构简单了解!
- 浅谈SQL语句优化经验
- 织梦DEDE文章列表前面自动加递增数字标签
- w1
- Css的优先级
- Css的优先级
- Css的优先级
- Css的优先级