示例#1
0
        /// <summary>
        ///     Determines if the <paramref name="source" /> contains any of the database model names specified in the
        ///     <paramref name="modelNames" /> array.
        /// </summary>
        /// <param name="source">The workspace.</param>
        /// <param name="modelNames">The database model names.</param>
        /// <returns>
        ///     Returns <c>true</c> if the workspace contains any of the database model names; otherwise, <c>false</c>.
        /// </returns>
        /// <exception cref="ArgumentNullException">modelNames</exception>
        public static bool IsAssignedDatabaseModelName(this IWorkspace source, params string[] modelNames)
        {
            if (source == null)
            {
                return(false);
            }
            if (modelNames == null)
            {
                throw new ArgumentNullException("modelNames");
            }

            IWorkspaceExtensionManager manager = source as IWorkspaceExtensionManager;

            if (manager != null)
            {
                UID uid = new UIDClass();
                uid.Value = "{54148E70-336D-11D5-9AB3-0001031AE963}"; // MMWorkspaceExtension

                IWorkspaceExtension ext = manager.FindExtension(uid);
                if (ext != null)
                {
                    IMMModelNameInfo modelNameInfo = (IMMModelNameInfo)ext;
                    return(modelNames.Any(modelNameInfo.ModelNameExists));
                }
            }

            return(false);
        }
示例#2
0
 private bool method_0(IFeatureClass ifeatureClass_0)
 {
     if (ifeatureClass_0 != null)
     {
         try
         {
             IDataset dataset = ifeatureClass_0 as IDataset;
             IWorkspaceExtensionManager workspace = dataset.Workspace as IWorkspaceExtensionManager;
             UID gUID = new UIDClass
             {
                 Value = "{FD05270A-8E0B-4823-9DEE-F149347C32B6}"
             };
             IRepresentationWorkspaceExtension extension =
                 workspace.FindExtension(gUID) as IRepresentationWorkspaceExtension;
             if (extension == null)
             {
                 return(false);
             }
             return(true);
         }
         catch
         {
         }
     }
     return(false);
 }
示例#3
0
 public static bool HasRepresentation(IFeatureClass pfclass)
 {
     if (pfclass != null)
     {
         try
         {
             IDataset dataset = pfclass as IDataset;
             IWorkspaceExtensionManager workspace = dataset.Workspace as IWorkspaceExtensionManager;
             UID gUID = new UIDClass
             {
                 Value = "{FD05270A-8E0B-4823-9DEE-F149347C32B6}"
             };
             IRepresentationWorkspaceExtension extension =
                 workspace.FindExtension(gUID) as IRepresentationWorkspaceExtension;
             if (extension == null)
             {
                 return(false);
             }
             return(extension.get_FeatureClassHasRepresentations(pfclass));
         }
         catch
         {
         }
     }
     return(false);
 }
        public static IRepresentationWorkspaceExtension GetRepExtension(IWorkspace Workspace)
        {
            IWorkspaceExtensionManager ExtManager = (IWorkspaceExtensionManager)Workspace;
            UID theUID = new UIDClass();

            theUID.Value = "{FD05270A-8E0B-4823-9DEE-F149347C32B6}";
            return((IRepresentationWorkspaceExtension)ExtManager.FindExtension(theUID));
        }
示例#5
0
        private INetworkDataset ShapefileToNetwork(IWorkspace shpWS, string name)
        {
            IWorkspaceExtensionManager wsExtMgr = shpWS as IWorkspaceExtensionManager;
            UID myUID = new UIDClass();

            myUID.Value = "esriGeoDatabase.NetworkDatasetWorkspaceExtension";
            IWorkspaceExtension wsExt          = wsExtMgr.FindExtension(myUID);
            IDatasetContainer2  dsCont         = wsExt as IDatasetContainer2;
            IDataset            dataset        = dsCont.get_DatasetByName(esriDatasetType.esriDTNetworkDataset, name);
            INetworkDataset     networkDataset = dataset as INetworkDataset;

            return(networkDataset);
        }
        private void btnNext_Click(object sender, EventArgs e)
        {
            switch (this.int_0)
            {
            case 0:
                if (!this.reprensationGeneralPage_0.Apply())
                {
                    return;
                }
                this.reprensationGeneralPage_0.Visible = false;
                this.representationRulesPage_0.Visible = true;
                this.btnLast.Enabled = true;
                this.btnNext.Text    = "完成";
                break;

            case 1:
            {
                IDataset   dataset   = this.ifeatureClass_0 as IDataset;
                IWorkspace workspace = dataset.Workspace;
                try
                {
                    IWorkspaceExtensionManager manager = workspace as IWorkspaceExtensionManager;
                    UID gUID = new UIDClass
                    {
                        Value = "{FD05270A-8E0B-4823-9DEE-F149347C32B6}"
                    };
                    IRepresentationWorkspaceExtension extension =
                        manager.FindExtension(gUID) as IRepresentationWorkspaceExtension;
                    if (extension != null)
                    {
                        new RepresentationRulesClass();
                        this.irepresentationClass_0 = extension.CreateRepresentationClass(this.ifeatureClass_0,
                                                                                          this.reprensationGeneralPage_0.RepresentationName,
                                                                                          this.reprensationGeneralPage_0.RuleIDFieldName,
                                                                                          this.reprensationGeneralPage_0.OverrideFieldName,
                                                                                          this.reprensationGeneralPage_0.RequireShapeOverride, this.irepresentationRules_0, null);
                    }
                }
                catch (Exception exception)
                {
                    MessageBox.Show(exception.Message);
                    return;
                }
                base.DialogResult = DialogResult.OK;
                return;
            }
            }
            this.int_0++;
        }
