默认头像
路人甲
路人甲
  • 注册日期2004-08-11
  • 发帖数31
  • QQ
  • 铜币225枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2456回复:3

AE中怎么样将矢量图层导出成SHP图层?(附代码,帮我修正)

楼主#
更多 发布于:2008-04-24 14:39

方法1 :

Public Function ExportSDEVLayer(ByVal iVLayerName As String, ByVal iExportName As String) As Boolean
       Dim iExportLayerName As String
       Dim iExportLayerPath As String
       Dim iSDEDatasetName As ESRI.ArcGIS.Geodatabase.IDatasetName
       Dim iSDEFeatureDatasetName As ESRI.ArcGIS.Geodatabase.IFeatureClassName
       Dim iSDEWorkspaceName As ESRI.ArcGIS.Geodatabase.IWorkspaceName
       Dim iSHPDatasetName As ESRI.ArcGIS.Geodatabase.IDatasetName
       Dim iSHPFeatureDatasetName As ESRI.ArcGIS.Geodatabase.IFeatureDatasetName
       Dim iSHPWorkspaceName As ESRI.ArcGIS.Geodatabase.IWorkspaceName
       Dim iFeatureDataConverter As ESRI.ArcGIS.Geodatabase.IFeatureDataConverter

       iExportLayerName = GetFileName(iExportName)
       iExportLayerPath = GetFilePath(iExportName)

       iSDEWorkspaceName = New ESRI.ArcGIS.Geodatabase.WorkspaceName
       iSDEWorkspaceName.ConnectionProperties = SDE_PropertySet
       iSDEWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesGDB.SdeWorkspaceFactory.1"
       iSDEFeatureDatasetName = New ESRI.ArcGIS.Geodatabase.FeatureDatasetName
       iSDEDatasetName = iSDEFeatureDatasetName
       iSDEDatasetName.Name = iVLayerName
       iSDEDatasetName.WorkspaceName = iSDEWorkspaceName
       '' +++ create a new File Geodatabase to copy the feature dataset into
       iSHPWorkspaceName = New ESRI.ArcGIS.Geodatabase.WorkspaceName
       iSHPWorkspaceName.PathName = "d:\终极文件夹\"
       iSHPWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory.1"
       iSHPFeatureDatasetName = New ESRI.ArcGIS.Geodatabase.FeatureDatasetName
       iSHPDatasetName = iSHPFeatureDatasetName
       iSHPDatasetName.Name = "aa"
       iSHPDatasetName.WorkspaceName = iSHPWorkspaceName

       ' +++ now do the conversion

       iFeatureDataConverter = New ESRI.ArcGIS.Geodatabase.FeatureDataConverter
       iFeatureDataConverter.ConvertFeatureDataset(iSDEDatasetName, iSHPDatasetName, Nothing, "", 1000, 0)
       MsgBox("ok")

   End Function

iFeatureDataConverter.ConvertFeatureDataset 时候报错
喜欢0 评分0
默认头像
路人甲
路人甲
  • 注册日期2004-08-11
  • 发帖数31
  • QQ
  • 铜币225枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2008-04-24 14:42

方法2 :

