// Create the file geodatabase. public static void CreateFileGeodatabase() { string strFgdPath = @"C:\temp\"; //string strFgdName = @"AddressCrossCheck"; string strFgdName = fileGeodatabaseName; IWorkspaceName workspaceName = null; // Instantiate a file geodatabase workspace factory and create a new file geodatabase. // The Create method returns a workspace name object. IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactoryClass(); Console.WriteLine("Creating File Geodatabase..."); // check if file geodatabase exists, before creating it if (!(workspaceFactory.IsWorkspace(strFgdPath + strFgdName + ".gdb"))) { workspaceName = workspaceFactory.Create(strFgdPath, strFgdName, null, 0); } else { IFileNames arcFileNames = new FileNames(); arcFileNames.Add(strFgdPath + strFgdName + ".gdb"); workspaceName = workspaceFactory.GetWorkspaceName(strFgdPath, arcFileNames); } // Cast the workspace name object to the IName interface and open the workspace. var name = (IName)workspaceName; workspaceFGDB = (IWorkspace)name.Open(); // Load the data. ImportDataToFGDB(); }
/// <summary> /// Creates the scratch workspace. /// </summary> /// <param name="scratchConnectionFile">The scratch connection file.</param> /// <param name="fallbackScratchName">Name of the fallback scratch.</param> /// <returns> /// Returns a <see cref="IWorkspace" /> representing the temporary workspace that is either local or in-memory. /// </returns> protected IWorkspace CreateScratchWorkspace(string scratchConnectionFile, string fallbackScratchName) { if (string.IsNullOrEmpty(scratchConnectionFile)) { IScratchWorkspaceFactory2 factory = new ScratchWorkspaceFactoryClass(); return(factory.DefaultScratchWorkspace); } if (!scratchConnectionFile.EndsWith(".gdb", StringComparison.InvariantCultureIgnoreCase)) { scratchConnectionFile = Path.Combine(scratchConnectionFile, fallbackScratchName); } Log.Info(""); Log.Info("Connecting to the geodatabase specified by the {0} file.", Path.GetFileName(scratchConnectionFile)); var fgdb = new FileGDBWorkspaceFactoryClass(); if (!fgdb.IsWorkspace(scratchConnectionFile) && Directory.Exists(scratchConnectionFile)) { Directory.Delete(scratchConnectionFile, true); } if (!Directory.Exists(scratchConnectionFile)) { var name = fgdb.Create(Path.GetDirectoryName(scratchConnectionFile), Path.GetFileName(scratchConnectionFile), null, 0); return(((IName)name).Open() as IWorkspace); } var workspace = fgdb.OpenFromFile(scratchConnectionFile, 0); return(workspace); }
// create a file geodatabase in user-specified location #region "Create FileGeodatabase" public static IWorkspace CreateFileGdbWorkspace(string strFgdPath, string strFgdName) { IWorkspaceName workspaceName = null; // Instantiate a file geodatabase workspace factory and create a new file geodatabase. // The Create method returns a workspace name object. IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactoryClass() as IWorkspaceFactory; // check if file geodatabase exists, before creating it if (!(workspaceFactory.IsWorkspace(strFgdPath + strFgdName))) { workspaceName = workspaceFactory.Create(strFgdPath, strFgdName, null, 0); } else { IFileNames arcFileNames = new FileNames(); arcFileNames.Add(strFgdPath + strFgdName); workspaceName = workspaceFactory.GetWorkspaceName(strFgdPath, arcFileNames); } // Cast the workspace name object to the IName interface and open the workspace. IName name = (IName)workspaceName; IWorkspace workspace = (IWorkspace)name.Open(); return(workspace); }
private void CreateWorkspace() { if (FeatureWorkspace == null) { Config config = Config.Instance; string location = config.CycloramaVectorLayerLocationDefault ? ArcUtils.FileDir : config.CycloramaVectorLayerLocation; string defaultRecordingSrs = config.DefaultRecordingSrs; int factoryCode; if (!Directory.Exists(location)) { Directory.CreateDirectory(location); } if ((string.IsNullOrEmpty(defaultRecordingSrs)) || (!int.TryParse(defaultRecordingSrs, out factoryCode))) { ISpatialReference spatialReference = ArcUtils.SpatialReference; factoryCode = spatialReference.FactoryCode; } IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactoryClass(); string name = Path.Combine(location, string.Concat(Name, factoryCode)); string workSpaceFileName = string.Format("{0}.gdb", name); if (workspaceFactory.IsWorkspace(workSpaceFileName)) { IWorkspace workspace = workspaceFactory.OpenFromFile(workSpaceFileName, 0); _featureWorkspace = workspace as IFeatureWorkspace; } else { IWorkspaceName workspaceName = workspaceFactory.Create(string.Empty, name, null, 0); var nameObject = workspaceName as IName; if (nameObject != null) { var workspace = nameObject.Open() as IWorkspace; if (workspace != null) { _featureWorkspace = workspace as IFeatureWorkspace; } } } } }
/// <summary> /// check exists file geodatabase /// </summary> /// <param name="pathFileName">path and name of geodatabase</param> /// <returns>true if exists</returns> internal static bool ExistsFileGdb(string pathFileName) { IWorkspaceFactory2 wsf = new FileGDBWorkspaceFactoryClass() as IWorkspaceFactory2; return(wsf.IsWorkspace(pathFileName)); }
/// <summary> /// check exists file geodatabase /// </summary> /// <param name="pathFileName">path and name of geodatabase</param> /// <returns>true if exists</returns> internal static bool ExistsFileGdb(string pathFileName) { IWorkspaceFactory2 wsf = new FileGDBWorkspaceFactoryClass() as IWorkspaceFactory2; return wsf.IsWorkspace(pathFileName); }
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; } }
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; } }