常用数据入sde库的代码
'****************************************************************
'函数功能: 将矢量要素导入到指定数据库的数据集中,可以将shapefile,dxf,coverage格式导入倒GEodatabase中
' 参数表:
' pInDatasetNameCol 一个存储要导入的矢量要素(IFeatureClassName类型)的Collection对象
' pOutNameCol 一个存储导入的矢量要素名称(string类型)的Collection对象
' strGDBPath 包含矢量要素数据集名称的GDB路径,如“D:\world\Map3D.mdb”
'****************************************************************
Public Function convFeatureClass(pInDatasetNameCol As Collection, pOutNameCol As Collection, strGDBPath As String)
'获得导入数据的数目
Dim iInFCNum As Integer
iInFCNum = pInDatasetNameCol.Count
'获得输出的数据库名和数据集名
Dim sOutFDSName As String
Dim sOutGDBName As String
sOutFDSName = GetPathName(strGDBPath, 1)
sOutGDBName = GetPathName(strGDBPath, 0)
'获得输出要素集的IFeatureDatasetName
Dim pWSF As IWorkspaceFactory
Set pWSF = New AccessWorkspaceFactory
Dim pWS As IWorkspace
Set pWS = pWSF.OpenFromFile(sOutGDBName, 0)
Dim pOutFeatureWS As IFeatureWorkspace
Set pOutFeatureWS = pWS
'获得输出要素集的Dataset Name
Dim pOutFDSName As IFeatureDatasetName
Dim pOutFDS As IFeatureDataset
Set pOutFDS = pOutFeatureWS.OpenFeatureDataset(sOutFDSName)
Set pOutFDSName = pOutFDS.FullName
Dim i As Integer
For i = 1 To iInFCNum
Dim pOutPropertySet As IPropertySet
Set pOutPropertySet = New PropertySet
pOutPropertySet.SetProperty "DATASET", sOutGDBName
Dim pOutWorkspaceName As IWorkspaceName
Set pOutWorkspaceName = New WorkspaceName
pOutWorkspaceName.ConnectionProperties = pOutPropertySet
pOutWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesGDB.AccessWorkspaceFactory.1"
'设置输出要素的FeatureClass Name
Dim pOutFCName As IFeatureClassName
Set pOutFCName = New FeatureClassName
Dim pDatasetName As IDatasetName
Set pDatasetName = pOutFCName
Set pDatasetName.WorkspaceName = pOutWorkspaceName
pDatasetName.name = pOutNameCol.Item(i)
'获得输入要素的FeatureClass Name
Dim pInDatasetName As IDatasetName
Set pInDatasetName = pInDatasetNameCol.Item(i)
'判断是否有重名现象
Dim pWS2 As IWorkspace2
Set pWS2 = pWS
'如果名称已存在
If pWS2.NameExists(esriDTFeatureClass, pDatasetName.name) Then
Dim R
R = MsgBox("矢量要素" & pDatasetName.name & "在数据库中已存在!" & Chr(13) & "是否覆盖?", vbExclamation + vbYesNo)
'覆盖原矢量要素
If R = vbYes Then
Dim pFWS As IFeatureWorkspace
Set pFWS = pWS
Dim pDataset As IDataset
Set pDataset = pFWS.OpenFeatureClass(pDatasetName.name)
pDataset.Delete
Set pFWS = Nothing
Set pDataset = Nothing
'不覆盖,则退出for循环,忽略这个要素,转入下一个要素的导入
Else
GoTo NextStep
End If
Set pWS2 = Nothing
End If
'打开Table获得Fields
Dim pname As IName
Dim pInTable As ITable
Set pname = pInDatasetName
Set pInTable = pname.Open
Dim pInFields As IFields
Set pInFields = pInTable.Fields
'检查Field Name
Dim pFieldChecker As IFieldChecker
Set pFieldChecker = New FieldChecker
Dim pOutFields As IFields
pFieldChecker.Validate pInFields, Nothing, pOutFields
'对Fields进行循环查,查找Geometry域
Dim j As Integer
Dim pGeoField As IField
For j = 0 To pOutFields.FieldCount - 1
If pOutFields.Field(j).Type = esriFieldTypeGeometry Then
Set pGeoField = pOutFields.Field(j)
Exit For
End If
Next j
'获得Geometry Field的GeometryDef
Dim pOutFCGeoDef As IGeometryDef
Set pOutFCGeoDef = pGeoField.GeometryDef
'设置GeometryDef的GridCount,GridSize,SpatialReference
Dim pOutFCGeoDefEdit As IGeometryDefEdit
Set pOutFCGeoDefEdit = pOutFCGeoDef
pOutFCGeoDefEdit.GridCount = 1
pOutFCGeoDefEdit.GridSize(0) = DefaultIndexGrid(pInTable)
Dim re
'判断空间参考是否一致,全局变量m_SpatialRef是创建的矢量要素集的空间参考
If m_SpatialRef.name <> pGeoField.GeometryDef.SpatialReference.name Then
re = MsgBox(pInDatasetName.name & "的空间参考与数据库中的矢量要素集空间参考不符!" & Chr(13) _
& "导入后会丢失数据。 是否继续导入?", vbYesNo + vbExclamation)
Set pOutFCGeoDefEdit.SpatialReference = m_SpatialRef
If re = vbNo Then
GoTo NextStep
End If
Else
Set pOutFCGeoDefEdit.SpatialReference = pGeoField.GeometryDef.SpatialReference
End If
'+++++++++++++++++++
'Set pOutFCGeoDefEdit.SpatialReference = pGeoField.GeometryDef.SpatialReference
'进行导入
Dim pConverter As IFeatureDataConverter
Set pConverter = New FeatureDataConverter
pConverter.ConvertFeatureClass pInDatasetNameCol.Item(i), Nothing, pOutFDSName, pOutFCName, pOutFCGeoDef, pOutFields, "", 1000, 0
Set pOutPropertySet = Nothing
Set pOutWorkspaceName = Nothing
Set pOutFCName = Nothing
Set pDatasetName = Nothing
Set pInDatasetName = Nothing
Set pname = Nothing
Set pInTable = Nothing
Set pFieldChecker = Nothing
Set pOutFields = Nothing
Set pGeoField = Nothing
Set pOutFCGeoDef = Nothing
Set pConverter = Nothing
NextStep:
Next i
Set pWSF = Nothing
Set pWS = Nothing
End Function
分享到:
相关推荐
在GIS(地理信息系统)行业中,AE(ArcObjects for .NET)开发是一种常用的技术,用于构建与ESRI ArcGIS平台交互的应用程序。AE是ESRI提供的一个强大的开发工具集,允许开发者利用.NET框架来创建定制的GIS解决方案。...
其中,Erase操作是常用的空间分析方法之一,它用于从一个空间数据集中删除另一个空间数据集中的重叠部分,从而生成新的空间数据集。本篇文章将详细介绍如何基于ArcSDE for Oracle实现Erase空间分析计算的过程。 ###...
在.NET开发环境中,Windows Forms(Winform)是一种常用的桌面应用程序框架,用于构建用户界面。而Esri的SDE(Spatial Database Engine)是ArcGIS的核心组件,用于管理地理空间数据。当我们需要在Winform应用中与...
1. 目录 1 2. 用ArcEngine的工具条添加图层要素 2 3. ArcEngine中对Feature的编辑 ...33. 常用数据入sde库的代码 116 34. ArcEngine开发感想 122 35. Geometry 对象浅析 124 36. AE开发中的一些基本方法(1)数据连接 134
1. 目录 1 2. 用ArcEngine的工具条添加图层要素 2 3. ArcEngine中对Feature的编辑 ...33. 常用数据入sde库的代码 116 34. ArcEngine开发感想 122 35. Geometry 对象浅析 124 36. AE开发中的一些基本方法(1)数据连接 134
- 打开工作空间:`IDataset.Workspace`属性获取数据集的工作空间,`IWorkspaceFactory.OpenFromFile`方法打开文件GDB或SDE工作空间。 - 数据源连接:`IWorkspace.OpenConnection`方法建立与数据库的连接。 10. **...
在编写SDE求解器时,需要注意内存管理(例如,避免内存泄漏),确保数值稳定性和精度,以及适当使用数据结构和算法优化计算效率。 在实际应用中,除了欧拉方法,还有其他更高级的算法,如改进的欧拉方法(Heun's ...
- Euler-Maruyama和Milstein近似:常用的数值解法,用于估算SDE的解。 - 方差减小技术:提高模拟效率,减少计算中的不确定性。 - 基于Monte Carlo模拟的统计:通过大量随机实验来估计SDE模型的统计特性。 - 参数...
【压缩包子文件的文件名称列表】中的 "OvB-SDE-Test-nforne-master" 可能代表这是项目的主分支或主线版本,"master"通常是Git版本控制系统中的默认分支名,表明这是项目的主代码库。 基于以上信息,我们可以讨论...
- 通过属性设置加载数据空间的方法不仅适用于Access数据库,也可以应用于SDE(Spatial Database Engine)数据库,这是一种分布式地理数据库系统。在加载SDE数据库时,需要实例化`SdeWorkspaceFactoryClass`而不是`...
包含用于(漂亮)绘图、谱密度估计、数据导入和其他常用功能的功能。 2- opt_trap 光阱函数(高斯光束中的极化率、质量、偶极力)。 3- paul_trap 保罗陷阱函数(特别是通过拟合 Mathieu 函数的级数截断来获得电荷)...
3. **函数与模板**:函数是代码重用的手段,而模板则允许我们创建泛型代码,适用于不同数据类型。掌握如何定义、调用函数,以及理解和使用函数模板是必备技能。 4. **类与对象**:面向对象编程是C++的一大特色,...
3. **421 CAN 传输错误**:CAN(Controller Area Network)是一种常用的工业通信协议,用于实时数据交换。如果出现传输错误,可能涉及CAN总线的物理损坏、波特率设置不匹配或节点故障。 4. **111 逆变器过电流**:...
10. **DataSourcesGDB 类库**:用于数据库数据源(如 SDE 或 FileGDB)的接口。 11. **DataSourcesOleDB 类库**:处理 OLEDB 数据源,如 Microsoft SQL Server。 12. **DataSourcesRaster 类库**:提供了处理栅格...
#### 三十一、常用数据入sde库的代码 **知识点**: - **数据入库**:解释如何将常用数据(如矢量数据、栅格数据等)导入ArcSDE数据库。 - **实现方法**:使用`ESRI.ArcGIS.DataSourcesGDB.SdeWorkspaceFactoryClass`...
8. **框架与库的使用**:如Spring Boot、MyBatis、Hibernate等Java开发常用框架,以及Apache Commons、Guava等库的熟悉程度,体现了候选人在实际项目中的实战经验。 9. **问题解决能力**:面试通常会通过提问实际...
- 从SDE获取GPS数据并加载到图层上涉及到数据导出、数据转换和ArcGIS图层管理。 11. **存取GPS点和属性值**: - 为了自由存取GPS点或shp文件属性,需要理解ArcGIS的数据结构和API,以实现读写操作。 12. **计算...
18. **软件开发工程师 (SDE)**:SDE 是编写和维护软件代码的专业人员。 19. **代码行 (LOC)**:LOC 是衡量软件规模的一种度量,表示源代码中的指令或语句数量。 20. **软件设计 (SD)**:SD 包括系统的架构设计、...
#### 三十一、常用数据入sde库的代码 在ARCGIS中,将数据导入SDE数据库是一项常见任务。 **实现方法:** 1. **连接数据库:** 使用`SdeWorkspaceFactoryClass`连接SDE数据库。 2. **数据导入:** 通过...
对于自动化任务和批量处理,Python脚本连接ArcSDE是常用方法。使用arcpy模块中的ConnectToServer函数,可以编程方式建立连接。例如: ```python import arcpy conn = arcpy.ArcSDEConnectionManager("DATABASE_TYPE...