欢迎您来到GIS动力

加入收藏 免费注册 用户登陆 帮助中心
首页 新闻动态 技术专栏 银杏树下 学习考研 软件下载 求职招聘 许愿瓶 节日祝福 用户中心 精彩推荐 资源搜索 地图
专栏导航: AO开发 | SO开发 | ArcGIS桌面 | 超图桌面 | 开发语言 | 数据库 | WebGIS | 银杏文学 | 研究生考题 | FreeMap 谈天说地
   您现在位于: 首页技术专栏SuperMap应用与开发SO开发 → 正文
导入数据
07-10-25 10:02:46 作者:未知 出处:超图

功能简介:

    SuperMap Objects 的数据格式能和目前世界上大多数通用的GIS、CAD矢量数据及栅格数据进行转换,间接使用其它格式的数据,它还提供了DGN引擎,能直接访问DGN格式的数据。本范例主要介绍如何进行SDB格式的数据与其它数据之间的转入、转出。数据的转入、转出主要是通过一个专门负责数据转换的对象soDataPump,通过它提供的属性和方法的不同组合来进行各种格式的数据转入、转出。

数据来源:由使用者自己打开任何一个数据源,建议打开类型齐全的数据源

    所用SuperMap Objects 组件、对象的主要属性和方法:

控  件 及 对 象 属  性 方  法
SuperWorkspace DataPump  OpenDatasource
SuperMap   AddDataset,RemoveAll
soDataPump FileName,Compressed,DatasetLine,ToleranceGrain

DatasetPoint,DefaultUnits,FileType,ImportAsCADDataset

Export,Import

功能实现:

     转入向导1是进行多种数据转入的起始点,您可以选择转入矢量数据集或栅格数据集,当选中矢量数据集时,会有相应的矢量格式出现在"文件类型"框中,选中栅格也同样有相应的栅格格式出现。总之,下图的选择决定程序下一步的任务,下面分别对几种不同的转入进行说明。

  • 转入除DGN格式以外的外部GIS矢量数据

    下面代码把除DGN以外的其他矢量格式转入为GIS图层。由于不同的GIS软件数据格式和文件的管理方式不一样,且从文件的外部不能确定文件数据集或图层的类型,SuperMap2000提供的数据转入功能准备了四种常用的GIS类型接口,分别存储不同类型的数据集。您也可以只给其中的一个或几个数据集赋名称,只转入指定类型的数据集。

Dim bResult as Boolean

 

