Example #1
0
    public bool joinTabletoFeatureLayer(IServerContext mapContext,
        ITable externalTable,
        IFeatureLayer featureLayer,
        string tableJoinField,
        string layerJoinField,
        esriJoinType joinType)
    {
        IDisplayTable pDispTable = featureLayer as IDisplayTable;

        IFeatureClass pFCLayer = pDispTable.DisplayTable as IFeatureClass;
        ITable pTLayer = (ITable)pFCLayer;

        string strJnFieldLayer = layerJoinField;
        string strJnFieldTable = tableJoinField;

        IMemoryRelationshipClassFactory pMemRelFact = (IMemoryRelationshipClassFactory)mapContext.CreateObject("esriGeoDatabase.MemoryRelationshipClassFactory");
        IRelationshipClass pRelClass = (IRelationshipClass)pMemRelFact.Open("Join",
                                                        (IObjectClass)externalTable, strJnFieldTable,
                                                        (IObjectClass)pTLayer, strJnFieldLayer,
                                                        "forward", "backward",
                                                        esriRelCardinality.esriRelCardinalityOneToOne);

        IDisplayRelationshipClass pDispRC = (IDisplayRelationshipClass)featureLayer;
        pDispRC.DisplayRelationshipClass(pRelClass, joinType);   //esriLeftOuterJoin
        IDisplayTable dt = (IDisplayTable)featureLayer;
        ITable jointable = dt.DisplayTable;

        bool retval = false;
        if (jointable is IRelQueryTable)
        {
            retval = true;
        }
        return retval;
    }
Example #2
0
        public void TestAsg()
        {
            IServerContext svrContxt = null;

            try
            {
                svrContxt = ServerUtility.GetServerContext(this.Page);
                //3.创建serverObjects
                IPoint pt = svrContxt.CreateObject(PublicConst.Lbl_GeoObjt_Point) as IPoint;
                pt.X             = 100;
                pt.Y             = 200;
                sCallBackFuncStr = JsMesage.ShowMessage(Map1, string.Format("x={0},y={1}", pt.X, pt.Y));
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                System.Diagnostics.Debug.WriteLine(ex);
            }
            finally
            {
                if (svrContxt != null)
                {
                    svrContxt.ReleaseContext(); svrContxt = null;
                }
            }
        }
Example #3
0
    public Classifier(IServerContext mapContext, double [] values, int [] counts, String classifierType, int breaks)
    {
        m_classifier = (IClassifyGEN)mapContext.CreateObject("esriSystem." + classifierType);
        int b = breaks;

        m_classifier.Classify(values, counts, ref b);
        m_breaks = b;
    }
Example #4
0
        /// 获取GRB颜色
        /// </summary>
        /// <param name="red"></param>
        /// <param name="green"></param>
        /// <param name="blue"></param>
        /// <returns></returns>
        public static ESRI.ArcGIS.Display.IColor GetRGB(int red, int green, int blue, IServerContext pServerContext)
        {
            IRgbColor rgbColor = pServerContext.CreateObject("esriDisplay.RGBColor") as IRgbColor;
            IColor    color    = rgbColor as IColor;

            rgbColor.Red   = red;
            rgbColor.Green = green;
            rgbColor.Blue  = blue;
            return(color);
        }
        private IFeatureClass GetFeatureClassInsideDataset(string featureClassName)
        {
            IWorkspaceFactory2 factory = null;

            if (_serverContext != null)
            {
                factory = (IWorkspaceFactory2)_serverContext.CreateObject("esriDataSourcesGDB.SDEWorkspaceFactory");
            }
            //else
            //    factory = new ESRI.ArcGIS.DataSourcesGDB.SdeWorkspaceFactoryClass();
            //TODO COMMENTED ABOVE TO ALLOW COMPILE
            IWorkspace        ipWks            = null;
            IFeatureClass     ipFeatClass      = null;
            IFeatureDataset   ipFeatDS         = null;
            IEnumDataset      ipEnumSubDataset = null;
            IEnumDataset      ipEnumDataset    = null;
            IFeatureWorkspace fws = null;

            try
            {
                IPropertySet2 propSet = null;
                if (_serverContext != null)
                {
                    propSet = (IPropertySet2)_serverContext.CreateObject("esriSystem.PropertySet");
                }
                //else
                //    propSet =  new ESRI.ArcGIS.esriSystem.PropertySetClass();
                //TODO COMMENTED ABOVE TO ALLOW COMPILE
                propSet.SetProperty("SERVER", _sdeServerInfo.server);
                propSet.SetProperty("INSTANCE", _sdeServerInfo.instance);
                propSet.SetProperty("DATABASE", _sdeServerInfo.database);
                propSet.SetProperty("USER", _sdeServerInfo.user);
                propSet.SetProperty("PASSWORD", _sdeServerInfo.password);
                propSet.SetProperty("VERSION", _sdeServerInfo.version);

                ipWks = factory.Open(propSet, 0);
                fws   = (IFeatureWorkspace)ipWks;
                //try and open it
                if (ipWks != null)
                {
                    // Now get all the feature classes included in the datasets
                    ipEnumDataset = ipWks.get_Datasets(esriDatasetType.esriDTFeatureDataset);
                    ipEnumDataset.Reset();
                    ipFeatDS = ipEnumDataset.Next() as IFeatureDataset;
                    while (ipFeatDS != null)
                    {
                        ipEnumSubDataset = ipFeatDS.Subsets; //.get_Datasets(esriDatasetType.esriDTFeatureClass);
                        ipEnumSubDataset.Reset();
                        ipFeatClass = ipEnumSubDataset.Next() as IFeatureClass;
                        while (ipFeatClass != null)
                        {
                            if (ipFeatClass.AliasName.ToUpper().Contains(featureClassName.ToUpper()))
                            {
                                return(ipFeatClass);
                            }
                            ipFeatClass = ipEnumSubDataset.Next() as IFeatureClass;
                        }
                        ipFeatDS         = ipEnumDataset.Next() as IFeatureDataset;
                        ipEnumSubDataset = null;
                    }

                    ipEnumDataset = null;
                }
            }
            catch (System.Runtime.InteropServices.COMException edd)
            {
                ipFeatClass = null;
                throw edd;
            }
            finally
            {
                Util.ReleaseCOMObject(fws);
                Util.ReleaseCOMObject(ipEnumSubDataset);
                Util.ReleaseCOMObject(ipEnumDataset);
                Util.ReleaseCOMObject(factory);
            }

            return(null);
        }
