MapObejcts组件应用设计(地图数据的创建与编辑).doc

上传人:汽*** 文档编号:561694422 上传时间:2024-01-07 格式:DOC 页数:11 大小:134.51KB
返回 下载 相关 举报
MapObejcts组件应用设计(地图数据的创建与编辑).doc_第1页
第1页 / 共11页
MapObejcts组件应用设计(地图数据的创建与编辑).doc_第2页
第2页 / 共11页
MapObejcts组件应用设计(地图数据的创建与编辑).doc_第3页
第3页 / 共11页
MapObejcts组件应用设计(地图数据的创建与编辑).doc_第4页
第4页 / 共11页
MapObejcts组件应用设计(地图数据的创建与编辑).doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《MapObejcts组件应用设计(地图数据的创建与编辑).doc》由会员分享,可在线阅读,更多相关《MapObejcts组件应用设计(地图数据的创建与编辑).doc(11页珍藏版)》请在金锄头文库上搜索。

1、MapObejcts组件应用设计(地图数据的创建与编辑)1. Recordset表的记录指针2. 编辑属性表已有数据3. 添加新记录4. 删除记录5. FeatureID6. 创建数据库表1. 定义并创建一个新表2. 创建子集数据库表7. TrackingLayer图层与GeoEvent对象1. TrackingLayer图层2. GeoEvent对象3. TrackingLayer图层的属性和方法2.6.1 Recordset对象Recordset是MapObjects中的一个对象,它为图层(MapLayer)提供地图数据,又是地图数据的管理者与操作者,因此,地图数据的创建和编辑在Recor

2、dset上进行。每个MapLayer对应一个Recordset,仅对应一个Recordset,是Recordset的可视化。从数据库的观点看,Recordset是一个数据表,概念与数据表一致,图形数据储存在表的一个字段(shape)中。Recordset是记录的集合,提供了对记录及字段的操作方法。ShapeFile是ESRI公司定义的一种无拓扑关系的地理信息文件格式,是MapObjects固有数据格式,在这种格式上实现了读写、修改、编辑功能。ShapeFile用一组文件储存一个图层数据,同一图层各文件的主名相同,用作图层名。扩展名标识文件的内容,分别是:.shp 储存几何要素.shx 储存几何

3、要素索引.dbf 储存几何要素的属性数据,是dBase文件,可用FoxPro软件操作这一组文件映射成一个Recordset表。表中含有.dbf文件的全部字段,还有两个由Recordset对象添加的字段:Shape和FeatureID。两个添加字段的值来自于文件.shp和.shx。例如,china图层的三个组成文件是:china.shp,china.shx,china.dbf。china.dbf的字段名是:name , gdp1990 , gdp1995 ,那么,Recordset形成的表是:ShapeFeatureIDNamegdp1990gdp1995Polygon1新疆121190Poly

4、gon3河北221440Recordset对象封装了表及在表上的操作,在Recordset中,表的一行称为一个记录,表的一列称为一个字段,列的名称称为字段名。在这个例子中,有5个字段,2个记录。第一行是字段名行,不是记录。shape字段的每一个值是一个几何图形元素,用几何对象定义。FeatureID是图形元素的索引号。Shape 、FeatureId是Recordset对象生成的标准字段,对于Coverage、SDE、CAD、VPF等格式数据形成的Recordset表也是如此。1 Recordset表的记录指针Recordset表从概念上看,是记录的集合。记录是集合中的成员,用指针确定在表中的

5、位置。在表中移动指针可以定位记录。例1 Map1中含有china图层,属性如前表所示。编程显示属性表中的数据(完整程序见recordPointer目录)。Private Sub Command1_Click() 记录指针定位Dim recs As MapObjects2.RecordsetSet recs = Map1.Layers(“china”).Recordsrecs.MoveFirst 指针指向记录1Debug.Print recs.Fields(“name”).Value, recs.Fields(“gdp1995”).Value 输出: 新疆190recs.MoveNext 指针指

6、向记录2recs.MoveNext 指针指向记录3Debug.Print recs.Fields(“name”).Value, recs.Fields(“gdp1995”).Value 输出:河北 440End SubRecordset的指针定位方法:recs.MoveFirst 指针指向记录1开始位置recs.MoveNext 指针指向下一条记录开始位置recs.MovePrevious 指针指向前一条记录开始位置recs.EOF 指针指向最后一条记录的末端时返回TRUE,否则返回FALSE2编辑属性表已有数据编辑记录在Recordeset对象上进行,每次编辑一条记录,程序设计顺序依次是:(

7、1) 移动记录指针到要编辑的记录(2) 读取当前记录到缓冲区中(3) 编辑修改当前记录字段的值(4) 更新当前记录(5) 全部记录编辑完后,停止编辑例2 编辑China属性表,将gdp1995字段的值增加1(完整程序见recordPointer目录)。Private Sub Command2_Click() 编辑记录中的属性数据Dim recs As MapObjects2.RecordsetDim fld As MapObjects2.FieldSet recs = Map1.Layers(“china”).RecordsSet fld = recs.Fields.Item(“gdp1995

8、”) 引用记录的字段recs.MoveFirst 定位到记录1If recs.Updatable Then recs是可编辑的吗?Do Until recs.EOF 记录指针指向最后记录的末尾了吗?recs.Edit 读取一条记录到缓冲区中fld.Value = fld.Value + 1 修改缓冲区中记录的的一个字段值recs.Update 更新修改的记录recs.MoveNext 记录指针移到下一条记录Looprecs.StopEditing 停止编辑End IfEnd Sub将上面的recs.Update语句替换成recs.CancelUpdate ,则记录编辑无效。3添加新记录添加新记