示例#7
0
        private void SetMemberVariables()
        {
            IFeatureWorkspace          pWorkspace = this.m_pWorkspace as IFeatureWorkspace;
            IWorkspaceExtensionManager manager    = this.m_pWorkspace as IWorkspaceExtensionManager;
            UID gUID = new UIDClass
            {
                Value = "esriGeoDatabase.NetworkDatasetWorkspaceExtension"
            };
            IDatasetContainer2 container = manager.FindExtension(gUID) as IDatasetContainer2;

            this.m_pNetworkDataset =
                container.get_DatasetByName(esriDatasetType.esriDTNetworkDataset, this.NETWORK_DATASET) as
                INetworkDataset;
            this.m_pInputStopsFClass = pWorkspace.OpenFeatureClass(this.INPUT_STOPS_FC);
        }
示例#8
0
 public static IRepresentationWorkspaceExtension GetRepWSExt(IWorkspace pWorkspace)
 {
     try
     {
         IWorkspaceExtensionManager manager = pWorkspace as IWorkspaceExtensionManager;
         UID gUID = new UIDClass
         {
             Value = "{FD05270A-8E0B-4823-9DEE-F149347C32B6}"
         };
         return(manager.FindExtension(gUID) as IRepresentationWorkspaceExtension);
     }
     catch
     {
     }
     return(null);
 }
示例#9
0
 public static IRepresentationWorkspaceExtension GetRepWSExtFromFClass(IFeatureClass pfclass)
 {
     try
     {
         IDataset dataset = pfclass as IDataset;
         IWorkspaceExtensionManager workspace = dataset.Workspace as IWorkspaceExtensionManager;
         UID gUID = new UIDClass
         {
             Value = "{FD05270A-8E0B-4823-9DEE-F149347C32B6}"
         };
         return(workspace.FindExtension(gUID) as IRepresentationWorkspaceExtension);
     }
     catch
     {
     }
     return(null);
 }
示例#10
0
 private IRepresentationWorkspaceExtension method_0(IFeatureClass ifeatureClass_1)
 {
     try
     {
         IDataset dataset = ifeatureClass_1 as IDataset;
         IWorkspaceExtensionManager workspace = dataset.Workspace as IWorkspaceExtensionManager;
         UID gUID = new UIDClass
         {
             Value = "{FD05270A-8E0B-4823-9DEE-F149347C32B6}"
         };
         return(workspace.FindExtension(gUID) as IRepresentationWorkspaceExtension);
     }
     catch
     {
     }
     return(null);
 }
示例#11
0
        public INetworkDataset OpenNetworkDataset(IWorkspace pWorkspace, string sNDSName)
        {
            IWorkspaceExtensionManager manager = pWorkspace as IWorkspaceExtensionManager;
            int extensionCount = manager.ExtensionCount;

            for (int i = 0; i < extensionCount; i++)
            {
                IWorkspaceExtension extension = manager.get_Extension(i);
                if (extension.Name.Equals("Network Dataset"))
                {
                    IDatasetContainer2 container = extension as IDatasetContainer2;
                    return
                        (container.get_DatasetByName(esriDatasetType.esriDTNetworkDataset, sNDSName) as INetworkDataset);
                }
            }
            return(null);
        }
