毕业设计—空间数据仓库—工作日志(1)
2008-03-30 16:21
375 查看
最近因为做毕业论文,选了空间数据仓库方向 。刚开始对普通的商业数据仓库进行了了解,知道了OWB、Analysis Services、Congos、MicroStrategy。因为要做跟空间数据相关的,所以考虑选择Oracle或者SQL Server作为数据源。我的机器是512内存,cup才1.8,所以用了一段时间Oracle之后实在不能承受它那超级慢的速度,换成了SQL Server 2005。对于空间数据(主要是北京市社区专题图)和各类Excell报表,都通过ArcCatolog导入ArcSDE(开始是Oracle,后来是SQL Server,结果最后死活连不上SDE了)。
按照一般的建立数据仓库的步骤,首先是选择主题,我用的是人口住宅数据,选择从市—街道—社区的粒度范围选择专题图,数据有两种—房屋住宅数据和人口居住信息,再有就是它们之间的联系(人口对应房屋的分户数据,也是专题图表示)。接下来是ETL,按照普通数据仓库的做法,要建立维表和事实表,并且一般采用星型模型。因为是针对人口,所以建立四个维度—年龄、性别、居住类型(楼房还是平房)和居住区域(这是唯一的空间维,处理的主要工作也在这里),采用房屋的居住面积和房屋的居住人数作为度量,另外,对于空间图形(房屋分间和分户数据),可以作为空间度量。我感觉空间度量的泛化,即作为非空间度量处理是完全可以的,前面不是已经作为居住面积了吗?主要的问题在OLAP操作,就是在执行上钻、下钻、旋转、切片时多边形的聚合,并做到前端展示,其实就是查询到某个图层的符合条件的相关Feature,将它们放到一个容器里面,比如一个临时的FeatureClass,显示出来(当然,这部分还没做,不过我估计是没问题的)。扯远了,对于ETL,我主要是用ArcEngine连接到SDE(当然,自从无法连接到SDE之后,我建立了本地File Geodatabase存储所有的空间非空间数据,程序也直接连到这里了),在FeatureWorkSpace工作空间里选择上述我需要的专题图层,读出它们的属性,放入ADO.NET的非连接数据源DataSet。在这里,我的麻烦就是对于简单的Feature对象,要判断它们的每个属性了类型,有很多ESRI的自定义类型,需要转换为.NET类型,只能是Switch十几类,挨个设定。还要剔除其中的Geometry之类的空间类型,因为DataSet恐怕是装不了这些的。
然后利用ADO.NET提供的数据适配器Adapter(可以在VS 2005中直接建立数据源,连接到SQL Server,然后选择某个已经建立好的事实表或维表,拖入界面上的DataGridView就OK了),进行详细的数据写入,属性自然一定要对应。这样,ETL就完成了。如果想提供简单的查询功能,自然是没问题的,用IQueryFilter,或者空间的ISpatialQueryFilter就可以了,这个还没仔细研究,暂时也用不上。
按照一般的建立数据仓库的步骤,首先是选择主题,我用的是人口住宅数据,选择从市—街道—社区的粒度范围选择专题图,数据有两种—房屋住宅数据和人口居住信息,再有就是它们之间的联系(人口对应房屋的分户数据,也是专题图表示)。接下来是ETL,按照普通数据仓库的做法,要建立维表和事实表,并且一般采用星型模型。因为是针对人口,所以建立四个维度—年龄、性别、居住类型(楼房还是平房)和居住区域(这是唯一的空间维,处理的主要工作也在这里),采用房屋的居住面积和房屋的居住人数作为度量,另外,对于空间图形(房屋分间和分户数据),可以作为空间度量。我感觉空间度量的泛化,即作为非空间度量处理是完全可以的,前面不是已经作为居住面积了吗?主要的问题在OLAP操作,就是在执行上钻、下钻、旋转、切片时多边形的聚合,并做到前端展示,其实就是查询到某个图层的符合条件的相关Feature,将它们放到一个容器里面,比如一个临时的FeatureClass,显示出来(当然,这部分还没做,不过我估计是没问题的)。扯远了,对于ETL,我主要是用ArcEngine连接到SDE(当然,自从无法连接到SDE之后,我建立了本地File Geodatabase存储所有的空间非空间数据,程序也直接连到这里了),在FeatureWorkSpace工作空间里选择上述我需要的专题图层,读出它们的属性,放入ADO.NET的非连接数据源DataSet。在这里,我的麻烦就是对于简单的Feature对象,要判断它们的每个属性了类型,有很多ESRI的自定义类型,需要转换为.NET类型,只能是Switch十几类,挨个设定。还要剔除其中的Geometry之类的空间类型,因为DataSet恐怕是装不了这些的。
然后利用ADO.NET提供的数据适配器Adapter(可以在VS 2005中直接建立数据源,连接到SQL Server,然后选择某个已经建立好的事实表或维表,拖入界面上的DataGridView就OK了),进行详细的数据写入,属性自然一定要对应。这样,ETL就完成了。如果想提供简单的查询功能,自然是没问题的,用IQueryFilter,或者空间的ISpatialQueryFilter就可以了,这个还没仔细研究,暂时也用不上。
相关文章推荐
- 使用git工具,在本地建立一个数据仓库,保存日常工作日志
- 相同更改数据量的前提下,单次COMMIT和多次COMMIT对日志空间浪费的影响对比
- Hadoop HDFS源码分析 读取命名空间镜像和编辑日志数据
- 网站添加数据出错,原来是MS SQL Server2008日志文件占据空间过大导致的
- oracle传输表空间在数据仓库ETL中的应用
- 基于ArcGIS10.0和Oracle10g的空间数据管理平台十二(C#开发)-日志管理
- 开始数据仓库的工作
- 空间数据、空间数据质量控制、空间数据索引、空间数据仓库
- 数据空间和日志空间分离的操作方法
- 数据仓库工作总结
- 工作日志-授权,同义词,存储过程生成时间维表数据
- MS Sql Server查询磁盘的可用空间,数据库数据文件及日志文件的大小及利用率
- 工作日志4.3——处理实验数据
- 实现基本工作空间和函数之间数据的相互调用
- Oracle - Oracle系统紧急故障处理(数据文件、日志文件以及表空间损坏的处理)
- ORACLE查看数据文件-控制文件-日志文件-表空间信息
- 基于ArcGIS10.0和Oracle10g的空间数据管理平台七(C#开发)-日志操作类
- 用备份控制文件做不完全恢复下的完全恢复(数据文件备份<旧>--新建表空间--控制文件备份<次新>--日志归档文件<新>)
- 10分布式数据仓库 HIVE -- HIVE案例实战1 apache common日志分析
- getSQLinfo.vbs 获得SQL数据/日志空间使用情况的脚本