예제 #1
0
        public MxdManager(string sMxdTemplate)
        {
            // Initialize License 
            m_AOLicenseInitializer = new LicenseInitializer();
            IsInitialized = m_AOLicenseInitializer.InitializeApplication(new ESRI.ArcGIS.esriSystem.esriLicenseProductCode[] { ESRI.ArcGIS.esriSystem.esriLicenseProductCode.esriLicenseProductCodeArcServer },
            new ESRI.ArcGIS.esriSystem.esriLicenseExtensionCode[] { });

            if (IsInitialized == false)
            {
                esriLicenseStatus licenseStatus = esriLicenseStatus.esriLicenseUnavailable;
                IAoInitialize m_AoInitialize = new AoInitialize();
#if _WIN64
                licenseStatus = m_AoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeAdvanced);
#else
                licenseStatus = m_AoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeArcInfo);
#endif
                if (licenseStatus != esriLicenseStatus.esriLicenseNotInitialized)
                    IsInitialized = true;
            }

            _sMxdTemplate = sMxdTemplate;

        }
예제 #2
0
        public MxdManager(string sMxdTemplate)
        {
            // Initialize License
            m_AOLicenseInitializer = new LicenseInitializer();
            IsInitialized          = m_AOLicenseInitializer.InitializeApplication(new ESRI.ArcGIS.esriSystem.esriLicenseProductCode[] { ESRI.ArcGIS.esriSystem.esriLicenseProductCode.esriLicenseProductCodeArcServer },
                                                                                  new ESRI.ArcGIS.esriSystem.esriLicenseExtensionCode[] { });

            if (IsInitialized == false)
            {
                esriLicenseStatus licenseStatus  = esriLicenseStatus.esriLicenseUnavailable;
                IAoInitialize     m_AoInitialize = new AoInitialize();
#if _WIN64
                licenseStatus = m_AoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeAdvanced);
#else
                licenseStatus = m_AoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeArcInfo);
#endif
                if (licenseStatus != esriLicenseStatus.esriLicenseNotInitialized)
                {
                    IsInitialized = true;
                }
            }

            _sMxdTemplate = sMxdTemplate;
        }
예제 #3
0
        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;

            }
        }
예제 #4
0
        /// <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();
            }
        }
예제 #5
0
    /// <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();
      }
    }
예제 #6
0
        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;
            }
        }