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

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

楼主#
更多 发布于:2008-04-24 14:39
<P>方法1 :</P>
<DIV class=HtmlCode>
<P>Public Function ExportSDEVLayer(ByVal iVLayerName As String, ByVal iExportName As String) As Boolean<BR>        Dim iExportLayerName As String<BR>        Dim iExportLayerPath As String<BR>        Dim iSDEDatasetName As ESRI.ArcGIS.Geodatabase.IDatasetName<BR>        Dim iSDEFeatureDatasetName As ESRI.ArcGIS.Geodatabase.IFeatureClassName<BR>        Dim iSDEWorkspaceName As ESRI.ArcGIS.Geodatabase.IWorkspaceName<BR>        Dim iSHPDatasetName As ESRI.ArcGIS.Geodatabase.IDatasetName<BR>        Dim iSHPFeatureDatasetName As ESRI.ArcGIS.Geodatabase.IFeatureDatasetName<BR>        Dim iSHPWorkspaceName As ESRI.ArcGIS.Geodatabase.IWorkspaceName<BR>        Dim iFeatureDataConverter As ESRI.ArcGIS.Geodatabase.IFeatureDataConverter</P>
<P>        iExportLayerName = GetFileName(iExportName)<BR>        iExportLayerPath = GetFilePath(iExportName)</P>
<P>        iSDEWorkspaceName = New ESRI.ArcGIS.Geodatabase.WorkspaceName<BR>        iSDEWorkspaceName.ConnectionProperties = SDE_PropertySet<BR>        iSDEWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesGDB.SdeWorkspaceFactory.1"<BR>        iSDEFeatureDatasetName = New ESRI.ArcGIS.Geodatabase.FeatureDatasetName<BR>        iSDEDatasetName = iSDEFeatureDatasetName<BR>        iSDEDatasetName.Name = iVLayerName<BR>        iSDEDatasetName.WorkspaceName = iSDEWorkspaceName<BR>        '' +++ create a new File Geodatabase to copy the feature dataset into<BR>        iSHPWorkspaceName = New ESRI.ArcGIS.Geodatabase.WorkspaceName<BR>        iSHPWorkspaceName.PathName = "d:\终极文件夹\"<BR>        iSHPWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory.1"<BR>        iSHPFeatureDatasetName = New ESRI.ArcGIS.Geodatabase.FeatureDatasetName<BR>        iSHPDatasetName = iSHPFeatureDatasetName<BR>        iSHPDatasetName.Name = "aa"<BR>        iSHPDatasetName.WorkspaceName = iSHPWorkspaceName</P>
<P>        ' +++ now do the conversion</P>
<P>        iFeatureDataConverter = New ESRI.ArcGIS.Geodatabase.FeatureDataConverter<BR>        iFeatureDataConverter.ConvertFeatureDataset(iSDEDatasetName, iSHPDatasetName, Nothing, "", 1000, 0)<BR>        MsgBox("ok")</P>
<P>    End Function</P></DIV>iFeatureDataConverter.ConvertFeatureDataset 时候报错
喜欢0 评分0
langyan8973
路人甲
路人甲
  • 注册日期2006-07-12
  • 发帖数90
  • QQ
  • 铜币456枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2008-06-17 15:17
呵呵多半是因为你这里的"d:\终极文件夹\",你把它换成英文的试试。
举报 回复(0) 喜欢(0)     评分
gisempire100
捉鬼专家
捉鬼专家
  • 注册日期2004-08-13
  • 发帖数552
  • QQ
  • 铜币2462枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2008-04-25 20:51
<img src="images/post/smile/dvbbs/em01.gif" />
A friend is never known till a man has need. ...CL
举报 回复(0) 喜欢(0)     评分
snoopyxp
路人甲
路人甲
  • 注册日期2004-08-11
  • 发帖数31
  • QQ
  • 铜币225枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2008-04-24 14:42
