如何对ArcSDE空间网格大小进行优化?

简介: 摘要:ArcSDE的空间查询采用网格索引机制,因此索引网格单元大小的设置直接影响数据的响应和系统的性能。一般导入图层到SDE数据库时,其都会默认地自动建立好网格索引,该索引已基于图层的空间参考、图形的类型等相关信息,并进行了优化。

摘要:ArcSDE的空间查询采用网格索引机制,因此索引网格单元大小的设置直接影响数据的响应和系统的性能。一般导入图层到SDE数据库时,其都会默认地自动建立好网格索引,该索引已基于图层的空间参考、图形的类型等相关信息,并进行了优化。

 一、SDE空间索引简介

ArcSDE的空间查询采用网格索引机制,因此索引网格单元大小的设置直接影响数据的响应和系统的性能。一般导入图层到SDE数据库时,其都会默认地自动建立好网格索引,该索引已基于图层的空间参考、图形的类型等相关信息,并进行了优化。

ArcSDE最多提供三级索引,对于一般的数据我们只需建立一级网格索引即可,比如点状数据、或者是数据量不大而且单个图形所占用的最大范围与最小范围相差比例不是很大的情况。在SDE空间数据库中,第二级、第三级空间网格大小的值一般都是0,我们可以通过更改第二级、第三级网格大小的值来达到建立二、三级索引的目的。原则是后一级别空间网格的大小应是前一级网格大小的三倍以上,只有这样建立的索引才会有意义。

二、空间网格大小设置分析

我们知道图层数据在SDE数据库中是分别存储在B表、F表,相应的图层空间网格索引则存储在S表,里面以Feature ID序列存储着构成这个空间对象的切割部分。如果一个几何对象被空间网格分割成三部分,则在S表中将会存在三条Feature ID号相同的记录。

现在问题的关键在于到底应该用多大的线性比例来切割存储几何图形才能达到即节省存储空间,又以较快的速度显示出来呢?下面分两种情进行分析:

如果线性比例过大,如以10000作为线性比例切割几何对象,那么会存在这样的问题:10000*10000网格中会存储着多个记录,如果放大显示时,一些不在当前显示窗口的几何对象也会被读取出来,势必减慢显示速度。

如果线性比例过小,如以1作为线性比例切割几何对象,那么会存在这样的问题:一个较大的几何对象被分割成了多个部分存储在S表中,增大了存储空间,缩小操作显示一条记录时,则必须先进行多部分读取,然后进行拼接显示。另外对于大范围的记录,会导致 Feature Class is read-only mode,图层不再可读。

因此,对于线性比例的设置,无论过大或者过小都会影响存储和性能。在此顺便也解答一同事向我提出的小比例尺与大比例尺为什么要分层存储的问题:如果几何对象大小不一,相差比例很大,计算出来的线性比例总是不能令人满意,因此也就达不到性能上优化的目的。

三、如何设置空间网格大小
A、设置空间网格大小的几个原则:
1. 点层只需建立单级索引,而且Grid Cell Size 可以选择得大一些,因为点层处理效率是最高的;

2. 监视spatial index,如果数据变化频繁,则需要经常根据数据的变化情况重新评估索引的优劣;

3. 根据实际应用,将Grid Index 中Cell Size 调整为应用程序经常使用的窗口显示大小;

4. 对于未知应用,可以将Grid Index 中Cell Size 设置为图形平均覆盖范围的三倍大小;

B、获取图形信息的几种方法:
1、图形平均覆盖范围的计算方法:

select (avg(emaxx - eminx) + avg(emaxy - eminy)) / 2 from f<N> ;

例:select (avg(emaxx - eminx) + avg(emaxy - eminy)) / 2 from sde.f200;

2、图层各种统计信息查询方法:

sdelayer -o stats -l layer_name,spatial_column_name –u sde_user_name -p sde_user_password –I      service_name;