Public Function ExportSDEVLayer1(ByVal iVLayerName As String, ByVal iExportName As String) As Boolean
       Dim iExportLayerName As String
       Dim iExportLayerPath As String
       Dim iSDEName As ESRI.ArcGIS.esriSystem.IName
       Dim iSDEFields As ESRI.ArcGIS.Geodatabase.IFields
       Dim iSDEFeatureClass As ESRI.ArcGIS.Geodatabase.IFeatureClass
       Dim iSDEDatasetName As ESRI.ArcGIS.Geodatabase.IDatasetName
       Dim iSDEFeatureClassName As ESRI.ArcGIS.Geodatabase.IFeatureClassName
       Dim iSDEFeatureDatasetName As ESRI.ArcGIS.Geodatabase.IFeatureClassName
       Dim iSDEWorkspaceName As ESRI.ArcGIS.Geodatabase.IWorkspaceName
       Dim iSHPFields As ESRI.ArcGIS.Geodatabase.IFields
       Dim iSHPDatasetName1 As ESRI.ArcGIS.Geodatabase.IDatasetName
       Dim iSHPDatasetName2 As ESRI.ArcGIS.Geodatabase.IDatasetName
       Dim iSHPFeatureClassName As ESRI.ArcGIS.Geodatabase.IFeatureClassName
       Dim iSHPFeatureDatasetName As ESRI.ArcGIS.Geodatabase.IFeatureDatasetName
       Dim iSHPWorkspaceName As ESRI.ArcGIS.Geodatabase.IWorkspaceName
       Dim iIndex As Integer
       Dim iGeoField As ESRI.ArcGIS.Geodatabase.IField
       Dim iGeometryDef As ESRI.ArcGIS.Geodatabase.IGeometryDef
       Dim iGeometryDefEdit As ESRI.ArcGIS.Geodatabase.IGeometryDefEdit
       Dim iFieldChecker As ESRI.ArcGIS.Geodatabase.IFieldChecker
       Dim iFeatureDataConverter As ESRI.ArcGIS.Geodatabase.IFeatureDataConverter

       iExportLayerName = GetFileName(iExportName)
       iExportLayerPath = GetFilePath(iExportName)

       iSDEWorkspaceName = New ESRI.ArcGIS.Geodatabase.WorkspaceName
       iSDEWorkspaceName.ConnectionProperties = SDE_PropertySet
       iSDEWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesGDB.SdeWorkspaceFactory.1"
       iSDEFeatureClassName = New ESRI.ArcGIS.Geodatabase.FeatureClassName
       iSDEDatasetName = iSDEFeatureClassName
       iSDEDatasetName.Name = iVLayerName
       iSDEDatasetName.WorkspaceName = iSDEWorkspaceName

       iSHPWorkspaceName = New ESRI.ArcGIS.Geodatabase.WorkspaceName
       iSHPWorkspaceName.PathName = "d:\终极文件夹\"
       iSHPWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory.1"
       iSHPFeatureDatasetName = New ESRI.ArcGIS.Geodatabase.FeatureDatasetName
       iSHPDatasetName1 = iSHPFeatureDatasetName
       iSHPDatasetName1.Name = iExportLayerName
       iSHPDatasetName1.WorkspaceName = iSHPWorkspaceName

       iSHPFeatureClassName = New ESRI.ArcGIS.Geodatabase.FeatureClassName
       iSHPDatasetName2 = iSHPFeatureClassName
       iSHPDatasetName2.Name = iSDEDatasetName.Name
       'iSHPDatasetName2.WorkspaceName = iSHPWorkspaceName
       '检测字段
       iSDEName = iSDEFeatureClassName
       iSDEFeatureClass = iSDEName.Open
       iSDEFields = iSDEFeatureClass.Fields
       iFieldChecker = New ESRI.ArcGIS.Geodatabase.FieldChecker
       iFieldChecker.Validate(iSDEFields, Nothing, iSHPFields)
       For iIndex = 0 To iSHPFields.FieldCount
           If iSHPFields.Field(iIndex).Type = ESRI.ArcGIS.Geodatabase.esriFieldType.esriFieldTypeGeometry Then
               iGeoField = iSHPFields.Field(iIndex)
               Exit For
           End If
       Next
       iGeometryDef = iGeoField.GeometryDef
       iGeometryDefEdit = iGeometryDef
       'iGeometryDefEdit.GridCount2 = 1
       'iGeometryDefEdit.GridSize2(0) = 1500000

       Dim iobject As Object
       iFeatureDataConverter = New ESRI.ArcGIS.Geodatabase.FeatureDataConverter
       iobject = iFeatureDataConverter.ConvertFeatureClass(iSDEFeatureClassName, Nothing, iSHPFeatureDatasetName, iSHPFeatureClassName, Nothing, iSHPFields, "", 1000, 0)

       MsgBox("ok")
   End Function

iFeatureDataConverter.ConvertFeatureClass时候报不能创建

帮我修改代码,我不知道用数据类型、转换的方法是不是能解决我的问题

举报 回复(0) 喜欢(0)     评分
默认头像
捉鬼专家
捉鬼专家
  • 注册日期2004-08-13
  • 发帖数552
  • QQ
  • 铜币2462枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2008-04-25 20:51
A friend is never known till a man has need. ...CL
举报 回复(0) 喜欢(0)     评分
默认头像
路人甲
路人甲
  • 注册日期2006-07-12
  • 发帖数90
  • QQ
  • 铜币456枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2008-06-17 15:17
呵呵多半是因为你这里的"d:\终极文件夹\",你把它换成英文的试试。
举报 回复(0) 喜欢(0)     评分
默认头像

返回顶部