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/

 

目录
相关文章
ArcGIS:如何进行离散点数据插值分析(IDW)、栅格数据的重分类、栅格计算器的简单使用、缓冲区分析、掩膜?
ArcGIS:如何进行离散点数据插值分析(IDW)、栅格数据的重分类、栅格计算器的简单使用、缓冲区分析、掩膜?
523 0
|
8月前
|
网络安全
ArcMap创建渔网从而获取网格状的矢量分区
本文介绍在ArcMap软件中,通过“Create Fishnet”工具创建渔网,从而获得指定大小的矢量格网数据的方法~
178 1
ArcMap创建渔网从而获取网格状的矢量分区
|
8月前
|
图形学 计算机视觉
GEE错误——如何将原有矢量将维度转化为地理坐标系,重投影坐标坐标无法实现?
GEE错误——如何将原有矢量将维度转化为地理坐标系,重投影坐标坐标无法实现?
89 0
|
8月前
|
定位技术 Python
ArcGIS中ArcMap通过模型构建器ModelBuilder导出地理与投影坐标系转换Python代码的方法
ArcGIS中ArcMap通过模型构建器ModelBuilder导出地理与投影坐标系转换Python代码的方法
136 2
|
定位技术 Python
通过ArcMap的模型构建器生成空间坐标系转换的代码
本文介绍在ArcMap软件中,通过创建模型构建器(ModelBuilder),导出地理坐标系与投影坐标系之间相互转换的Python代码的方法~
113 2
通过ArcMap的模型构建器生成空间坐标系转换的代码
|
SQL Oracle 关系型数据库
矢量数据空间查询
空间查询就是根据地物的空间位置进行查询的一种数据检索方式。比如,我们要查询一条河流经的城市;一个公园内的所有路灯;离当前位置最近的公共卫生间等等都属于常用的空间查询。
178 0
|
Linux 定位技术 数据处理
GIS开发:QGIS编辑矢量数据
GIS开发:QGIS编辑矢量数据
482 0
|
数据挖掘
ArcGIS:如何进行栅格数据的拼接和裁剪、坡度坡向的提取、地形透视图的建立、等高线的提取、剖面图的创建?
ArcGIS:如何进行栅格数据的拼接和裁剪、坡度坡向的提取、地形透视图的建立、等高线的提取、剖面图的创建?
444 0
|
索引
ArcGIS:如何理解成本回溯链接栅格/方向矩阵/backlink raster?
ArcGIS:如何理解成本回溯链接栅格/方向矩阵/backlink raster?
289 0
|
数据可视化
ComplexHeatmap|根据excel表绘制突变景观图(oncoplot)
ComplexHeatmap|根据excel表绘制突变景观图(oncoplot)
313 0