如何对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

相关文章
|
监控 测试技术 网络架构
网络优化利器:深入理解生成树Portfast
【4月更文挑战第22天】
393 0
|
9月前
|
存储 前端开发 测试技术
【Docker项目实战】使用Docker部署Calcium网页计算器
【10月更文挑战第7天】使用Docker部署Calcium网页计算器
136 1
【Docker项目实战】使用Docker部署Calcium网页计算器
|
11月前
|
Kubernetes 负载均衡 网络协议
在k8S中,Servic类型有哪些?
在k8S中,Servic类型有哪些?
|
11月前
|
Serverless API 异构计算
函数计算产品使用问题之修改SD模版应用的运行环境
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
11月前
|
SQL 关系型数据库 MySQL
mysql密码错误-ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using passwor:yes)
这篇文章提供了解决MySQL数据库"Access denied for user 'root'@'localhost' (using password: YES)"错误的方法,通过跳过密码验证、修改root密码,然后重启服务来解决登录问题。
mysql密码错误-ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using passwor:yes)
|
JavaScript Java 关系型数据库
基于 java + Springboot + vue +mysql 大学生实习管理系统(含源码)
本文档介绍了基于Springboot的实习管理系统的设计与实现。系统采用B/S架构,旨在解决实习管理中的人工管理问题,提高效率。系统特点包括对用户输入的验证和数据安全性保障。功能涵盖首页、个人中心、班级管理、学生管理、教师管理、实习单位管理、实习作业管理、教师评分管理、单位成绩管理和系统管理等。用户分为管理员、教师和学生,各自有不同的操作权限。
|
数据可视化 数据挖掘 BI
深入了解:ERP系统的定制与扩展
深入了解:ERP系统的定制与扩展
234 7
|
NoSQL 关系型数据库 数据库
数据库同步 Elasticsearch 后数据不一致,怎么办?
数据库同步 Elasticsearch 后数据不一致,怎么办?
|
编译器 数据库 索引
数据结构篇:树形数据结构的基本概念及其遍历方法
数据结构篇:树形数据结构的基本概念及其遍历方法
347 0