DtPump.FileName = frmImportDs1.txtImportFile.Text         '转入的数据文件名
DtPump.ShowProgress = True                               
'显示进程条
DtPump.ImportAsCADDataset = False                        
'转入为GIS数据集
DtPump.Compressed = False                                
'转入时不进行压缩
DtPump.HasStyle = False                                  
'实现无风格转入 
DtPump.DatasetLine = LTrim$(RTrim$(txtGISLine.Text))     
'转入线数据集
DtPump.DatasetPoint = LTrim$(RTrim$(txtGISPoint.Text)    
'转入点数据集 
DtPump.DatasetRegion = LTrim$(RTrim$(txtGISRegion.Text)) 
'转入面数据集
DtPump.DatasetText = LTrim$(RTrim$(txtGISText.Text))     
'转入文本数据集 
DtPump.ToleranceGrain = 0.0002                           
'容限

DtPump.DefaultUnits = scuMeter                            '单位为米  
bResult = Dtpump.Import                                   '数据转入

    下面代码把除DGN以外的其他矢量格式转入为CAD图层.CAD图层可以同时含有不同类型的几何对象,不需要分层,因此只给定一个数据集名称,作为当前数据源中的一个CAD数据集。

DtPump.FileName = frmImportDs1.txtImportFile.Text         '转入的数据文件名
DtPump.ShowProgress = True                               
'显示进程条
DtPump.Compressed = False                                
'转入时不进行压缩
DtPump.HasStyle = False                                  
'实现无风格转入 

DtPump.ImportAsCADDataset = True                          '转入为CAD图层
DtPump.DatasetCAD = LTrim$(RTrim$(txtCADLayer.Text))      'CAD图层名称 
DtPump.ToleranceGrain = 0.0002                            '容限
DtPump.DefaultUnits = scuMeter                            '单位为米  
bResult = Dtpump.Import                                   '转入新的数据集
  • 转入DGN格式的外部GIS矢量数据

    DGN格式的矢量数据由于其数据结构的特殊性,转入的方法与其它矢量数据略有差异 。转入DGN格式数据的流程是接着第二幅转入GIS图层的步骤往下做的。下面的代码是根据第二幅图设定的部分属性:

DtPump.FileName = frmImportDs1.txtImportFile.Text         '转入的数据文件名
DtPump.ShowProgress = True                               
'显示进程条
DtPump.ImportAsCADDataset = False                        
'转入为GIS数据集
DtPump.Compressed = False                                
'转入时不进行压缩
DtPump.HasStyle = False                                  
'实现无风格转入 

DtPump.DatasetCAD = IIf(.optCADLayer = True, .txtCADLayer.Text, "")
DtPump.DatasetLine = IIf(.chkLine.Value = vbChecked, .txtGISLine.Text, "")
DtPump.DatasetPoint = IIf(.chkPoint.Value = vbChecked, .txtGISPoint.Text, "")
DtPump.DatasetRegion = IIf(.chkRegion.Value = vbChecked, .txtGISRegion.Text, "")
DtPump.DatasetText = IIf(.chkText.Value = vbChecked, .txtGISText.Text, "")

设置单位、风格、颜色对照表:

DtPump.DgnUnits = scdUOR          '设定单位对照关系
Form1.SuperWorkspace1.StyleMappingTable = frmImportDs3_Dgn.txtStyleMap.Text    '风格对照表文件
Form1.SuperWorkspace1.DgnColorMappingTable = frmImportDs3_Dgn.txtColorFile.Text '颜色表文件
从DGN文件的64层图层中选择转入的图层索引号:

bResult = DtPump.Import()               '数据转入
  • 转入栅格文件

   栅格文件转入之后保存为数据源的一个栅格数据集,它的坐标与当前数据源的坐标是不一致的,需要经过配准才能与当前的数据源匹配。这种方法是进行栅格文件数字化的准备过程,而且还可以把这个栅格数据集作为三维图形的映射数据集,增加三维的视觉效果。

DtPump.FileName = frmImportDs1.txtImportFile.Text          ' 转入文件名称
DtPump.DatasetImage = txtLayerName.Text                   
' 新的栅格数据集名称
DtPump.ShowProgress =  True                               
' 显示进度条 

DtPump.FileType = scfBMP                                   ' 转入的栅格文件类型

bResult = DtPump.Import()                                  ' 实现栅格数据的转入

  • 转出SuperMap Objects 数据集

    SuperMap的数据转出没有转出矢量和栅格之分,只要设置相应的转出文件类型,对象soDataPump就会自动识别文件的类型,实现数据的转出。

objDtPump.DatasetToBeExported = cmbDataset.Text        ' 用于转出的数据集名称
objDtPump.ShowProgress = True                         
' 显示进度条
objDtPump.FileName = txtExportFileName.Text           
' 用于接受转出的文件名称 

objDtPump.DefaultUnits = scuMeter                      ' 转出单位为米

objDtPump.FileType = scfMIF                            ' 转出的文件的类型

bExportResult = objDtPump.Export()                     ' 实现数据集的转出


(本文已被浏览 次)
发布人:admin
推荐给好友:发送给好友
上篇新闻:
下篇新闻:
相关评论
发表我的评论
  • 尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法;
  • 本站有权保留或删除您发表的任何评论内容;
  •   相关文章  

    关于我们 友情链接 ┋ 与我在线 ┋ 管理 ┋ TOP
    网站当前版本:GisPower CMS V3.0
    『GIS 动力』- http://www.gispower.org/
    联系我们:webmaster#gispower.org
    Copyright (c) 2003-2007 GisPOwer.Org. All Rights Reserved.

                   滇ICP备05006901号