您的位置:首页 > 其它

毕业设计—空间数据仓库—工作日志(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就可以了,这个还没仔细研究,暂时也用不上。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