<P> 方法2 :</P>
<P>Public Function ExportSDEVLayer1(ByVal iVLayerName As String, ByVal iExportName As String) As Boolean<BR>        Dim iExportLayerName As String<BR>        Dim iExportLayerPath As String<BR>        Dim iSDEName As ESRI.ArcGIS.esriSystem.IName<BR>        Dim iSDEFields As ESRI.ArcGIS.Geodatabase.IFields<BR>        Dim iSDEFeatureClass As ESRI.ArcGIS.Geodatabase.IFeatureClass<BR>        Dim iSDEDatasetName As ESRI.ArcGIS.Geodatabase.IDatasetName<BR>        Dim iSDEFeatureClassName As ESRI.ArcGIS.Geodatabase.IFeatureClassName<BR>        Dim iSDEFeatureDatasetName As ESRI.ArcGIS.Geodatabase.IFeatureClassName<BR>        Dim iSDEWorkspaceName As ESRI.ArcGIS.Geodatabase.IWorkspaceName<BR>        Dim iSHPFields As ESRI.ArcGIS.Geodatabase.IFields<BR>        Dim iSHPDatasetName1 As ESRI.ArcGIS.Geodatabase.IDatasetName<BR>        Dim iSHPDatasetName2 As ESRI.ArcGIS.Geodatabase.IDatasetName<BR>        Dim iSHPFeatureClassName As ESRI.ArcGIS.Geodatabase.IFeatureClassName<BR>        Dim iSHPFeatureDatasetName As ESRI.ArcGIS.Geodatabase.IFeatureDatasetName<BR>        Dim iSHPWorkspaceName As ESRI.ArcGIS.Geodatabase.IWorkspaceName<BR>        Dim iIndex As Integer<BR>        Dim iGeoField As ESRI.ArcGIS.Geodatabase.IField<BR>        Dim iGeometryDef As ESRI.ArcGIS.Geodatabase.IGeometryDef<BR>        Dim iGeometryDefEdit As ESRI.ArcGIS.Geodatabase.IGeometryDefEdit<BR>        Dim iFieldChecker As ESRI.ArcGIS.Geodatabase.IFieldChecker<BR>        Dim iFeatureDataConverter As ESRI.ArcGIS.Geodatabase.IFeatureDataConverter</P>
<P>        iExportLayerName = GetFileName(iExportName)<BR>        iExportLayerPath = GetFilePath(iExportName)</P>
<P>        iSDEWorkspaceName = New ESRI.ArcGIS.Geodatabase.WorkspaceName<BR>        iSDEWorkspaceName.ConnectionProperties = SDE_PropertySet<BR>        iSDEWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesGDB.SdeWorkspaceFactory.1"<BR>        iSDEFeatureClassName = New ESRI.ArcGIS.Geodatabase.FeatureClassName<BR>        iSDEDatasetName = iSDEFeatureClassName<BR>        iSDEDatasetName.Name = iVLayerName<BR>        iSDEDatasetName.WorkspaceName = iSDEWorkspaceName</P>
<P>        iSHPWorkspaceName = New ESRI.ArcGIS.Geodatabase.WorkspaceName<BR>        iSHPWorkspaceName.PathName = "d:\终极文件夹\"<BR>        iSHPWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory.1"<BR>        iSHPFeatureDatasetName = New ESRI.ArcGIS.Geodatabase.FeatureDatasetName<BR>        iSHPDatasetName1 = iSHPFeatureDatasetName<BR>        iSHPDatasetName1.Name = iExportLayerName<BR>        iSHPDatasetName1.WorkspaceName = iSHPWorkspaceName</P>
<P>        iSHPFeatureClassName = New ESRI.ArcGIS.Geodatabase.FeatureClassName<BR>        iSHPDatasetName2 = iSHPFeatureClassName<BR>        iSHPDatasetName2.Name = iSDEDatasetName.Name<BR>        'iSHPDatasetName2.WorkspaceName = iSHPWorkspaceName<BR>        '检测字段<BR>        iSDEName = iSDEFeatureClassName<BR>        iSDEFeatureClass = iSDEName.Open<BR>        iSDEFields = iSDEFeatureClass.Fields<BR>        iFieldChecker = New ESRI.ArcGIS.Geodatabase.FieldChecker<BR>        iFieldChecker.Validate(iSDEFields, Nothing, iSHPFields)<BR>        For iIndex = 0 To iSHPFields.FieldCount<BR>            If iSHPFields.Field(iIndex).Type = ESRI.ArcGIS.Geodatabase.esriFieldType.esriFieldTypeGeometry Then<BR>                iGeoField = iSHPFields.Field(iIndex)<BR>                Exit For<BR>            End If<BR>        Next<BR>        iGeometryDef = iGeoField.GeometryDef<BR>        iGeometryDefEdit = iGeometryDef<BR>        'iGeometryDefEdit.GridCount2 = 1<BR>        'iGeometryDefEdit.GridSize2(0) = 1500000</P>
<P>        Dim iobject As Object<BR>        iFeatureDataConverter = New ESRI.ArcGIS.Geodatabase.FeatureDataConverter<BR>        iobject = iFeatureDataConverter.ConvertFeatureClass(iSDEFeatureClassName, Nothing, iSHPFeatureDatasetName, iSHPFeatureClassName, Nothing, iSHPFields, "", 1000, 0)</P>
<P>        MsgBox("ok")<BR>    End Function</P>
<P>iFeatureDataConverter.ConvertFeatureClass时候报不能创建</P>
<P>帮我修改代码,我不知道用数据类型、转换的方法是不是能解决我的问题</P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部