这些信息是确定Grid Index 中Cell Size 大小的重要依据。

3、图形统计信息查询方法:

sdelayer -o si_stats -l layer_name,spatial_column_name –u sde_user_name -p sde_user_password –I      service_name;

C、Grid Index 调整方法(注册版本后不可调整):

1.     通过Catalog 实现:

选中图层的Spatial 字段(默认情况下是shape 字段),修改起Grid Index 参数;
2. 通过SDE 命令行实现:

Sdelayer     –o alter –l layer_name,spatial_column_name –g grid_size0,grid_size1,grid_size2 –u      sde_user_name -p sde_user_password –I service_name;

试验中,发现对于一般的图层,在导入数据时,默认建立的Cell Size 已经比较优化。

四、总结
本文在分析空间网格大小设置对性能影响的基础上,简述了怎样优化SDE空间网格索引。对于提高系统的性能,优化网格索引只是其中的一个因素,如想知道更多关于空间信息访问优化的问题,可以参考:《基于Oracle与ArcSDE的空间信息访问优化》。

http://www.gissky.net/Article/1408.htm

相关文章
|
1月前
|
存储 自然语言处理 数据可视化
可视化FAISS矢量空间并调整RAG参数提高结果精度
随着开源大型语言模型的性能不断提高,编写和分析代码、推荐、文本摘要和问答(QA)对的性能都有了很大的提高。但是当涉及到QA时,LLM通常会在未训练数据的相关的问题上有所欠缺,很多内部文件都保存在公司内部,以确保合规性、商业秘密或隐私。当查询这些文件时,会使得LLM产生幻觉,产生不相关、捏造或不一致的内容。
49 0
|
6月前
|
传感器 数据采集 数据可视化
物理空间的三维重建
物理空间的三维重建
ArcMap矢量图层的零碎、空洞区域填补与独立区域剔除:消除面部件
本文介绍在ArcMap软件中,基于消除面部件(“Eliminate Polygon Part”)工具,对矢量面要素的零碎、空洞区域加以删除,同时将游离于要素主体之外的部分剔除的方法~
112262 1
ArcMap矢量图层的零碎、空洞区域填补与独立区域剔除:消除面部件
|
5天前
|
存储 Oracle 数据管理
Oracle 12c的自动数据优化(ADO)与热图:数据管理的“瘦身”与“透视”艺术
【4月更文挑战第19天】Oracle 12c的ADO和热图技术革新数据管理。ADO智能清理无用数据,优化存储,提升查询速度,实现数据&quot;瘦身&quot;;热图则以直观的视觉表示展示数据分布和状态,助力识别性能瓶颈,犹如数据的&quot;透视&quot;工具。这两项技术结合,强化数据管理,为企业业务发展保驾护航。
|
4月前
|
传感器 数据采集 编解码
基于EinScan-S的编码结构光方法空间三维模型重建
基于EinScan-S的编码结构光方法空间三维模型重建
|
4月前
ArcGIS矢量面要素中零碎小面积空洞区域补全与单独部分区域分离并剔除
ArcGIS矢量面要素中零碎小面积空洞区域补全与单独部分区域分离并剔除
|
7月前
|
定位技术 Python
通过ArcMap的模型构建器生成空间坐标系转换的代码
本文介绍在ArcMap软件中,通过创建模型构建器(ModelBuilder),导出地理坐标系与投影坐标系之间相互转换的Python代码的方法~
通过ArcMap的模型构建器生成空间坐标系转换的代码
|
9月前
动态优化解决方案空间中的最小支持(Matlab代码实现)
动态优化解决方案空间中的最小支持(Matlab代码实现)
|
9月前
|
存储 数据可视化 关系型数据库
Revit 2021安装后分析选项卡中没有“空间及分区”
Revit 2021安装后分析选项卡中没有“空间及分区”
Revit 2021安装后分析选项卡中没有“空间及分区”