9、录在MapLayer.Rcords属性上进行,此属性的数据类型是Recordset,实际是在Recordset对象上进行。使用Recordset.Add方法每次编辑一条记录,程序设计顺序依次是:(1) 移动记录指针到给定的记录。(3) 添加一条新记录,这时记录在内存记录缓冲区中。(2) 为新记录字段赋值。(3) 用Update方法更新数据表,这时缓冲区的数据写入文件缓冲区。(4) 全部添加完后,用StopEding方法停止编辑。这时文件缓冲区的数据写入文件。例3手工将Chian图层的文件复制成EditData图层。设计程序,用鼠标输入一个Polygon,在EditData图层中添加一个新记录,

10、将新记录的shape字段值设置成输入的Polygon,将name字段值设置成”新记录”。完整程序见NewDelRd目录,重要代码如下:Private Sub Command1_Click() 添加新记录Dim recs As MapObjects2.RecordsetDim fld As MapObjects2.FieldSet recs = Map1.Layers.Item(“EditData”).Records 获得记录集的引用Set fld = recs.Fields(“Shape”) 获得图形字段的引用Dim poly As MapObjects2.PolygonSet poly =

11、Map1.TrackPolygon 用鼠标画一个多边形If recs.Updatable Thenrecs.MoveFirstrecs.AddNew 添加一个新记录Set fld.Value = poly 将新记录的图形字段设置为画的多边形recs.Fields.Item(“Name”).Value = “新记录” 设置新记录Name字段的值recs.Update 更新数据表recs.StopEditing 编辑结束Map1.Refresh 地图窗口刷新End IfEnd Sub4删除记录例4删除上例中添加的记录(完整程序在NewDelRd目录中)。Private Sub Command2_C

12、lick() 删除name = “新记录” 的记录Dim recs As MapObjects2.RecordsetSet recs = Map1.Layers.Item(“EditData”).Records 获得记录集的引用If recs.Updatable Thenrecs.MoveFirst 移动记录指针到第一个记录Do Until recs.EOF 遍历记录集If recs.Fields.Item(“Name”).Value = “新记录” Then 判断删除条件recs.Edit 使当前记录可编辑recs.Delete 删除当前记录End Ifrecs.MoveNext 移动记录指

13、针到下一个记录Looprecs.StopEditing 编辑结束Map1.Refresh 地图窗口刷新End IfEnd Sub5 FeatureIDFeatureID是Recordset表的字段名,是shape字段中几何图形元素的编号,编号是从1开始的自然数。在Recordset表中,可以读出FeatureID的值,例如:recs.MoveFirstDebug.Print recs.Fileds.Item(“FeatureID”).Value 输出: 12.6.2创建数据库表1定义并创建一个新表例1在Form_Load中建立了dc与数据库”china2”的连接。创建一个数据库表,命名为MyT

14、able,除了两个标准字段以外,表中还含有三个附加字段,字段定义如下:字段名类型宽度小数位数Name字符型16Area数值型153Perimeter数值型1513在表中添加两个记录,给三个属性字段赋值。用鼠标绘制两个Polygon, 赋给表的Shape字段。最后将MyTable保存在China2数据库中(完整程序见CreatTable目录中工程)。Dim dc As MapObjects2.DataConnectionPrivate Sub Command1_Click() 创建数据库表Dim gds As MapObjects2.GeoDatasetDim desc As New Table

15、Desc 数据库表字段描述Dim lyr As New MapObjects2.MapLayerDim poly As MapObjects2.PolygonWith desc 定义表的三个附加属性域.FieldCount = 3.FieldName(0) = “Name” 分别设置3个域的名称.FieldName(1) = “Area”.FieldName(2) = “Perimeter”.FieldType(0) = moString 域的数据类型.FieldType(1) = moDouble.FieldType(2) = moDouble.FieldLength(0) = 16 字符串的长度.FieldPrecision(1) = 15 数字的位数.FieldPrecision(2) = 15.FieldScale(1) = 3 小数点之后的位数.FieldScale(2) = 3End WithSet gds =

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号