shixcn
外卖仔
外卖仔
  • 注册日期2003-11-02
  • 发帖数73
  • QQ
  • 铜币180枚
  • 威望0点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
阅读:3435回复:8

[求助]那位知道在AE中如何识别TIN,Grid等要素集的文件夹类型?

楼主#
更多 发布于:2005-09-09 20:23
<P>那位大侠知道在AE中如何识别TIN,Grid等要素集的文件夹类型?我知道在AO中可以直接通过IGxObjectFilter 来判断,但是在AE中如何判别呢?</P>
喜欢0 评分0
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15947
  • QQ554730525
  • 铜币25339枚
  • 威望15364点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
1楼#
发布于:2005-09-09 23:24
<P>'‖=================================================<BR>'‖功能:打开一个raster图层<BR>'‖参数:RL为文件绝对路径<BR>'‖输出:<BR>'‖=================================================</P>
<P>Public Function AddrasterLayer(RL As String)<BR>            Dim pRasterLayer As IRasterLayer<BR>            Set pRasterLayer = New RasterLayer<BR>            pRasterLayer.CreateFromFilePath RL<BR>            frmMap.map1.AddLayer pRasterLayer<BR>            Set pRasterLayer = Nothing<BR>End Function</P>
举报 回复(0) 喜欢(0)     评分
gsl1982
路人甲
路人甲
  • 注册日期2004-05-08
  • 发帖数135
  • QQ
  • 铜币543枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2005-09-10 09:59
<P>楼主去看这个文件dbUtil.bas这个文件,在帮助力搜索就可以找到</P>
举报 回复(0) 喜欢(0)     评分
gsl1982
路人甲
路人甲
  • 注册日期2004-05-08
  • 发帖数135
  • QQ
  • 铜币543枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2005-09-10 10:00
<P>Public Function LocationSupportsRasters(sContainer As String) As Boolean<BR>    On Error GoTo EH<BR>    Dim pWsFact As IWorkspaceFactory<BR>    Dim pRasWS As IRasterWorkspace<BR>    <BR>    If (sContainer <> "") Then<BR>        Set pWsFact = New RasterWorkspaceFactory<BR>        Set pRasWS = pWsFact.OpenFromFile(sContainer, 0)<BR>        LocationSupportsRasters = (Not pRasWS Is Nothing)<BR>    Else<BR>        LocationSupportsRasters = False<BR>    End If<BR>    <BR>    ' this is faster:<BR>    'LocationSupportsRasters = ((Not IsCoverage(sContainer)) And (Not LocationSupportsAccess(sContainer)) And (Not LocationSupportsSDE(sContainer)))<BR>    <BR>    Exit Function<BR>EH:<BR>    LocationSupportsRasters = False<BR>End Function</P>
<P>Public Function LocationSupportsTins(sContainer As String) As Boolean<BR>    On Error GoTo EH<BR>    Dim pWsFact As IWorkspaceFactory<BR>    Dim pTinWS As ITinWorkspace<BR>    <BR>    If (sContainer <> "") Then<BR>        Set pWsFact = New TinWorkspaceFactory<BR>        Set pTinWS = pWsFact.OpenFromFile(sContainer, 0)<BR>        LocationSupportsTins = (Not pTinWS Is Nothing)<BR>    Else<BR>        LocationSupportsTins = False<BR>    End If<BR>    <BR>    'LocationSupportsTins = LocationSupportsShapefiles(sContainer) ' TODO - use this instead because of CQ00118798<BR>    <BR>    ' this is faster<BR>    '  LocationSupportsTins = ((Not IsCoverage(sContainer)) And (Not LocationSupportsAccess(sContainer)) And (Not LocationSupportsSDE(sContainer)))<BR>    <BR>    Exit Function<BR>EH:<BR>    LocationSupportsTins = False<BR>End Function</P>
<P>' Returns true if container specifies either SDE workspace or dataset<BR>Public Function LocationSupportsSDE(sContainer As String) As Boolean<BR>  On Error GoTo EH</P>
<P>  LocationSupportsSDE = (InStr(sContainer, "Database") = 1) ' as long as it has reference to database connection<BR>  <BR>  Exit Function<BR>EH:<BR>  LocationSupportsSDE = False<BR>End Function</P>
<P>Public Function LocationSupportsShapefiles(sContainer As String) As Boolean<BR>    On Error GoTo EH<BR>    Dim pWsFact As IWorkspaceFactory<BR>    Dim pFeatWS As IFeatureWorkspace<BR>    <BR>    If (sContainer <> "") Then<BR>        Set pWsFact = New ShapefileWorkspaceFactory<BR>        Set pFeatWS = pWsFact.OpenFromFile(sContainer, 0)<BR>        LocationSupportsShapefiles = (Not pFeatWS Is Nothing)<BR>    Else<BR>        LocationSupportsShapefiles = False<BR>    End If<BR>    <BR>    ' this is faster<BR>    'LocationSupportsShapefiles = (Not IsCoverage(sContainer)) And (Not (LocationSupportsAccess(sContainer)) And (Not LocationSupportsSDE(sContainer)))<BR>    <BR>    Exit Function<BR>EH:<BR>    LocationSupportsShapefiles = False<BR>End Function</P>
<P><BR>Public Function IsCoverage(sContainer) As Boolean<BR>  On Error GoTo EH<BR>  Dim fs As FileSystemObject<BR>  Set fs = New FileSystemObject<BR>  Dim sDir As String<BR>  sDir = fs.GetParentFolderName(sContainer)<BR>  Dim sName As String<BR>  sName = fs.GetFileName(sContainer)<BR>  Dim pWSF As IWorkspaceFactory<BR>  Set pWSF = New ArcInfoWorkspaceFactory<BR>  Dim pWs As IFeatureWorkspace<BR>  Set pWs = pWSF.OpenFromFile(sDir, 0)<BR>  Dim pDS As IFeatureDataset<BR>  Set pDS = pWs.OpenFeatureDataset(sName)<BR>  IsCoverage = (Not pDS Is Nothing)<BR>  Exit Function<BR>EH:<BR>  Resume Next<BR>End Function</P>
举报 回复(0) 喜欢(0)     评分
gsl1982
路人甲
路人甲
  • 注册日期2004-05-08
  • 发帖数135
  • QQ
  • 铜币543枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2005-09-10 10:01
