WebGIS中基于控制点库进行SHP数据坐标转换的一种查询优化策略

简介: 文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.前言 目前项目中基于控制点库进行SHP数据的坐标转换,流程大致为:遍历图层要素,获取每个要素的坐标串,查询控制点库,分别进行坐标转换,构建新的要素,最后构建新的图层。

文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处: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/

 

目录
相关文章
|
7月前
|
编解码
没有地理参考的图层添加坐标系:ENVI
本文介绍基于ENVI软件,对不含有任何地理参考信息的栅格遥感影像添加地理坐标系或投影坐标系等地理参考信息的方法~
122 4
没有地理参考的图层添加坐标系:ENVI
|
2月前
|
图形学 计算机视觉
GEE错误——如何将原有矢量将维度转化为地理坐标系,重投影坐标坐标无法实现?
GEE错误——如何将原有矢量将维度转化为地理坐标系,重投影坐标坐标无法实现?
32 0
|
4月前
|
编解码 数据可视化 定位技术
Google Earth Engine谷歌地球引擎GEE地理坐标系与投影坐标系变换与重投影
Google Earth Engine谷歌地球引擎GEE地理坐标系与投影坐标系变换与重投影
|
4月前
|
算法 计算机视觉 芯片
[Halcon&定位] 二维仿射变换原理与算子解析
[Halcon&定位] 二维仿射变换原理与算子解析
112 0
|
9月前
ArcGIS:如何进行离散点数据插值分析(IDW)、栅格数据的重分类、栅格计算器的简单使用、缓冲区分析、掩膜?
ArcGIS:如何进行离散点数据插值分析(IDW)、栅格数据的重分类、栅格计算器的简单使用、缓冲区分析、掩膜?
235 0
|
8月前
|
Linux 定位技术 数据处理
GIS开发:QGIS编辑矢量数据
GIS开发:QGIS编辑矢量数据
337 0
|
9月前
|
数据挖掘
ArcGIS:如何进行栅格数据的拼接和裁剪、坡度坡向的提取、地形透视图的建立、等高线的提取、剖面图的创建?
ArcGIS:如何进行栅格数据的拼接和裁剪、坡度坡向的提取、地形透视图的建立、等高线的提取、剖面图的创建?
256 0
|
10月前
|
数据可视化
ComplexHeatmap|根据excel表绘制突变景观图(oncoplot)
ComplexHeatmap|根据excel表绘制突变景观图(oncoplot)
157 0
基于C#的ArcEngine二次开发41:投影坐标系与地理坐标系接口、方法及示例代码(三)
基于C#的ArcEngine二次开发41:投影坐标系与地理坐标系接口、方法及示例代码
基于C#的ArcEngine二次开发41:投影坐标系与地理坐标系接口、方法及示例代码(三)
基于C#的ArcEngine二次开发41:投影坐标系与地理坐标系接口、方法及示例代码(二)
基于C#的ArcEngine二次开发41:投影坐标系与地理坐标系接口、方法及示例代码
基于C#的ArcEngine二次开发41:投影坐标系与地理坐标系接口、方法及示例代码(二)

相关实验场景

更多