阅读:2454回复:3
AE中怎么样将矢量图层导出成SHP图层?(附代码,帮我修正)
<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 时候报错 |
|
1楼#
发布于: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> |
|
2楼#
发布于:2008-04-25 20:51
<img src="images/post/smile/dvbbs/em01.gif" />
|
|
|
3楼#
发布于:2008-06-17 15:17
呵呵多半是因为你这里的"d:\终极文件夹\",你把它换成英文的试试。
|
|