Grid是属于Rasters的
举报 回复(0) 喜欢(0)     评分
shixcn
外卖仔
外卖仔
  • 注册日期2003-11-02
  • 发帖数73
  • QQ
  • 铜币180枚
  • 威望0点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
5楼#
发布于:2005-09-10 18:04
<P>先谢谢了各位了 我试一下!</P><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em04.gif" />
举报 回复(0) 喜欢(0)     评分
shixcn
外卖仔
外卖仔
  • 注册日期2003-11-02
  • 发帖数73
  • QQ
  • 铜币180枚
  • 威望0点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
6楼#
发布于:2005-09-11 09:04
<P>  呵呵 首先感谢各位的参与,可能是我帖子的主题有点不对,以至于各位没有明白我的意思!</P>
<P> gsl1982,你的方法是用于区别普通文件夹和各个要素文件夹,适合于在添加数据对文件夹实行判断,但是 对于在一定环境下添加Tin Grid 等Raster 数据就无能为力了,GIS的方法 对于添加单个的影像或图片是适用的 ,但是对于添加含有多个文件的要素文件夹,诸如TIN grid就不行了!呵呵 当然这仅仅是我个人的一点浅陋的看法,如果有什么问题,欢迎大家批评指正,共同交流 顺便可以向大家学习学习!</P>
<P>    我认为 添加这样数据的根本途径是如何将一个要素文件夹看作一个文件 ,操作这个文件夹像操作文件一样,我尝试过用文件夹中单个文件(扩展名为ADF),但是 在m_Prws = m_Prwsf.OpenFromFile(m_pdir, 0)没有报错,但是提示自动化错误!</P>
<P>    如果那位还有什么好的建议和意见,或者已经实现了的话,可否给点帮助,欢迎大家交流,再次表示感谢! <br>Private Sub Command2_Click()<br>Dim m_pdir As String<br>Dim m_Pname As String<br>m_pdir = "e:\data\tin"<br>'"e:\data\tin"是一个tin要素文件夹<br>m_Pname = "tin"<br>Dim m_Prwsf As IWorkspaceFactory<br>m_Prwsf = New tinWorkspaceFactory<br>Dim m_Prws As IRasterWorkspace<br>m_Prws = m_Prwsf.OpenFromFile(m_pdir, 0)<br>Dim m_Prds As IRasterDataset<br>m_Prds = New RasterDataset<br>m_Prds = m_Prws.OpenRasterDataset(m_Pname)<br>Dim pTinLayer As ITinLayer<br>Set pTinLayer = New TinLayer<br>Set pTinLayer.Dataset = pGxObject.Dataset<br>MapControl.AddLayer pFLayer<br>End Sub<br></P>
[此贴子已经被作者于2005-9-11 9:46:04编辑过]
举报 回复(0) 喜欢(0)     评分
dan800913
路人甲
路人甲
  • 注册日期2005-01-10
  • 发帖数102
  • QQ
  • 铜币617枚
  • 威望0点
  • 贡献值0点
  • 银元0个
7楼#
发布于:2005-09-13 16:35
<P>Dim m_Prws As IRasterWorkspace</P>
<P>tin可以看作是栅格数据吗?</P>
举报 回复(0) 喜欢(0)     评分
jackyped
路人甲
路人甲
  • 注册日期2005-09-08
  • 发帖数6
  • QQ
  • 铜币128枚
  • 威望0点
  • 贡献值0点
  • 银元0个
8楼#
发布于:2006-09-12 10:55
<P>                Dim pWSF As IWorkspaceFactory = New TinWorkspaceFactoryClass<BR>                Dim pWS As IWorkspace = pWSF.OpenFromFile(sPath, 0)<BR>                If Not pWS Is Nothing Then<BR>                    Dim names As IEnumDatasetName = pWS.DatasetNames(esriDatasetType.esriDTTin)<BR>                    Names.Reset()<BR>                    Dim name As IDatasetName<BR>                    name = names.Next<BR>                    While Not name Is Nothing </P>
<P>                                ITin tin = pWS .OpenTin(name.Name);<BR>                                //Layer<BR>                                ILayer lyr= new TinLayerClass();<BR>                                ILayer lyr3D = new TinLayerClass();<BR>                                ((ITinLayer)lyr).Dataset = tin;<BR>                                ((ITinLayer)lyr3D).Dataset = tin;<BR>this.axmapcontrol1.addlayer(lyr,0)</P>


<P>过程就是这样了,代码你得改改</P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部