Esempio n. 1
0
        private void fnBlinking(string strLayerName, string strFieldName, int intFlickerRate, int intNClasses, short srtTransparency, double[] cb)
        {
            try
            {
                int    intLIndex = pSnippet.GetIndexNumberFromLayerName(pActiveView, strLayerName);
                ILayer pLayer    = mForm.axMapControl1.get_Layer(intLIndex);

                pFLayer = pLayer as IFeatureLayer;

                pTrackCancel = new CancelTrackerClass();
                pTrackCancel.CancelOnClick    = false;
                pTrackCancel.CancelOnKeyPress = true;

                ILayerEffects pLayerEffect = (ILayerEffects)pFLayer;
                pLayerEffect.Transparency = srtTransparency;

                while (pTrackCancel.Continue())
                {
                    IFeatureLayerDefinition2 pFDefinition = (IFeatureLayerDefinition2)pFLayer;

                    for (int i = 0; i < intNClasses; i++)
                    {
                        if (i == 0)
                        {
                            pFDefinition.DefinitionExpression = strFieldName + " >= " + cb[i].ToString();
                        }
                        else
                        {
                            pFDefinition.DefinitionExpression = strFieldName + " > " + cb[i].ToString();
                        }

                        pActiveView.Refresh();
                        System.Threading.Thread.Sleep(intFlickerRate);
                        if (pTrackCancel.Continue() == false)
                        {
                            pFDefinition.DefinitionExpression = strFieldName + " >= " + cb[0].ToString();
                            pActiveView.Refresh();
                            btnStart.Text             = "Start";
                            pLayerEffect.Transparency = 0;
                            break;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                frmErrorLog pfrmErrorLog = new frmErrorLog(); pfrmErrorLog.ex = ex; pfrmErrorLog.ShowDialog();
                return;
            }
        }
Esempio n. 2
0
 private void DrawOnlySelectedFeatures(double dblValue)
 {
     try
     {
         IFeatureLayerDefinition2 pFDefinition = (IFeatureLayerDefinition2)pFLayer;
         pFDefinition.DefinitionExpression = strUncernRenderField + ">=" + dblValue.ToString();
         pActiveView.Refresh();
     }
     catch (Exception ex)
     {
         frmErrorLog pfrmErrorLog = new frmErrorLog(); pfrmErrorLog.ex = ex; pfrmErrorLog.ShowDialog();
         return;
     }
 }
Esempio n. 3
0
        private void SetLayerDefinition(ILayer lyr)
        {
            if (lyr is ICompositeLayer)
            {
                ICompositeLayer comlyr = lyr as ICompositeLayer;
                for (int j = 0; j < comlyr.Count; j++)
                {
                    ILayer lyr2 = comlyr.get_Layer(j);
                    SetLayerDefinition(lyr2);
                }
            }
            else
            {
                switch (lyr.Name.Trim().ToLower())
                {
                case "checkitemptn":
                case "checkitemln":
                case "checkitempoly":
                case "checkarea":
                    if (lyr is IFeatureLayerDefinition2)
                    {
                        IFeatureLayerDefinition2 flyrd = lyr as IFeatureLayerDefinition2;
                        flyrd.DefinitionExpression = "VersionName = '" + AppManager.GetInstance().TaskName + "'";
                    }
                    break;

                case "passedgrid":
                    if (lyr is IFeatureLayerDefinition2)
                    {
                        IFeatureLayerDefinition2 flyrd = lyr as IFeatureLayerDefinition2;
                        flyrd.DefinitionExpression = "passed =1 and TaskName='" + AppManager.GetInstance().TaskName + "'";
                    }
                    break;

                case "updategrid":
                    if (lyr is IFeatureLayerDefinition2)
                    {
                        IFeatureLayerDefinition2 flyrd = lyr as IFeatureLayerDefinition2;
                        flyrd.DefinitionExpression = "passed is null and TaskName='" + AppManager.GetInstance().TaskName + "'";
                    }
                    break;

                default:
                    break;
                }
            }
        }
Esempio n. 4
0
        ////定义地图图层的表达式,针对组图层二级分组
        public static void setGpLyrsDefinitionOfHPoint(string in_sDefinition, ILayer in_Layer)
        {
            //ICompositeLayer
            IGroupLayer   pTmpGroupLyr = in_Layer as IGroupLayer;
            IFeatureLayer pTmpFeaLayer = in_Layer as IFeatureLayer;

            if (pTmpGroupLyr != null)
            {
                ICompositeLayer pComLayer = pTmpGroupLyr as ICompositeLayer;
                for (int i = 0; i < pComLayer.Count; i++)
                {
                    ILayer pLyr = pComLayer.get_Layer(i);
                    if (pLyr.Valid && pLyr.Visible)
                    {
                        if (pLyr is IFeatureLayer)
                        {
                            ILayerFields pLyrFds        = pLyr as ILayerFields;
                            int          idxValidDate   = pLyrFds.FindField("QSRQ"),
                                         idxInvalidDate = pLyrFds.FindField("ZZRQ");
                            if (idxInvalidDate != -1 && idxValidDate != -1)
                            {
                                IFeatureLayerDefinition2 pPFLD2 = pLyr as IFeatureLayerDefinition2;
                                pPFLD2.DefinitionExpression = in_sDefinition;
                            }
                        }
                    }
                }
                return;
            }
            if (pTmpFeaLayer != null)
            {
                ILayerFields pLyrFds        = pTmpFeaLayer as ILayerFields;
                int          idxValidDate   = pLyrFds.FindField("QSRQ"),
                             idxInvalidDate = pLyrFds.FindField("ZZRQ");
                if (idxInvalidDate != -1 && idxValidDate != -1)
                {
                    IFeatureLayerDefinition2 pPFLD2 = in_Layer as IFeatureLayerDefinition2;
                    pPFLD2.DefinitionExpression = in_sDefinition;
                }
            }
        }
Esempio n. 5
0
        private void FilterLayers()
        {
            for (int i = 0; i < axMapControl1.LayerCount; i++)
            {
                ILayer lyr = axMapControl1.get_Layer(i);
                switch (lyr.Name.Trim())
                {
                case "CheckItemPtn":
                case "CheckItemLn":
                case "CheckItemPoly":
                case "CheckArea":
                    if (lyr is IFeatureLayerDefinition2)
                    {
                        IFeatureLayerDefinition2 flyrd = lyr as IFeatureLayerDefinition2;
                        flyrd.DefinitionExpression = "VersionName = '" + AppManager.GetInstance().TaskName + "'";
                    }
                    break;

                case "PassedGrid":
                    if (lyr is IFeatureLayerDefinition2)
                    {
                        IFeatureLayerDefinition2 flyrd = lyr as IFeatureLayerDefinition2;
                        flyrd.DefinitionExpression = "passed=1 and TaskName='" + AppManager.GetInstance().TaskName + "'";
                    }
                    break;

                case "UpdateGrid":
                    if (lyr is IFeatureLayerDefinition2)
                    {
                        IFeatureLayerDefinition2 flyrd = lyr as IFeatureLayerDefinition2;
                        flyrd.DefinitionExpression = "sde.sde.TaskGridLog.passed is null and sde.sde.TaskGridLog.TaskName='" + AppManager.GetInstance().TaskName + "'";
                    }
                    break;

                default:
                    continue;
                }
            }
        }
Esempio n. 6
0
        private static void ApplyDefinitionquery(IFeatureLayer pFL, string definition_query)
        {
            IFeatureLayerDefinition2 pDefFL = (IFeatureLayerDefinition2)pFL;

            pDefFL.DefinitionExpression = definition_query;
        }
Esempio n. 7
0
        public void Execute(ESRI.ArcGIS.esriSystem.IArray paramvalues, ESRI.ArcGIS.esriSystem.ITrackCancel TrackCancel, ESRI.ArcGIS.Geoprocessing.IGPEnvironmentManager envMgr, ESRI.ArcGIS.Geodatabase.IGPMessages message)
        {
            try
            {
                IGPUtilities3 gpUtilities3 = new GPUtilitiesClass();

                if (TrackCancel == null)
                {
                    TrackCancel = new CancelTrackerClass();
                }

                // find feature class inside the given feature dataset
                IGPParameter      osmFeatureDatasetParameter = paramvalues.get_Element(in_osmFeatureDatasetNumber) as IGPParameter;
                IDEFeatureDataset osmFeatureDataset          = gpUtilities3.UnpackGPValue(osmFeatureDatasetParameter) as IDEFeatureDataset;

                string osmPointFeatureClassString   = ((IDataElement)osmFeatureDataset).Name + "_osm_pt";
                string osmLineFeatureClassString    = ((IDataElement)osmFeatureDataset).Name + "_osm_ln";
                string osmPolygonFeatureClassString = ((IDataElement)osmFeatureDataset).Name + "_osm_ply";

                IFeatureClass osmPointFeatureClass   = gpUtilities3.OpenFeatureClassFromString(((IDataElement)osmFeatureDataset).CatalogPath + "/" + osmPointFeatureClassString);
                IFeatureClass osmLineFeatureClass    = gpUtilities3.OpenFeatureClassFromString(((IDataElement)osmFeatureDataset).CatalogPath + "/" + osmLineFeatureClassString);
                IFeatureClass osmPoylgonFeatureClass = gpUtilities3.OpenFeatureClassFromString(((IDataElement)osmFeatureDataset).CatalogPath + "/" + osmPolygonFeatureClassString);

                // open the specified layers holding the symbology and editing templates
                IGPParameter osmPointSymbolTemplateParameter = paramvalues.get_Element(in_osmPointLayerNumber) as IGPParameter;
                IGPValue     osmGPPointLayerValue            = gpUtilities3.UnpackGPValue(osmPointSymbolTemplateParameter);

                IGPParameter outputPointGPParameter  = paramvalues.get_Element(out_osmPointLayerNumber) as IGPParameter;
                IGPValue     outputPointLayerGPValue = gpUtilities3.UnpackGPValue(outputPointGPParameter);

                bool isLayerOnDisk = false;

                // create a clone of the source layer
                // we will then go ahead and adjust the data source (dataset) of the cloned layer
                IObjectCopy     objectCopy = new ObjectCopyClass();
                ICompositeLayer adjustedPointTemplateLayer = objectCopy.Copy(osmGPPointLayerValue) as ICompositeLayer;

                IGPGroupLayer osmPointGroupTemplateLayer = adjustedPointTemplateLayer as IGPGroupLayer;

                ICompositeLayer compositeLayer = gpUtilities3.Open((IGPValue)osmPointGroupTemplateLayer) as ICompositeLayer;
                //ICompositeLayer adjustedPointTemplateLayer = osmGPPointLayerValue as ICompositeLayer;
                //IGPGroupLayer osmPointGroupTemplateLayer = osmGPPointLayerValue as IGPGroupLayer;
                //IClone cloneSource = osmPointGroupTemplateLayer as IClone;
                //ICompositeLayer compositeLayer = m_gpUtilities3.Open((IGPValue)cloneSource.Clone()) as ICompositeLayer;

                if (compositeLayer == null)
                {
                    ILayerFactoryHelper layerFactoryHelper = new LayerFactoryHelperClass();
                    IFileName           layerFileName      = new FileNameClass();

                    layerFileName.Path = osmGPPointLayerValue.GetAsText();
                    IEnumLayer enumLayer = layerFactoryHelper.CreateLayersFromName((IName)layerFileName);
                    enumLayer.Reset();

                    compositeLayer = enumLayer.Next() as ICompositeLayer;

                    isLayerOnDisk = true;
                }

                IFeatureLayerDefinition2 featureLayerDefinition2 = null;
                ISQLSyntax sqlSyntax = null;

                IGPLayer adjustedPointGPLayer = null;

                if (compositeLayer != null)
                {
                    for (int layerIndex = 0; layerIndex < compositeLayer.Count; layerIndex++)
                    {
                        IFeatureLayer2 geoFeatureLayer = compositeLayer.get_Layer(layerIndex) as IFeatureLayer2;

                        if (geoFeatureLayer != null)
                        {
                            if (geoFeatureLayer.ShapeType == osmPointFeatureClass.ShapeType)
                            {
                                try
                                {
                                    ((IDataLayer2)geoFeatureLayer).Disconnect();
                                }
                                catch { }

                                ((IDataLayer2)geoFeatureLayer).DataSourceName = ((IDataset)osmPointFeatureClass).FullName;

                                ((IDataLayer2)geoFeatureLayer).Connect(((IDataset)osmPointFeatureClass).FullName);

                                featureLayerDefinition2 = geoFeatureLayer as IFeatureLayerDefinition2;
                                if (featureLayerDefinition2 != null)
                                {
                                    string queryDefinition = featureLayerDefinition2.DefinitionExpression;

                                    sqlSyntax = ((IDataset)osmPointFeatureClass).Workspace as ISQLSyntax;
                                    string delimiterIdentifier = sqlSyntax.GetSpecialCharacter(esriSQLSpecialCharacters.esriSQL_DelimitedIdentifierPrefix);

                                    if (String.IsNullOrEmpty(queryDefinition) == false)
                                    {
                                        string stringToReplace = queryDefinition.Substring(0, 1);
                                        queryDefinition = queryDefinition.Replace(stringToReplace, delimiterIdentifier);
                                    }

                                    featureLayerDefinition2.DefinitionExpression = queryDefinition;
                                }
                            }
                        }
                    }

                    adjustedPointGPLayer = gpUtilities3.MakeGPLayerFromLayer((ILayer)compositeLayer);

                    // save the newly adjusted layer information to disk
                    if (isLayerOnDisk == true)
                    {
                        ILayerFile pointLayerFile = new LayerFileClass();
                        if (pointLayerFile.get_IsPresent(outputPointLayerGPValue.GetAsText()))
                        {
                            try
                            {
                                File.Delete(outputPointLayerGPValue.GetAsText());
                            }
                            catch (Exception ex)
                            {
                                message.AddError(120041, ex.Message);
                                return;
                            }
                        }

                        pointLayerFile.New(outputPointLayerGPValue.GetAsText());

                        pointLayerFile.ReplaceContents((ILayer)compositeLayer);

                        pointLayerFile.Save();

                        adjustedPointGPLayer = gpUtilities3.MakeGPLayerFromLayer((ILayer)pointLayerFile.Layer);
                    }

                    //   IGPLayer adjustedPointGPLayer = gpUtilities3.MakeGPLayerFromLayer((ILayer)compositeLayer);
                    gpUtilities3.AddInternalLayer2((ILayer)compositeLayer, adjustedPointGPLayer);
                    gpUtilities3.PackGPValue((IGPValue)adjustedPointGPLayer, outputPointGPParameter);
                }


                isLayerOnDisk = false;

                IGPParameter osmLineSymbolTemplateParameter = paramvalues.get_Element(in_osmLineLayerNumber) as IGPParameter;
                IGPValue     osmGPLineLayerValue            = gpUtilities3.UnpackGPValue(osmLineSymbolTemplateParameter) as IGPValue;

                IGPParameter outputLineGPParameter  = paramvalues.get_Element(out_osmLineLayerNumber) as IGPParameter;
                IGPValue     outputLineLayerGPValue = gpUtilities3.UnpackGPValue(outputLineGPParameter);

                IGPValue adjustedLineTemplateLayer = objectCopy.Copy(osmGPLineLayerValue) as IGPValue;

                IGPGroupLayer osmLineGroupTemplateLayer = adjustedLineTemplateLayer as IGPGroupLayer;

                compositeLayer = gpUtilities3.Open((IGPValue)osmLineGroupTemplateLayer) as ICompositeLayer;

                if (compositeLayer == null)
                {
                    ILayerFactoryHelper layerFactoryHelper = new LayerFactoryHelperClass();
                    IFileName           layerFileName      = new FileNameClass();

                    layerFileName.Path = osmGPLineLayerValue.GetAsText();
                    IEnumLayer enumLayer = layerFactoryHelper.CreateLayersFromName((IName)layerFileName);
                    enumLayer.Reset();

                    compositeLayer = enumLayer.Next() as ICompositeLayer;

                    isLayerOnDisk = true;
                }


                if (compositeLayer != null)
                {
                    for (int layerIndex = 0; layerIndex < compositeLayer.Count; layerIndex++)
                    {
                        IFeatureLayer2 geoFeatureLayer = compositeLayer.get_Layer(layerIndex) as IFeatureLayer2;
                        if (geoFeatureLayer.ShapeType == osmLineFeatureClass.ShapeType)
                        {
                            try
                            {
                                ((IDataLayer2)geoFeatureLayer).Disconnect();
                            }
                            catch { }
                            ((IDataLayer2)geoFeatureLayer).DataSourceName = ((IDataset)osmLineFeatureClass).FullName;
                            ((IDataLayer2)geoFeatureLayer).Connect(((IDataset)osmLineFeatureClass).FullName);

                            featureLayerDefinition2 = geoFeatureLayer as IFeatureLayerDefinition2;
                            if (featureLayerDefinition2 != null)
                            {
                                string queryDefinition = featureLayerDefinition2.DefinitionExpression;

                                sqlSyntax = ((IDataset)osmLineFeatureClass).Workspace as ISQLSyntax;
                                string delimiterIdentifier = sqlSyntax.GetSpecialCharacter(esriSQLSpecialCharacters.esriSQL_DelimitedIdentifierPrefix);

                                if (string.IsNullOrEmpty(queryDefinition) == false)
                                {
                                    string stringToReplace = queryDefinition.Substring(0, 1);
                                    queryDefinition = queryDefinition.Replace(stringToReplace, delimiterIdentifier);
                                }

                                featureLayerDefinition2.DefinitionExpression = queryDefinition;
                            }
                        }
                    }

                    // save the newly adjusted layer information to disk
                    if (isLayerOnDisk == true)
                    {
                        ILayerFile lineLayerFile = new LayerFileClass();
                        if (lineLayerFile.get_IsPresent(outputLineLayerGPValue.GetAsText()))
                        {
                            try
                            {
                                File.Delete(outputLineLayerGPValue.GetAsText());
                            }
                            catch (Exception ex)
                            {
                                message.AddError(120042, ex.Message);
                                return;
                            }
                        }

                        lineLayerFile.New(outputLineLayerGPValue.GetAsText());

                        lineLayerFile.ReplaceContents((ILayer)compositeLayer);

                        lineLayerFile.Save();
                    }

                    IGPLayer adjustLineGPLayer = gpUtilities3.MakeGPLayerFromLayer((ILayer)compositeLayer);

                    gpUtilities3.AddInternalLayer2((ILayer)compositeLayer, adjustLineGPLayer);
                    gpUtilities3.PackGPValue((IGPValue)adjustLineGPLayer, outputLineGPParameter);
                }


                isLayerOnDisk = false;
                IGPParameter osmPolygonSymbolTemplateParameter = paramvalues.get_Element(in_osmPolygonLayerNumber) as IGPParameter;
                IGPValue     osmGPPolygonLayerValue            = gpUtilities3.UnpackGPValue(osmPolygonSymbolTemplateParameter);

                IGPParameter outputPolygonGPParameter  = paramvalues.get_Element(out_osmPolygonLayerNumber) as IGPParameter;
                IGPValue     outputPolygonLayerGPValue = gpUtilities3.UnpackGPValue(outputPolygonGPParameter);

                IGPValue adjustedPolygonTemplateLayer = objectCopy.Copy(osmGPPolygonLayerValue) as IGPValue;

                IGPGroupLayer osmPolygonGroupTemplateLayer = adjustedPolygonTemplateLayer as IGPGroupLayer;
                compositeLayer = gpUtilities3.Open((IGPValue)osmPolygonGroupTemplateLayer) as ICompositeLayer;

                if (compositeLayer == null)
                {
                    ILayerFactoryHelper layerFactoryHelper = new LayerFactoryHelperClass();
                    IFileName           layerFileName      = new FileNameClass();

                    layerFileName.Path = osmGPPolygonLayerValue.GetAsText();
                    IEnumLayer enumLayer = layerFactoryHelper.CreateLayersFromName((IName)layerFileName);
                    enumLayer.Reset();

                    compositeLayer = enumLayer.Next() as ICompositeLayer;

                    isLayerOnDisk = true;
                }

                if (compositeLayer != null)
                {
                    for (int layerIndex = 0; layerIndex < compositeLayer.Count; layerIndex++)
                    {
                        IFeatureLayer2 geoFeatureLayer = compositeLayer.get_Layer(layerIndex) as IFeatureLayer2;

                        if (geoFeatureLayer.ShapeType == osmPoylgonFeatureClass.ShapeType)
                        {
                            try
                            {
                                ((IDataLayer2)geoFeatureLayer).Disconnect();
                            }
                            catch { }
                            ((IDataLayer2)geoFeatureLayer).DataSourceName = ((IDataset)osmPoylgonFeatureClass).FullName;
                            ((IDataLayer2)geoFeatureLayer).Connect(((IDataset)osmPoylgonFeatureClass).FullName);

                            featureLayerDefinition2 = geoFeatureLayer as IFeatureLayerDefinition2;
                            if (featureLayerDefinition2 != null)
                            {
                                string queryDefinition = featureLayerDefinition2.DefinitionExpression;

                                sqlSyntax = ((IDataset)osmPoylgonFeatureClass).Workspace as ISQLSyntax;
                                string delimiterIdentifier = sqlSyntax.GetSpecialCharacter(esriSQLSpecialCharacters.esriSQL_DelimitedIdentifierPrefix);

                                if (String.IsNullOrEmpty(queryDefinition) == false)
                                {
                                    string stringToReplace = queryDefinition.Substring(0, 1);
                                    queryDefinition = queryDefinition.Replace(stringToReplace, delimiterIdentifier);
                                }

                                featureLayerDefinition2.DefinitionExpression = queryDefinition;
                            }
                        }
                    }

                    // save the newly adjusted layer information to disk
                    if (isLayerOnDisk == true)
                    {
                        ILayerFile polygonLayerFile = new LayerFileClass();
                        if (polygonLayerFile.get_IsPresent(outputPolygonLayerGPValue.GetAsText()))
                        {
                            try
                            {
                                File.Delete(outputPolygonLayerGPValue.GetAsText());
                            }
                            catch (Exception ex)
                            {
                                message.AddError(120043, ex.Message);
                                return;
                            }
                        }

                        polygonLayerFile.New(outputPolygonLayerGPValue.GetAsText());

                        polygonLayerFile.ReplaceContents((ILayer)compositeLayer);

                        polygonLayerFile.Save();
                    }

                    IGPLayer adjustedPolygonGPLayer = gpUtilities3.MakeGPLayerFromLayer((ILayer)compositeLayer);
                    gpUtilities3.AddInternalLayer2((ILayer)compositeLayer, adjustedPolygonGPLayer);

                    gpUtilities3.PackGPValue((IGPValue)adjustedPolygonGPLayer, outputPolygonGPParameter);
                }
            }
            catch (Exception ex)
            {
                message.AddError(-10, ex.Message);
            }
        }
Esempio n. 8
0
        private void DrawCCMaps()
        {
            m_intClassNumber = Convert.ToInt32(nudGCNClasses.Value);
            IFeatureClass pFClass = pFLayer.FeatureClass;

            //Determine Class Breaks for variable
            int intValueFldIdx = pFClass.FindField(strVarFldName);

            ITable       pTable       = (ITable)pFClass;
            IClassifyGEN pClassifyGEN = null;

            switch (cboGCClassify.Text)
            {
            case "Equal Interval":
                pClassifyGEN = new EqualIntervalClass();
                break;

            case "Geometrical Interval":
                pClassifyGEN = new GeometricalInterval();
                break;

            case "Natural Breaks":
                pClassifyGEN = new NaturalBreaksClass();
                break;

            case "Quantile":
                pClassifyGEN = new QuantileClass();
                break;

            case "StandardDeviation":
                pClassifyGEN = new StandardDeviationClass();
                break;

            default:
                pClassifyGEN = new NaturalBreaksClass();
                break;
            }


            ITableHistogram pTableHistogram = new BasicTableHistogramClass();

            pTableHistogram.Field = strVarFldName;
            pTableHistogram.Table = pTable;
            //IHistogram pHistogram = (IHistogram)pTableHistogram2;
            IBasicHistogram pHistogram = (IBasicHistogram)pTableHistogram;

            ////Not working in ArcGIS 10.5 022417 HK
            //ITableHistogram pTableHistogram = new TableHistogramClass();
            //pTableHistogram.Field = strVarFldName;
            //pTableHistogram.Table = pTable;
            //IHistogram pHistogram = (IHistogram)pTableHistogram;

            object xVals, frqs;

            pHistogram.GetHistogram(out xVals, out frqs);
            pClassifyGEN.Classify(xVals, frqs, m_intClassNumber);
            double[] cb = (double[])pClassifyGEN.ClassBreaks;

            //Class Determinations for vertical and horizontal axis

            if (m_VerticalBreaks == null)
            {
                pClassifyGEN          = new QuantileClass(); //Using Quatile
                pTableHistogram       = new BasicTableHistogramClass();
                pTableHistogram.Field = strVerConFldName;
                pTableHistogram.Table = pTable;
                pHistogram            = (IBasicHistogram)pTableHistogram;

                pHistogram.GetHistogram(out xVals, out frqs);
                pClassifyGEN.Classify(xVals, frqs, intVerCnt);
                m_VerticalBreaks = (double[])pClassifyGEN.ClassBreaks;
            }

            if (m_HorizontalBreaks == null)
            {
                pClassifyGEN          = new QuantileClass(); //Using Quatile
                pTableHistogram       = new BasicTableHistogramClass();
                pTableHistogram.Field = strHorConFldName;
                pTableHistogram.Table = pTable;
                pHistogram            = (IBasicHistogram)pTableHistogram;

                pHistogram.GetHistogram(out xVals, out frqs);
                pClassifyGEN.Classify(xVals, frqs, intHorCnt);
                m_HorizontalBreaks = (double[])pClassifyGEN.ClassBreaks;
            }

            //Create Renderer
            IClassBreaksRenderer pRender = new ClassBreaksRenderer();

            pRender.Field        = strVarFldName;
            pRender.BreakCount   = m_intClassNumber;
            pRender.MinimumBreak = cb[0];

            string strColorRamp = cboColorRamp.Text;

            IEnumColors pEnumColors = MultiPartColorRamp(strColorRamp, "CIE Lab", m_intClassNumber);

            pEnumColors.Reset();

            int[,] arrColors = new int[m_intClassNumber, 3];

            for (int k = 0; k < m_intClassNumber; k++)
            {
                IColor    pColor    = pEnumColors.Next();
                IRgbColor pRGBColor = new RgbColorClass();
                pRGBColor.RGB = pColor.RGB;

                arrColors[k, 0] = pRGBColor.Red;
                arrColors[k, 1] = pRGBColor.Green;
                arrColors[k, 2] = pRGBColor.Blue;
            }

            pEnumColors.Reset();
            IRgbColor pColorOutline = new RgbColor();

            //Can Change the color in here!
            pColorOutline = m_pSnippet.getRGB(picOutlineColor.BackColor.R, picOutlineColor.BackColor.G, picOutlineColor.BackColor.B);

            double dblGCOutlineSize = Convert.ToDouble(nudOutlinewidth.Value);

            ICartographicLineSymbol pOutLines = new CartographicLineSymbol();

            pOutLines.Width = dblGCOutlineSize;
            pOutLines.Color = (IColor)pColorOutline;

            //' use this interface to set dialog properties
            IClassBreaksUIProperties pUIProperties = (IClassBreaksUIProperties)pRender;

            pUIProperties.ColorRamp = "Custom";
            ISimpleFillSymbol pSimpleFillSym;

            pEnumColors.Reset();

            double dblAdding = Math.Pow(0.1, m_intRounding);

            for (int j = 0; j < m_intClassNumber; j++)
            {
                pRender.Break[j] = cb[j + 1];

                if (j == 0)
                {
                    pRender.Label[j] = Math.Round(cb[j], m_intRounding).ToString("N" + m_intRounding.ToString()) + " - " + Math.Round(cb[j + 1], 2).ToString("N" + m_intRounding.ToString());
                }
                else
                {
                    pRender.Label[j] = Math.Round(cb[j] + dblAdding, m_intRounding).ToString("N" + m_intRounding.ToString()) + " - " + Math.Round(cb[j + 1], 2).ToString("N" + m_intRounding.ToString());
                }

                pUIProperties.LowBreak[j] = cb[j];

                pSimpleFillSym = new SimpleFillSymbolClass();
                IRgbColor pRGBColor = m_pSnippet.getRGB(arrColors[j, 0], arrColors[j, 1], arrColors[j, 2]);
                pSimpleFillSym.Color   = (IColor)pRGBColor;
                pSimpleFillSym.Outline = pOutLines;
                pRender.Symbol[j]      = (ISymbol)pSimpleFillSym;
            }

            //Background Layer
            ISimpleRenderer   pSimpleRender = new SimpleRendererClass();
            ISimpleFillSymbol pBGSymbol     = new SimpleFillSymbolClass();

            pBGSymbol.Color = (IColor)m_pSnippet.getRGB(picBGColor.BackColor.R, picBGColor.BackColor.G, picBGColor.BackColor.B);

            ICartographicLineSymbol pBGOutLines = new CartographicLineSymbol();

            pBGOutLines.Width = 0;
            pBGOutLines.Color = m_pSnippet.getRGB(255, 255, 255);
            pBGSymbol.Outline = pBGOutLines;

            pSimpleRender.Symbol = (ISymbol)pBGSymbol;

            IFeatureLayer pflBG = new FeatureLayerClass();

            pflBG.FeatureClass = pFClass;

            IGeoFeatureLayer pGeoBG = (IGeoFeatureLayer)pflBG;

            pGeoBG.Renderer   = (IFeatureRenderer)pSimpleRender;
            pGeoBG.Selectable = false;

            //Feature Count for each map
            m_intsFeatureCnts = new int[intVerCnt * intHorCnt];

            int l = 0;

            for (int i = 0; i < intVerCnt; i++)
            {
                for (int j = 0; j < intHorCnt; j++)
                {
                    IFeatureLayer pflOutput = new FeatureLayerClass();
                    pflOutput.FeatureClass = pFClass;

                    IGeoFeatureLayer pGeofeatureLayer = (IGeoFeatureLayer)pflOutput;

                    pGeofeatureLayer.Renderer = (IFeatureRenderer)pRender;

                    IFeatureLayerDefinition2 pFDefinition = (IFeatureLayerDefinition2)pGeofeatureLayer;
                    string strWhereClause = null;

                    if (i == 0 && j == 0)
                    {
                        strWhereClause = strVerConFldName + " >= " + m_VerticalBreaks[i].ToString() + " AND " +
                                         strVerConFldName + " <= " + m_VerticalBreaks[i + 1].ToString() + " AND " +
                                         strHorConFldName + " >= " + m_HorizontalBreaks[j].ToString() + " AND " +
                                         strHorConFldName + " <= " + m_HorizontalBreaks[j + 1].ToString();
                    }
                    else if (i != 0 && j == 0)
                    {
                        strWhereClause = strVerConFldName + " > " + m_VerticalBreaks[i].ToString() + " AND " +
                                         strVerConFldName + " <= " + m_VerticalBreaks[i + 1].ToString() + " AND " +
                                         strHorConFldName + " >= " + m_HorizontalBreaks[j].ToString() + " AND " +
                                         strHorConFldName + " <= " + m_HorizontalBreaks[j + 1].ToString();
                    }
                    else if (i == 0 && j != 0)
                    {
                        strWhereClause = strVerConFldName + " >= " + m_VerticalBreaks[i].ToString() + " AND " +
                                         strVerConFldName + " <= " + m_VerticalBreaks[i + 1].ToString() + " AND " +
                                         strHorConFldName + " > " + m_HorizontalBreaks[j].ToString() + " AND " +
                                         strHorConFldName + " <= " + m_HorizontalBreaks[j + 1].ToString();
                    }
                    else
                    {
                        strWhereClause = strVerConFldName + " > " + m_VerticalBreaks[i].ToString() + " AND " +
                                         strVerConFldName + " <= " + m_VerticalBreaks[i + 1].ToString() + " AND " +
                                         strHorConFldName + " > " + m_HorizontalBreaks[j].ToString() + " AND " +
                                         strHorConFldName + " <= " + m_HorizontalBreaks[j + 1].ToString();
                    }

                    pFDefinition.DefinitionExpression = strWhereClause;

                    IQueryFilter pQfilter = new QueryFilterClass();
                    pQfilter.WhereClause = strWhereClause;

                    m_intsFeatureCnts[l] = pGeofeatureLayer.FeatureClass.FeatureCount(pQfilter);
                    m_axMapControls[l].ActiveView.FocusMap.ClearLayers();
                    m_axMapControls[l].ActiveView.FocusMap.AddLayer(pGeoBG);
                    m_axMapControls[l].ActiveView.FocusMap.AddLayer(pGeofeatureLayer);
                    m_axMapControls[l].ActiveView.Extent = m_axMapControls[l].ActiveView.FullExtent;
                    m_axMapControls[l].ActiveView.Refresh();
                    l++;
                }
            }

            lblVariable.Text = "Selected Variable: " + strVarFldName;
            UpdateRange(lvSymbol, m_intClassNumber, cb, arrColors, m_intRounding);

            if (m_blnAddBoxes)
            {
                UpdateTextBoxes();
            }
            else
            {
                AddTextBoxes();
            }

            UpdateLabels();
            UpdateHorVerLabels();
        }
Esempio n. 9
0
        private void btnStart_Click(object sender, EventArgs e)
        {
            try
            {
                string strLayerName    = cboSourceLayer.Text;
                string strFieldName    = cboWeight.Text;
                int    intFlickerRate  = Convert.ToInt32(Convert.ToDouble(nudFlikerRate.Value) * 1000);
                short  intTransparency = Convert.ToInt16(nudTransparency.Value);
                btnStart.Text = "Hit Esc to Stop";

                if (strLayerName == "" || strFieldName == "")
                {
                    MessageBox.Show("Please select layer or field");
                    return;
                }
                if (strFieldName == "None")
                {
                    int    intLIndex = pSnippet.GetIndexNumberFromLayerName(pActiveView, strLayerName);
                    ILayer pLayer    = mForm.axMapControl1.get_Layer(intLIndex);

                    pFLayer = pLayer as IFeatureLayer;
                    string strOIDFieldNM = pFLayer.FeatureClass.OIDFieldName;

                    int intFeatureCounts = pFLayer.FeatureClass.FeatureCount(null);

                    pTrackCancel = new CancelTrackerClass();
                    pTrackCancel.CancelOnClick    = false;
                    pTrackCancel.CancelOnKeyPress = true;

                    ILayerEffects pLayerEffect = (ILayerEffects)pFLayer;
                    pLayerEffect.Transparency = intTransparency;
                    //pActiveView.Refresh();

                    while (pTrackCancel.Continue())
                    {
                        IFeatureLayerDefinition2 pFDefinition = (IFeatureLayerDefinition2)pFLayer;
                        pFDefinition.DefinitionExpression = strOIDFieldNM + " < 0";
                        pActiveView.Refresh();
                        System.Threading.Thread.Sleep(intFlickerRate);
                        if (pTrackCancel.Continue() == false)
                        {
                            pFDefinition.DefinitionExpression = strOIDFieldNM + " >= 0";
                            pActiveView.Refresh();
                            btnStart.Text             = "Start";
                            pLayerEffect.Transparency = 0;
                            break;
                        }
                        pFDefinition.DefinitionExpression = strOIDFieldNM + " >= 0";
                        pActiveView.Refresh();
                        System.Threading.Thread.Sleep(intFlickerRate);
                        if (pTrackCancel.Continue() == false)
                        {
                            pLayerEffect.Transparency = 0;
                            btnStart.Text             = "Start";
                            break;
                        }
                    }
                }
                else
                {
                    if (strFieldName == "")
                    {
                        return;
                    }
                    int      intNClasses = Convert.ToInt32(nudCoNClasses.Value);
                    double[] cb          = fnClassification(pFLayer, nudCoNClasses.Value, cboWeight.Text, cboCoClassify.Text);
                    fnBlinking(strLayerName, strFieldName, intFlickerRate, intNClasses, intTransparency, cb);
                }
            }
            catch (Exception ex)
            {
                frmErrorLog pfrmErrorLog = new frmErrorLog(); pfrmErrorLog.ex = ex; pfrmErrorLog.ShowDialog();
                return;
            }
        }
Esempio n. 10
0
        /// <summary>
        /// 加载历史数据
        /// </summary>
        /// <param name="vData"></param>
        /// <remarks></remarks>
        private void AddHisLayer(object vData, string sfunLR, Collection <object> pHisLyrColl)
        {
            string dTimeStamp  = string.Empty;
            string strName     = null;
            string sHTableName = null;
            string sName       = null;
            int    i           = 0;

            IFeatureWorkspace pFeatureWorkspace = default(IFeatureWorkspace);
            IFeatureClass     pFeatCls          = default(IFeatureClass);
            //Dim pFeatLayer As IFeatureLayer
            IFeatureLayer pFeatLyr     = default(IFeatureLayer);
            string        strCondition = null;

            if (ClsHistory.WorkSpace == null)
            {
                return;
            }
            pFeatureWorkspace = ClsHistory.WorkSpace as IFeatureWorkspace;
            if (pHisLyrColl.Count == 0)
            {
                if (GetHisLayerColl() == false)
                {
                    return;
                }
            }

            try
            {
                if (m_sMorTSelected == "0")
                {
                    m_pHistoricalVersion = m_pHistoricalWorkspace.FindHistoricalVersionByName(vData.ToString());
                    dTimeStamp           = String.Format(m_pHistoricalVersion.TimeStamp.ToString(), "yyyy-MM-dd HH:mm:ss");
                    //格式化时间
                }
                else if (m_sMorTSelected == "1")
                {
                    dTimeStamp = String.Format(vData.ToString(), "yyyy-MM-dd HH:mm:ss");
                }

                //FrmProgressBar progressBar = new FrmProgressBar(true);
                //progressBar.SetMax(pHisLyrColl.Count);
                //progressBar.SetStep(1);
                //progressBar.ShowNew();
                //progressBar.SetInfo("正在加载历史图层...");
                for (i = 0; i < pHisLyrColl.Count; i++)
                {
                    pFeatLyr = pHisLyrColl[i] as IFeatureLayer;
                    strName  = ((IDataset)pFeatLyr.FeatureClass).Name;

                    //查找对应的历史图层名_H%
                    try
                    {
                        sHTableName = ClsHistory.GetTableNameRec(strName, ClsHistory.Connection);
                        if (string.IsNullOrEmpty(sHTableName))
                        {
                            MessageBoxEx.Show("不存在'" + strName + "'图层的历史数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            //progressBar.PerformOneStep();
                            continue;
                        }
                    }
                    catch (Exception)
                    {
                        //progressBar.PerformOneStep();
                        continue;
                    }

                    //按时间戳进行点查询
                    strCondition = "GDB_FROM_DATE <= TO_DATE('" + Convert.ToString(dTimeStamp) + "','yyyy-MM-dd HH24:mi:ss') AND GDB_TO_DATE > TO_DATE('" + Convert.ToString(dTimeStamp) + "','yyyy-MM-dd HH24:mi:ss')";

                    IQueryFilter             pFilter       = default(IQueryFilter);
                    IFeatureLayer            pTmpLayer     = default(IFeatureLayer);
                    IFeatureLayer            pNewFeatLyr   = default(IFeatureLayer);
                    IFeatureLayerDefinition2 pFeatLayerDef = default(IFeatureLayerDefinition2);
                    IFeatureSelection        pFeatSel      = default(IFeatureSelection);

                    pFilter             = new QueryFilter();
                    pFilter.SubFields   = "*";
                    pFilter.WhereClause = strCondition;

                    pFeatCls  = pFeatureWorkspace.OpenFeatureClass(sHTableName);
                    pTmpLayer = new FeatureLayer();
                    pTmpLayer.FeatureClass = pFeatCls;
                    pFeatSel = pTmpLayer as IFeatureSelection;
                    pFeatSel.SelectFeatures(pFilter, esriSelectionResultEnum.esriSelectionResultNew, false);
                    pFeatLayerDef = pTmpLayer as IFeatureLayerDefinition2;

                    pFeatLayerDef.DefinitionExpression = strCondition;

                    //IFields fields = pTmpLayer.FeatureClass.Fields;
                    //int indext = fields.FindField("GDB_FROM_DATE");

                    //object str = pTmpLayer.FeatureClass.GetFeature(1).get_Value(indext);

                    //string  str=pTmpLayer.FeatureClass.get
                    //对历史图层命名
                    if (m_sMorTSelected == "0")
                    {
                        sName = strName + "[" + vData + "]";
                    }
                    else if (m_sMorTSelected == "1")
                    {
                        sName = strName + "[" + Convert.ToString(dTimeStamp) + "]";
                    }
                    else
                    {
                        //progressBar.CloseBar();
                        return;
                    }

                    //按照选择集生成新的图层pNewFeatLyr
                    pNewFeatLyr = pFeatLayerDef.CreateSelectionLayer(sName, true, "", "");

                    //添加历史图层到对应的MapCtl中
                    if (sfunLR == "0")
                    {
                        if (this.MapLeft.Map != null)
                        {
                            if (LayerExist((Map)this.MapLeft.Map, sName) == false)
                            {
                                //MapLeft.ClearLayers();
                                MapLeft.Map.AddLayer(pNewFeatLyr);
                            }
                        }
                    }
                    else if (sfunLR == "1")
                    {
                        if (this.MapRight.Map != null)
                        {
                            if (LayerExist((Map)this.MapRight.Map, sName) == false)
                            {
                                //MapRight.ClearLayers();
                                MapRight.Map.AddLayer(pNewFeatLyr);
                            }
                        }
                    }
                    //progressBar.PerformOneStep();
                }
            }
            catch (Exception)
            {
                //g_ErrorHandle.HandleError(true, "错误文件名:" + "WHFHistory_frmHisDoubView" + ";错误过程名:AddHisLayer" + ";错误行数: " + g_ErrorHandle.GetErrorLineNumberString(Erl()), Err().Number, Err().Source, Err().Description);
            }
            finally
            {
                //if (frmCnProgress.IsDisposed == false)
                //    frmCnProgress.Close();
            }
        }