wzhipeng0117
路人甲
路人甲
  • 注册日期2005-05-05
  • 发帖数53
  • QQ
  • 铜币317枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1926回复:3

[讨论]AO中加载DEM数据的方法?

楼主#
更多 发布于:2005-07-26 17:38
我想通过IGxDialog打开DEM数据,但是找不到Layer和GxObject之间的连接点(类似加FeatureClass文件时FeatureLayer的FeatureClass和DataSet的关系,不知道我的表述是否正确),有过这方面经验的先人给点建议吧!
喜欢0 评分0
wavvylia
路人甲
路人甲
  • 注册日期2003-07-28
  • 发帖数384
  • QQ
  • 铜币555枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2005-07-27 10:07
<P>DEM和栅格数据是一样的。</P>
<P>Public Sub AddCustomLayers(pMapCtrl As IMap)</P>
<P>   Dim pActiveView As esriCarto.IActiveView        '地图控件的当前地图窗口<BR>   Dim pDlg As esriCatalogUI.IGxDialog                 '打开图层对话框<BR>   Dim pObjectFilter As esriCatalog.IGxObjectFilter  '打开图层对话框的过滤条件<BR>   Dim pGXSelect As esriCatalog.IEnumGxObject        '在图层对话框中选择的图层</P>
<P>   Dim pFeatureLayer  As IFeatureLayer<BR>   Dim pGxObject As esriCatalog.IGxObject            '选择图层中当前图层的下一层<BR>   <BR>   Dim pGXDataset As esriCatalog.IGxDataset          '选择图层的数据集<BR>   Dim pFeatLyr As esriCarto.IFeatureLayer         '选择的图层<BR>   Dim pAv As IActiveView<BR> <BR>   Dim i As Long<BR>   Set pAv = pMapCtrl<BR>   Set pActiveView = pMapCtrl<BR>   Set pDlg = New GxDialog<BR>   pDlg.ButtonCaption = "添加"<BR>   <BR>   Set pObjectFilter = New GxFilterDatasets 'GxFilterRasterDatasets    <BR>   pDlg.AllowMultiSelect = True<BR>   pDlg.title = "选择数据"<BR>   Set pDlg.ObjectFilter = pObjectFilter<BR>   If (pDlg.DoModalOpen(pActiveView.ScreenDisplay.hWnd, pGXSelect) = False) Then Exit Sub<BR>   <BR>   pGXSelect.Reset<BR>   Set pGxObject = pGXSelect.Next</P>
<P>   Do While (Not pGxObject Is Nothing)<BR>      Set pGXDataset = pGxObject</P>
<P>      If (TypeOf pGxObject Is IGxDataset) Then</P>
<P>         Set pGXDataset = pGxObject</P>
<P>         If pGXDataset.Type = esriDTFeatureClass Then<BR>            Set pFeatLyr = New FeatureLayer<BR>            Set pFeatLyr.FeatureClass = pGXDataset.Dataset<BR>            pFeatLyr.name = pGXDataset.Dataset.name<BR>            pMapCtrl.AddLayer pFeatLyr<BR>         ElseIf pGXDataset.Type = esriDTRasterDataset Then '如果是栅格,包括DEM<BR>            Dim pRL As IRasterLayer<BR>            Set pRL = New RasterLayer<BR>            pRL.CreateFromFilePath pDlg.FinalLocation.FullName ; "\" ; pGXDataset.Dataset.name<BR>            pMapCtrl.AddLayer pRL<BR>            <BR>         End If<BR>      End If</P>
<P>      Set pGxObject = pGXSelect.Next<BR>   Loop</P>
<P>   pAv.refresh<BR>End Sub<BR></P>
举报 回复(0) 喜欢(0)     评分
wzhipeng0117
路人甲
路人甲
  • 注册日期2005-05-05
  • 发帖数53
  • QQ
  • 铜币317枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2005-07-27 11:24
<P>感谢楼上的答复,我原来一直思考用CreateFromDataset方法</P>
<P>结果老是类型不匹配</P>
<img src="images/post/smile/dvbbs/em04.gif" />
举报 回复(0) 喜欢(0)     评分
wavvylia
路人甲
路人甲
  • 注册日期2003-07-28
  • 发帖数384
  • QQ
  • 铜币555枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2005-07-30 00:22
如果是从SDE中读得的栅格数据,这时应该用CreateFromDataset的方法。
举报 回复(0) 喜欢(0)     评分
游客

返回顶部