/// <summary> /// /// </summary> /// <param name="sShapeFile"></param> /// <param name="sShakeMapID"></param> /// <param name="sFileGDB"></param> /// <param name="sTargetFCName"></param> public bool ImportShapeFileToGeoDB(string sShapeFile, string sShakeMapID, string sFileGDB, string sTargetFCName, StringDictionary sdeSD) { IWorkspace pWS = null; IFeatureClass targetFC; ArcObjects pArcObjects = new ArcObjects(); FileInfo fi; IFeatureClass sourceFC; IFeatureCursor sourceCursor = null; try { // Initialize License m_AOLicenseInitializer = new LicenseInitializer(); m_AOLicenseInitializer.InitializeApplication(new ESRI.ArcGIS.esriSystem.esriLicenseProductCode[] { ESRI.ArcGIS.esriSystem.esriLicenseProductCode.esriLicenseProductCodeEngine }, new ESRI.ArcGIS.esriSystem.esriLicenseExtensionCode[] { }); // Get workspace from FGDB or SDE if (sFileGDB.Length > 0) { pWS = pArcObjects.FileGdbWorkspaceFromPath(sFileGDB); } else { IPropertySet pPropSet = new PropertySetClass(); pPropSet.SetProperty("SERVER", sdeSD["SERVER"]); pPropSet.SetProperty("INSTANCE", sdeSD["INSTANCE"]); pPropSet.SetProperty("DATABASE", sdeSD["DATABASE"]); pPropSet.SetProperty("USER", sdeSD["USER"]); pPropSet.SetProperty("PASSWORD", sdeSD["PASSWORD"]); pPropSet.SetProperty("VERSION", sdeSD["VERSION"]); pWS = pArcObjects.ConnectToTransactionalVersion(pPropSet); } // Make sure we have workspace if (pWS == null) { return false; } // Get target feature class targetFC = pArcObjects.GetFeatureClass(pWS, sTargetFCName); // Make sure we have target feature class if (targetFC == null) { return false; } // Set FileInfo object to shape file fi = new FileInfo(sShapeFile); // Make sure we have fileInfo object if (fi == null) { return false; } // Parse out ShapeFile name without extension string sShapeFileName = fi.Name.Substring(0, fi.Name.Length - (fi.Name.Length - fi.Name.LastIndexOf('.'))); // Get source featue class from shape file sourceFC = GetFeatureClassFromShapefileOnDisk(fi.DirectoryName, sShapeFileName); // Set source feature cursor. sourceCursor = sourceFC.Search(null, false); // Insert features InsertFeaturesUsingCursor(targetFC, sourceCursor, sShakeMapID); return true; } catch (Exception ex) { return false; } finally { System.Runtime.InteropServices.Marshal.ReleaseComObject(sourceCursor); sourceCursor = null; System.Runtime.InteropServices.Marshal.ReleaseComObject(pWS); pWS = null; //Do not make any call to ArcObjects after ShutDownApplication() if (m_AOLicenseInitializer != null) m_AOLicenseInitializer.ShutdownApplication(); m_AOLicenseInitializer = null; GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); } }
/// <summary> /// /// </summary> /// <param name="sShapeFile"></param> /// <param name="sShakeMapID"></param> /// <param name="sFileGDB"></param> /// <param name="sTargetFCName"></param> public bool ImportShapeFileToGeoDB(string sShapeFile, string sShakeMapID, string sFileGDB, string sTargetFCName, StringDictionary sdeSD) { IWorkspace pWS = null; IFeatureClass targetFC; ArcObjects pArcObjects = new ArcObjects(); FileInfo fi; IFeatureClass sourceFC; IFeatureCursor sourceCursor = null; try { // Initialize License m_AOLicenseInitializer = new LicenseInitializer(); m_AOLicenseInitializer.InitializeApplication(new ESRI.ArcGIS.esriSystem.esriLicenseProductCode[] { ESRI.ArcGIS.esriSystem.esriLicenseProductCode.esriLicenseProductCodeEngine }, new ESRI.ArcGIS.esriSystem.esriLicenseExtensionCode[] { }); // Get workspace from FGDB or SDE if (sFileGDB.Length > 0) { pWS = pArcObjects.FileGdbWorkspaceFromPath(sFileGDB); } else { IPropertySet pPropSet = new PropertySetClass(); pPropSet.SetProperty("SERVER", sdeSD["SERVER"]); pPropSet.SetProperty("INSTANCE", sdeSD["INSTANCE"]); pPropSet.SetProperty("DATABASE", sdeSD["DATABASE"]); pPropSet.SetProperty("USER", sdeSD["USER"]); pPropSet.SetProperty("PASSWORD", sdeSD["PASSWORD"]); pPropSet.SetProperty("VERSION", sdeSD["VERSION"]); pWS = pArcObjects.ConnectToTransactionalVersion(pPropSet); } // Make sure we have workspace if (pWS == null) { return(false); } // Get target feature class targetFC = pArcObjects.GetFeatureClass(pWS, sTargetFCName); // Make sure we have target feature class if (targetFC == null) { return(false); } // Set FileInfo object to shape file fi = new FileInfo(sShapeFile); // Make sure we have fileInfo object if (fi == null) { return(false); } // Parse out ShapeFile name without extension string sShapeFileName = fi.Name.Substring(0, fi.Name.Length - (fi.Name.Length - fi.Name.LastIndexOf('.'))); // Get source featue class from shape file sourceFC = GetFeatureClassFromShapefileOnDisk(fi.DirectoryName, sShapeFileName); // Set source feature cursor. sourceCursor = sourceFC.Search(null, false); // Insert features InsertFeaturesUsingCursor(targetFC, sourceCursor, sShakeMapID); return(true); } catch (Exception ex) { return(false); } finally { System.Runtime.InteropServices.Marshal.ReleaseComObject(sourceCursor); sourceCursor = null; System.Runtime.InteropServices.Marshal.ReleaseComObject(pWS); pWS = null; //Do not make any call to ArcObjects after ShutDownApplication() if (m_AOLicenseInitializer != null) { m_AOLicenseInitializer.ShutdownApplication(); } m_AOLicenseInitializer = null; GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); } }
public bool CreateMxd(string sMxdTemplate, string sPathToMXD, string ArcGISServer, string sMxdFile, string sDBConn, string sDataSet, bool bSde) { if (sMxdTemplate.Length > 0) { _sMxdTemplate = sMxdTemplate; } _sPathToMXD = sPathToMXD; _ArcGISServer = ArcGISServer; ESRI.ArcGIS.Carto.IMap pMap = null; IFeatureClass pOldFC = null; string fcName = String.Empty; string sSuffix = String.Empty; IWorkspaceFactory2 wsf = null; IWorkspace2 ws2 = null; IFeatureWorkspace fws = null; IWorkspace ws = null; try { if (bSde) { // Get WS for SDE ws = ArcSdeWorkspaceFromFile(sDBConn); } else { // Get WS from file GDB. wsf = new FileGDBWorkspaceFactoryClass() as IWorkspaceFactory2; //if locks on gdb only path is passed in string fileGdb = sDBConn.Contains(".gdb") ? sDBConn : sDBConn; if (wsf.IsWorkspace(fileGdb)) { ws = wsf.OpenFromFile(fileGdb, 0); } } if (ws == null) { return(false); } // Check if Mxd already exists if (File.Exists(sMxdFile)) { return(false); } // Create a Mxd from Overlays Template pMap = PrivateCreateMxd(sMxdFile); ws2 = (IWorkspace2)ws; fws = (IFeatureWorkspace)ws; // Loop through all layers in MXD and repoint data source to OverlayGDB Features IEnumLayer pEnumLayer = pMap.get_Layers(null, true); pEnumLayer.Reset(); ILayer pLayer = pEnumLayer.Next(); while (pLayer != null) { if (!(pLayer is IFeatureLayer)) { pLayer = pEnumLayer.Next(); continue; } // Cast pLayer to featurelayer IFeatureLayer pMapFeatureLayer = (IFeatureLayer)pLayer; pOldFC = pMapFeatureLayer.FeatureClass; if (pOldFC == null) { pLayer = pEnumLayer.Next(); continue; } // Get FC name IDataset pDS = (IDataset)pOldFC; fcName = pDS.Name; // Feature Class: <Dataset>_osm_pt, <Dataset>_osm_ln, <Dataset>_osm_ply sSuffix = fcName.Substring(fcName.IndexOf("_osm_")); if (String.IsNullOrEmpty(sSuffix)) { continue; } // Check if feature class exists in GDB if (ws2.get_NameExists(esriDatasetType.esriDTFeatureClass, sDataSet + sSuffix)) { // Get feature class IFeatureClass ipFC = fws.OpenFeatureClass(sDataSet + sSuffix); IFeatureLayer ipFL = (IFeatureLayer)pLayer; // Create IMapAdmin2 from pMap IMapAdmin2 pMapAdmin2 = (IMapAdmin2)pMap; // Change FeatureClass of layer to FC in FGDB ipFL.FeatureClass = ipFC; pMapAdmin2.FireChangeFeatureClass(pOldFC, ipFC); COMUtil.ReleaseObject(ipFC); ipFC = null; COMUtil.ReleaseObject(ipFL); ipFL = null; } else { // Remove layer from map pMap.DeleteLayer(pLayer); } pLayer = pEnumLayer.Next(); } SaveMXD(sMxdFile, pMap); return(true); } catch (System.Runtime.InteropServices.COMException cx) { throw cx; } catch (Exception ex) { throw ex; } finally { COMUtil.ReleaseObject(pOldFC); COMUtil.ReleaseObject(fws); COMUtil.ReleaseObject(ws2); COMUtil.ReleaseObject(ws); COMUtil.ReleaseObject(pMap); COMUtil.ReleaseObject(wsf); pOldFC = null; fws = null; ws2 = null; ws = null; wsf = null; pMap = null; _pMapDocument = null; //Do not make any call to ArcObjects after ShutDownApplication() if (m_AOLicenseInitializer != null) { m_AOLicenseInitializer.ShutdownApplication(); } m_AOLicenseInitializer = null; } }