示例#12
0
        public static void Main(string[] args)
        {
            #region Licensing
            ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Desktop);
            IAoInitialize     aoInitialize  = new AoInitializeClass();
            esriLicenseStatus licenseStatus = aoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeAdvanced);
            if (licenseStatus != esriLicenseStatus.esriLicenseCheckedOut)
            {
                MessageBox.Show("An Advanced License could not be checked out.");
                return;
            }
            #endregion

            try
            {
                // Open the workspace.
                IWorkspaceFactory workspaceFactory = null;
                switch (geodatabaseType)
                {
                case GeodatabaseType.ArcSDE:
                    workspaceFactory = new SdeWorkspaceFactoryClass();
                    break;

                case GeodatabaseType.FileGDB:
                    workspaceFactory = new FileGDBWorkspaceFactoryClass();
                    break;

                case GeodatabaseType.PersonalGDB:
                    workspaceFactory = new AccessWorkspaceFactoryClass();
                    break;
                }
                IWorkspace workspace = workspaceFactory.OpenFromFile(workspacePath, 0);
                IWorkspaceExtensionManager workspaceExtensionManager = (IWorkspaceExtensionManager)workspace;

                // Create a UID for the workspace extension.
                UID uid = new UIDClass();
                uid.Value = extensionGuid;

                // Determine whether there are any existing geodatabase-register extensions.
                // To disambiguate between GDB-register extensions and component category extensions,
                // check the extension count of a new scratch workspace.
                IScratchWorkspaceFactory scratchWorkspaceFactory = new FileGDBScratchWorkspaceFactoryClass();
                IWorkspace scratchWorkspace = scratchWorkspaceFactory.CreateNewScratchWorkspace();
                IWorkspaceExtensionManager scratchExtensionManager = (IWorkspaceExtensionManager)scratchWorkspace;
                Boolean workspaceExtensionApplied = false;
                UID     gdbRegisteredUID          = null;
                try
                {
                    workspaceExtensionApplied = (workspaceExtensionManager.ExtensionCount > scratchExtensionManager.ExtensionCount);
                }
                catch (COMException comExc)
                {
                    // This is necessary in case the existing extension could not be initiated.
                    if (comExc.ErrorCode == (int)fdoError.FDO_E_WORKSPACE_EXTENSION_CREATE_FAILED)
                    {
                        // Parse the error message for the current extension's GUID.
                        Regex           regex           = new Regex("(?<guid>{[^}]+})");
                        MatchCollection matchCollection = regex.Matches(comExc.Message);
                        if (matchCollection.Count > 0)
                        {
                            Match match = matchCollection[0];
                            gdbRegisteredUID          = new UIDClass();
                            gdbRegisteredUID.Value    = match.Groups["guid"].Value;
                            workspaceExtensionApplied = true;
                        }
                        else
                        {
                            throw comExc;
                        }
                    }
                    else
                    {
                        throw comExc;
                    }
                }

                if (workspaceExtensionApplied)
                {
                    if (gdbRegisteredUID == null)
                    {
                        // There is GDB-registered extension on the SDE workspace. Find the SDE extension that is not
                        // applied to the scratch workspace.
                        for (int i = 0; i < workspaceExtensionManager.ExtensionCount; i++)
                        {
                            IWorkspaceExtension workspaceExtension = workspaceExtensionManager.get_Extension(i);
                            IWorkspaceExtension scratchExtension   = scratchExtensionManager.FindExtension(workspaceExtension.GUID);
                            if (scratchExtension == null)
                            {
                                gdbRegisteredUID = workspaceExtension.GUID;
                            }
                        }
                    }
                }

                // If the extension could be located, remove it.
                if (gdbRegisteredUID != null)
                {
                    workspaceExtensionManager.UnRegisterExtension(gdbRegisteredUID);
                }

                // Register the extension.
                workspaceExtensionManager.RegisterExtension("RasterSyncExtension.RasterSyncWorkspaceExtension", uid);
            }
            catch (COMException comExc)
            {
                switch (comExc.ErrorCode)
                {
                case (int)fdoError.FDO_E_WORKSPACE_EXTENSION_NO_REG_PRIV:
                    MessageBox.Show("The connection file's privileges are insufficient to perform this operation.",
                                    "Register Workspace Extension", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    break;

                case (int)fdoError.FDO_E_WORKSPACE_EXTENSION_CREATE_FAILED:
                    String createErrorMessage = String.Concat("The workspace extension could not be created.",
                                                              Environment.NewLine, "Ensure that it has been registered for COM Interop.");
                    MessageBox.Show(createErrorMessage, "Register Workspace Extension", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    break;

                case (int)fdoError.FDO_E_WORKSPACE_EXTENSION_DUP_GUID:
                case (int)fdoError.FDO_E_WORKSPACE_EXTENSION_DUP_NAME:
                    String dupErrorMessage = String.Concat("A duplicate name or GUID was detected. Make sure any existing GDB-registered",
                                                           "workspaces are not component category-registered as well.");
                    MessageBox.Show(dupErrorMessage, "Register Workspace Extension", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    break;

                default:
                    String otherErrorMessage = String.Format("An unexpected error has occurred:{0}{1}{2}", Environment.NewLine, comExc.Message,
                                                             comExc.ErrorCode);
                    MessageBox.Show(otherErrorMessage);
                    break;
                }
            }
            catch (Exception exc)
            {
                String errorMessage = String.Format("An unexpected error has occurred:{0}{1}", Environment.NewLine, exc.Message);
                MessageBox.Show(errorMessage);
            }

            // Shutdown the AO initializer.
            aoInitialize.Shutdown();
        }