Public Sub ConvertShapefileToFCSDE()
ESRI.ArcGIS.RuntimeManager.BindLicense(ESRI.ArcGIS.ProductCode.Engine)
Dim aoInitialize As IAoInitialize
aoInitialize = New AoInitialize
aoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeEngine)
' Open the source and target workspaces.
Dim sourceWorkspacePath As String = "C:\projek peta melaka"
Dim pProp As IPropertySet = New PropertySet
Dim wFac As New SdeWorkspaceFactory
Dim targetWorkspace As IWorkspace
Dim targetWsPath As String = "Provider=SQLNCLI10;" + _
"Data Source=" + My.Settings.Server + ";" + _
"Initial Catalog=" + My.Settings.Database + ";" + _
"User ID=" + My.Settings.User + ";" + _
"Password=" + My.Settings.Password + ";"
pProp.SetProperty("Server", My.Settings.Server)
pProp.SetProperty("Instance", My.Settings.Instance)
pProp.SetProperty("Database", My.Settings.Database)
pProp.SetProperty("User", My.Settings.User)
pProp.SetProperty("Password", My.Settings.Password)
pProp.SetProperty("Version", My.Settings.Version)
targetWorkspace = wFac.Open(pProp, 0)
WS = targetWorkspace
'Dim targetWorkspacePath As String = "C:\projek peta melaka\Melaka.gdb"
Dim sourceWorkspaceFactory As IWorkspaceFactory = New ShapefileWorkspaceFactoryClass()
Dim targetWorkspaceFactory As IWorkspaceFactory = New FileGDBWorkspaceFactoryClass()
Dim sourceWorkspace As IWorkspace = sourceWorkspaceFactory.OpenFromFile(sourceWorkspacePath, 0)
'Dim targetWorkspace As IWorkspace = targetWorkspaceFactory.Open(targetWsPath, 0)
' Cast the workspaces to the IDataset interface and get name objects.
Dim sourceWorkspaceDataset As IDataset = CType(sourceWorkspace, IDataset)
Dim targetWorkspaceDataset As IDataset = CType(targetWorkspace, IDataset)
Dim sourceWorkspaceDatasetName As IName = sourceWorkspaceDataset.FullName
Dim targetWorkspaceDatasetName As IName = targetWorkspaceDataset.FullName
Dim sourceWorkspaceName As IWorkspaceName = CType(sourceWorkspaceDatasetName, IWorkspaceName)
Dim targetWorkspaceName As IWorkspaceName = CType(targetWorkspaceDatasetName, IWorkspaceName)
' Create a name object for the shapefile and cast it to the IDatasetName interface.
Dim sourceFeatureClassName As IFeatureClassName = New FeatureClassNameClass()
Dim sourceDatasetName As IDatasetName = CType(sourceFeatureClassName, IDatasetName)
sourceDatasetName.Name = "tsempdm.shp"
sourceDatasetName.WorkspaceName = sourceWorkspaceName
' Create a name object for the FGDB feature class and cast it to the IDatasetName interface.
Dim targetFeatureClassName As IFeatureClassName = New FeatureClassNameClass()
Dim targetDatasetName As IDatasetName = CType(targetFeatureClassName, IDatasetName)
targetDatasetName.Name = "tsemp"
targetDatasetName.WorkspaceName = targetWorkspaceName
' Open source feature class to get field definitions.
Dim sourceName As IName = CType(sourceFeatureClassName, IName)
Dim sourceFeatureClass As IFeatureClass = CType(sourceName.Open(), IFeatureClass)
' Create the objects and references necessary for field validation.
Dim fieldChecker As IFieldChecker = New FieldCheckerClass()
Dim sourceFields As IFields = sourceFeatureClass.Fields
Dim targetFields As IFields = Nothing
Dim enumFieldError As IEnumFieldError = Nothing
' Set the required properties for the IFieldChecker interface.
fieldChecker.InputWorkspace = sourceWorkspace
fieldChecker.ValidateWorkspace = targetWorkspace
' Validate the fields and check for errors.
fieldChecker.Validate(sourceFields, enumFieldError, targetFields)
If Not enumFieldError Is Nothing Then
' Handle the errors in a way appropriate to your application.
Console.WriteLine("Errors were encountered during field validation.")
End If
' Find the shape field.
Dim shapeFieldName As String = sourceFeatureClass.ShapeFieldName
Dim shapeFieldIndex As Integer = sourceFeatureClass.FindField(shapeFieldName)
Dim shapeField As IField = sourceFields.Field(shapeFieldIndex)
' Get the geometry definition from the shape field and clone it.
Dim geometryDef As IGeometryDef = shapeField.GeometryDef
Dim geometryDefClone As IClone = CType(geometryDef, IClone)
Dim targetGeometryDefClone As IClone = geometryDefClone.Clone()
Dim targetGeometryDef As IGeometryDef = CType(targetGeometryDefClone, IGeometryDef)
'-----------
' Cast the IGeometryDef to the IGeometryDefEdit interface.
Dim targetGeometryDefEdit As IGeometryDefEdit = CType(targetGeometryDef, IGeometryDefEdit)
' Set the IGeometryDefEdit properties.
targetGeometryDefEdit.GridCount_2 = 1
targetGeometryDefEdit.GridSize_2(0) = 0.75
' Create the converter and run the conversion.
Dim featureDataConverter As IFeatureDataConverter = New FeatureDataConverterClass()
Dim enumInvalidObject As IEnumInvalidObject = featureDataConverter.ConvertFeatureClass(sourceFeatureClassName, Nothing, Nothing, targetFeatureClassName, targetGeometryDef, targetFields, "", 1000, 0)
' Check for errors.
Dim invalidObjectInfo As IInvalidObjectInfo = Nothing
enumInvalidObject.Reset()
Do While Not (invalidObjectInfo) Is Nothing
' Handle the errors in a way appropriate to the application.
Console.WriteLine("Errors occurred for the following feature: {0}", invalidObjectInfo.InvalidObjectID)
invalidObjectInfo = enumInvalidObject.Next()
Loop
End Sub