Example #6
0
    private IColor createRGBColor(IServerContext mapContext, int red, int green, int blue)
    {
        IColor retColor;
        RgbColor pColor;
        pColor = (RgbColor)mapContext.CreateObject("esriDisplay.RgbColor");
        pColor.Red = red;
        pColor.Green = green;
        pColor.Blue = blue;
        retColor = (IColor)pColor;

        return retColor;
    }
Example #7
0
    private void applyRenderer(IGeoFeatureLayer geoLayer, IServerContext mapContext, string fieldName, Classifier classifier)
    {
        IClassBreaksRenderer cbRenderer = (IClassBreaksRenderer)mapContext.CreateObject("esriCarto.ClassBreaksRenderer");
        cbRenderer.Field = fieldName;

        ILegendInfo legendInfo = (ILegendInfo)cbRenderer;
        ILegendGroup legendGroup = legendInfo.get_LegendGroup(0);
        legendGroup.Heading = "Counts";

        int breaks = classifier.getBreaks();
        IColor [] pColors = new IColor[breaks];
        ISimpleFillSymbol [] symbols = new ISimpleFillSymbol[breaks];

        double breakValue;
        cbRenderer.BreakCount = breaks;
        IAlgorithmicColorRamp colorRamp = (IAlgorithmicColorRamp)mapContext.CreateObject("esriDisplay.AlgorithmicColorRamp");
        IColor startColor, endColor;

        startColor = createRGBColor(mapContext, 255, 255, 0);
        endColor = createRGBColor(mapContext, 255, 0, 0);
        colorRamp.FromColor = startColor;
        colorRamp.ToColor = endColor;
        colorRamp.Algorithm = esriColorRampAlgorithm.esriCIELabAlgorithm;
        colorRamp.Size = breaks;
        bool created;
        try
        {
            colorRamp.CreateRamp(out created);
        }
        catch
        {
            this.Label2.Text = "There is not enough data associated with the current extents and attributes selected. A map was not generated. Please try selecting other attributes.";
            return;
        }
        IEnumColors iterColors = colorRamp.Colors;

        double[] classBreaksArray = (double[])classifier.getClassBreaksArray();

        for (int i = 0; i < breaks; i++)
        {
            pColors[i] = iterColors.Next();
            symbols[i] = (ISimpleFillSymbol)mapContext.CreateObject("esriDisplay.SimpleFillSymbol");
            symbols[i].Color = pColors[i];
            cbRenderer.set_Symbol(i, (ISymbol)symbols[i]);

            breakValue = classBreaksArray[i + 1];
            cbRenderer.set_Break(i, breakValue);
            string breakValueString = String.Format("{0:0.00}", breakValue);

            if (i == 0)
            {
                cbRenderer.set_Label(i, "<" + breakValueString);
            }
            else
            {
                string prevValueString = String.Format("{0:0.00}", classBreaksArray[i]);
                string label = prevValueString + " < " + breakValueString;
                cbRenderer.set_Label(i, label);
            }

        }

        geoLayer.Renderer = (IFeatureRenderer)cbRenderer;
        this.Toc1.ExpandDepth = 1;
        this.Toc1.Refresh();
    }