| |
'*************************************************
'Export or Import XML from SDE or Access Database
'Written by Jan Teisinger (MGP Inc.)
'2008/03/11
'*************************************************
Imports ESRI.ArcGIS.Geodatabase
Imports ESRI.ArcGIS.DataSourcesGDB
Imports ESRI.ArcGIS.GeoDatabaseDistributed
Imports ESRI.ArcGIS.esriSystem
Imports System.Environment
Imports System.IO.Path
Module AOResourceTool
Sub Main()
Dim arguments = System.Environment.GetCommandLineArgs()
Dim a = arguments
If arguments.length > 1 Then
If UCase(arguments(1)) = "EXPORTTOXML" Then
Console.WriteLine("Exporting database to XML...")
ExportWS(arguments(2), arguments(3))
ElseIf UCase(arguments(1)) = "IMPORTFROMXML" Then
Console.WriteLine("Import XML to database...")
ImportWS(arguments(2), arguments(3))
ElseIf UCase(arguments(1)) = "EXPORTTOXMLSDE" Then
Console.WriteLine("Exporting SDE database to XML...")
ExportWSSDE(arguments(2), arguments(3))
ElseIf UCase(arguments(1)) = "IMPORTFROMXMLSDE" Then
Console.WriteLine("Import XML to SDE database...")
ImportWSSDE(arguments(2), arguments(3))
End If
End If
End Sub
Private Sub ExportWS(ByVal db As String, ByVal XmlFile As String)
'EXPORTS DATABASE DATA TO XML FILE (ZIP)
Dim pAO As IAoInitialize
pAO = New AoInitialize 'AOInitialize has methods and properties that will allow you initialize licenses
pAO.Initialize(esriLicenseProductCode.esriLicenseProductCodeArcInfo) 'Initialize your application with ArcInfo license
'create the WS
Dim pWSF As IWorkspaceFactory
pWSF = New AccessWorkspaceFactory
Console.WriteLine(db)
'*** Open PGDB ***
Dim pWS As IWorkspace
pWS = pWSF.OpenFromFile(db, 0)
'*** Create Exporter ***
Dim pExporter As IGdbXmlExport
pExporter = New GdbExporter
'*** Export WS to XML in normalized format and not compressed ***
pExporter.ExportWorkspace(pWS, XmlFile, True, True, True)
End Sub
Private Sub ExportWSSDE(ByVal db As String, ByVal XmlFile As String)
'EXPORTS DATABASE DATA TO XML FILE (ZIP)
Dim pAO As IAoInitialize
pAO = New AoInitialize 'AOInitialize has methods and properties that will allow you initialize licenses
pAO.Initialize(esriLicenseProductCode.esriLicenseProductCodeArcInfo) 'Initialize your application with ArcInfo license
'create the WS
Dim pSdeWorkspaceFactory As IWorkspaceFactory
Dim pSdeWorkspace As IWorkspace
Dim pConnectionProperties As IPropertySet
'Split the connection arguments to list
Dim pConnectionArray As String()
pConnectionArray = db.Split(";")
pConnectionProperties = New PropertySet
With pConnectionProperties
.SetProperty("SERVER", pConnectionArray(0)) 'MyServerName
.SetProperty("INSTANCE", pConnectionArray(1)) '"sde:sqlserver:MyServerName\sqlexpress"
.SetProperty("DATABASE", pConnectionArray(2)) 'DBNAME
.SetProperty("Authentication_mode", "OSA")
.SetProperty("VERSION", pConnectionArray(3)) 'DBO.DEFAULT
End With
'*** Open SDE ***
pSdeWorkspaceFactory = New SdeWorkspaceFactory
pSdeWorkspace = pSdeWorkspaceFactory.Open(pConnectionProperties, 0)
'*** Create Exporter ***
Dim pExporter As IGdbXmlExport
pExporter = New GdbExporter
'*** Export WS to XML in normalized format and not compressed ***
pExporter.ExportWorkspace(pSdeWorkspace, XmlFile, True, True, True)
End Sub
Private Sub ImportWSSDE(ByVal db As String, ByVal XmlFile As String)
'IMPORTS XML (ZIP) DATA TO DATABASE
Dim pAO As IAoInitialize
pAO = New AoInitialize 'AOInitialize has methods and properties that will allow you initialize licenses
pAO.Initialize(esriLicenseProductCode.esriLicenseProductCodeArcInfo) 'Initialize your application with ArcInfo license
Dim pSdeWorkspaceFactory As IWorkspaceFactory
Dim pSdeWorkspace As IWorkspace
Dim pConnectionProperties As IPropertySet
'Split the connection arguments to list
Dim pConnectionArray As String()
pConnectionArray = db.Split(";")
pConnectionProperties = New PropertySet
With pConnectionProperties
.SetProperty("SERVER", pConnectionArray(0)) 'MyServerName
.SetProperty("INSTANCE", pConnectionArray(1)) 'sde:sqlserver:MyServerName\sqlexpress
.SetProperty("DATABASE", pConnectionArray(2)) 'DBNAME
.SetProperty("Authentication_mode", "OSA")
.SetProperty("VERSION", pConnectionArray(3)) 'DBO.DEFAULT
End With
'*** Open SDE ***
pSdeWorkspaceFactory = New SdeWorkspaceFactory
pSdeWorkspace = pSdeWorkspaceFactory.Open(pConnectionProperties, 0)
'*** Create Importer ***
Dim pImporter As IGdbXmlImport
pImporter = New GdbImporter
Dim pEnumName As IEnumNameMapping
'*** Read schema section from the xml file ****
pImporter.GenerateNameMapping(XmlFile, pSdeWorkspace, pEnumName)
'*** Create the schema and load the data ***
pImporter.ImportWorkspace(XmlFile, pEnumName, pSdeWorkspace, False)
End Sub
Private Sub ImportWS(ByVal db As String, ByVal XmlFile As String)
'IMPORTS XML (ZIP) DATA TO DATABASE
Dim pAO As IAoInitialize
pAO = New AoInitialize 'AOInitialize has methods and properties that will allow you initialize licenses
pAO.Initialize(esriLicenseProductCode.esriLicenseProductCodeArcInfo) 'Initialize your application with ArcInfo license
Dim pWSF As IWorkspaceFactory
pWSF = New AccessWorkspaceFactory
'*** Create new GDB ***
Dim pWSN As IWorkspaceName
pWSN = pWSF.Create(System.IO.Path.GetDirectoryName(db), System.IO.Path.GetFileName(db), Nothing, 0)
Dim pName As IName
pName = pWSN
'*** Open PGDB ***
Dim pWS As IWorkspace
pWS = pName.Open
'*** Create Importer ***
Dim pImporter As IGdbXmlImport
pImporter = New GdbImporter
Dim pEnumName As IEnumNameMapping
'*** Read schema section from the xml file ****
pImporter.GenerateNameMapping(XmlFile, pWS, pEnumName)
'*** Create the schema and load the data ***
pImporter.ImportWorkspace(XmlFile, pEnumName, pWS, False)
End Sub
End Module
|