能给个GIS中比较典型的关系数据库的例子吗?
老师布置的作业,让我们设计一下GIS中比较典型的关系数据库(只是设计不要实现),下周要交。
我一个都能不出,谈何两个?望高手能给予点拨。
周日必结帖!
问题点数:70、回复次数:7Top
1 楼fengyun925(云飞月 ^_^)回复于 2004-11-04 09:40:15 得分 25
这个没太懂!
GIS中的关系数据库?
能详细的说说吗?
恕小生愚笨Top
2 楼yxz0321(超级傻鸟)回复于 2004-11-04 11:46:38 得分 25
空间数据要不要放到数据库里?
就是设计一个GIS数据库吧
首先要有GIS的业务类型,使电力,水利,地籍,还是导航数据库……
确定了业务类型以后,需要知道业务流程,需要建立哪些库,那些信息需要存储(既然是作业可以稍微简化啦),如何建立索引,以及历史数据库的问题……啊来百来的咚咚,都要有。
业务类型很重要…Top
3 楼GnuDoyng(越王山の涕淌君)回复于 2004-11-04 16:10:39 得分 0
应当是包含空间数据的。
还有吗?来回帖的都有分!Top
4 楼jhqjhq(逗号)回复于 2004-11-04 22:32:58 得分 0
看来老师是要你们理解一下,流行平台是采用什么数据库形式的。
找下资料。找到了再贴上来。Top
5 楼GnuDoyng(越王山の涕淌君)回复于 2004-11-05 10:48:45 得分 0
好我等你!Top
6 楼netdottrue(Acetrue)回复于 2004-11-05 15:07:46 得分 20
数据库设计原则
GIS系统中涉及的数据包括图形矢量数据、空间属性数据和工程管理数据。为了增强整个系统数据处理的灵活性,采用分开存储的方法。图形矢量数据以MapInfo标准文件格式存储在特定目录下,图形中每个地物均有其对应的唯一的标识(ID号),系统以此为索引建立该地物的图形数据文件。空间属性数据与工程管理数据均采用MS SQL Server来存储,各地物属性记录的关键字为图形文件中该地物的ID号,由此便实现了图形文件与属性文件的一一对应关系。
图3.1 图形数据与属性数据的关联关系
关联属性数据的方法
在MapX中,属性数据与几何数据的关联是通过数据绑定实现的。
(1)、 什么叫数据绑定
数据绑定是将外部数据引入MapX的过程。
可以绑定的数据源包括以下类型:
类型 描述
ADO 使用ADO(Active data objects)
DAO DAO对象,可以是VB中的data control、Access表格等,也可自己创建
Delphi 使用Borland BDE数据源
Global Handle lets you pass in a block of tab-delimited data
Layer 创建一个Dataset,使用MapInfo表字段
Notes View/NotesQuery 专门用于Lotus Notes
ODBC 可以使用ODBC从任何ODBC数据源中获取数据
OLE Data 用于containers,如PowerBuilder
RDO MS Remote Data Objects和RDO结果集对象
safeArra COM数据集,与safearray中的数据进行静态绑定
Unbound 兼容其它
(2)、 数据绑定的强大作用
数据绑定主要有两个作用。
Ø 以地图中的图形对象来显示数据
通过数据绑定,可以将BindLayer对象作为一个参数,使用Datasets.Add方法将自己的表转变为一个DataSet。这将在地图中创建一个新的图层,并且将表中的数据以点等图形对象表示。一旦将数据引入地图,就可以很容易地使用MapX创建应用程序,并实现多种地图功能。
Ø 将属性数据绑定到地图中,并创建专题图
如果地图对象中包含相应的属性信息,也可以使用Datasets.Add方法将某个属性字段添加到地图中,进而就可以按照需要创建相关的专题图。
(3)、 数据绑定的实现方法
使用Datasets.Add可以将用户数据绑定到地图中。
在MapX中,每张地图对应多个图层(Layers),每一个图层(Layer)都有一个Datasets,其中包含DataSet对象。Datasets拥有一些属性和方法,用来在集合中添加和删除Dataset 对象,主要方法包括Add和Remove。
使用Datasets.Add绑定的最终结果是Dataset对象的创建。这个Dataset对象被加入到Datasets集合中,包含了被绑定图层的对象的计算结果。比如说,如果数据被绑定到US_States地图,每一个州将对应一个新的数据值,这个数据值被用来控制地图的绘制。如果数据源中含有某个州的多个记录,则这些记录的值可以进行累加、平均值等计算。使用Dataset的Value方法可以取得地图中每一个对象的计算结果。
DataSets.Add方法详解
Datasets.Add方法的使用主要需确定所绑定数据源的类型、绑定到地图的哪一层以及与地图之间关联的字段。语法如下:
Datasets.Add Type, SourceData, [Name], [Geofield], [SecondaryGeofield], [BindLayer], [Fields], [Dynamic]
[]中的参数是可选的,程序中可以省略或传递EmptyParam。EmptyParam在Delphi中已定义的OleVariant类型参数,表示未用参数。
Ø Type
Type的取值范围为DatasetType常量,对应于可绑定的数据类型, DatasetType的定义如下:
DatasetType=[miDatasetADO,miDatasetDelphi,……,miDatasetLayer,miDatasetODBC,miDatasetUnbound]
其中miDatasetLayer表示绑定的是MapInfo表(.TAB),miDatasetODBC表示绑定的是ODBC 数据源中的表。
Ø SourceData
根据DatasetType的不同,SourceData有不同的取值,如miDatasetLayer对应MapInfo表,miDatasetODBC对应ODBCQueryInfo对象等等。因此,在引如ODBC数据时,需要首先创建ODBCQueryInfo对象,并为其参数ConnectString、Datasource和SqlQuery赋值。
Ø Name
String类型,唯一标识Dataset,默认名称为Dataset1、Dataset2……。
Ø Geofield
指定数据源中包含地理信息的字段名称或索引。如果不指定,则MapX会自动在GeoDictionary中搜索,看哪个字段包含地理信息。比如在“世行项目”中,表T_DJQH的xzqybh字段其实就是用来标识地图中地级行政区划的,因此在调用Datasets.Add时Geofield参数即传递xzqybh。
如果要将数据表示为地图上的图形对象,数据源中GeoField所表示的字段必须唯一,并且被用来命名新的图层中的对象。非唯一值将在新的图层中以一点代替,重复记录对应的数据值将被求和。
如果定义了Fields,则Geofield参数将表示Fields中的字段,而不是sourcedata。
可以看到,Geofield在几何数据与属性数据关联中起了绝对关键的作用。
Ø Secondary Geofield
只有当被绑定的数据集有非唯一主键时才定义该参数。
Ø BindLayer
指明外部数据应该绑定到地图中的哪一层。.该参数可选,未指定时MapX自动在GeoDictionary中查找相匹配的图层。但是从性能考虑,在肯定的情况下应当明确指定。
Ø Fields
描述外接数据源中的哪些字段被引用,以及当数据源中有多条记录对应一个地图对象时使用哪些集合函数,默认的集合函数是SUM(求和)。
如果该参数有定义,则Geofield和SecondaryGeofield参数均将其作为参照。
Ø Dynamic
布耳类型参数,用于控制数据绑定是否动态,默认为False,表示静态绑定,即当数据库被打开时MapX将拷贝所需数据;如果设定为True,MapX会以实时的方式访问数据。
Top
7 楼GnuDoyng(越王山の涕淌君)回复于 2004-11-07 09:38:17 得分 0
帮帮忙呀,后天要交了!!!Top




