Exemple #1
0
        public void Apply()
        {
            IObjectCopy copy = new ObjectCopyClass();
            IProportionalSymbolRenderer renderer =
                copy.Copy(this.iproportionalSymbolRenderer_0) as IProportionalSymbolRenderer;

            renderer.CreateLegendSymbols();
            this.igeoFeatureLayer_0.Renderer = renderer as IFeatureRenderer;
        }
		private IFeatureCursor SortData(IFeatureCursor pCursor, ITrackCancel pTrackCancel)
		{
			// sort in descending by value
			ITable pTable = null;
			pTable = m_pFeatureClass as ITable;

			ITableSort pTableSort = null;
			pTableSort = new TableSort();
			pTableSort.Table = pTable;
			pTableSort.Cursor = pCursor as ICursor;

			//set up the query filter.
			IQueryFilter pQF = null;
			pQF = new QueryFilter();
			pQF.SubFields = "*";
			pQF.WhereClause = m_pQueryFilter.WhereClause;
			pTableSort.QueryFilter = pQF;

			IProportionalSymbolRenderer pPSRend = null;
      pPSRend = m_pSizeRend as IProportionalSymbolRenderer;
			string strValueField = null;
			strValueField = pPSRend.Field;
			pTableSort.Fields = strValueField;
			pTableSort.set_Ascending(strValueField, false);

			IDataNormalization pDataNorm = null;
            pDataNorm = pPSRend as IDataNormalization;
			if (pDataNorm.NormalizationType == esriDataNormalization.esriNormalizeByField)
			{
				// comparison is not simple comparison of field values, use callback to do custom compare

				// get normalization field and add to table sort
				string strFields = "";
				strFields = strFields + strValueField;
				string strNormField = null;
				strNormField = pDataNorm.NormalizationField;
				strFields = strFields + ",";
				strFields = strFields + strNormField;
				pTableSort.Fields = strFields;
				pTableSort.set_Ascending(strNormField, false);

				// create new custom table call sort object and connect to the TableSort object
				ITableSortCallBack pTableSortCallBack = null;
				pTableSortCallBack = new SortCallBack(pTable.Fields.FindField(strValueField), pTable.Fields.FindField(strNormField));
				pTableSort.Compare = pTableSortCallBack;
			}

			// call the sort
			pTableSort.Sort(pTrackCancel);

			// retrieve the sorted rows
			IFeatureCursor pSortedCursor = null;
			pSortedCursor = pTableSort.Rows as IFeatureCursor;

			return pSortedCursor;
		}
Exemple #3
0
 private void method_1()
 {
     if (this.igeoFeatureLayer_0 == null)
     {
         this.iproportionalSymbolRenderer_0 = null;
     }
     else
     {
         IProportionalSymbolRenderer pInObject = this.igeoFeatureLayer_0.Renderer as IProportionalSymbolRenderer;
         if (pInObject == null)
         {
             if (this.iproportionalSymbolRenderer_0 == null)
             {
                 this.iproportionalSymbolRenderer_0                      = new ProportionalSymbolRendererClass();
                 this.iproportionalSymbolRenderer_0.MinSymbol            = this.method_5();
                 this.iproportionalSymbolRenderer_0.LegendSymbolCount    = 3;
                 this.iproportionalSymbolRenderer_0.FlanneryCompensation = false;
                 this.iproportionalSymbolRenderer_0.ValueUnit            = esriUnits.esriUnknownUnits;
                 this.iproportionalSymbolRenderer_0.ValueRepresentation  =
                     esriValueRepresentations.esriValueRepUnknown;
                 this.iproportionalSymbolRenderer_0.Field = "";
                 (this.iproportionalSymbolRenderer_0 as IDataNormalization).NormalizationField = "";
                 (this.iproportionalSymbolRenderer_0 as IDataNormalization).NormalizationType  =
                     esriDataNormalization.esriNormalizeByNothing;
                 if (this.igeoFeatureLayer_0.FeatureClass.ShapeType == esriGeometryType.esriGeometryPolygon)
                 {
                     IFillSymbol symbol = new SimpleFillSymbolClass
                     {
                         Color = this.method_3(23)
                     };
                     this.iproportionalSymbolRenderer_0.BackgroundSymbol = symbol;
                 }
             }
         }
         else
         {
             IObjectCopy copy = new ObjectCopyClass();
             this.iproportionalSymbolRenderer_0 = copy.Copy(pInObject) as IProportionalSymbolRenderer;
         }
     }
 }
Exemple #4
0
        private void Renderer()
        {
            IGeoFeatureLayer pGeoFeatureL = (IGeoFeatureLayer)layer2Symbolize;
            IFeatureClass    featureClass = pGeoFeatureL.FeatureClass;

            //找出rendererField在字段中的编号
            int lfieldNumber = featureClass.FindField(strRendererField);

            if (lfieldNumber == -1)
            {
                MessageBox.Show("Can't find field called " + strRendererField);
                return;
            }
            IProportionalSymbolRenderer renderer = CreateRenderer();

            if (renderer == null)
            {
                return;
            }
            pGeoFeatureL.Renderer = (IFeatureRenderer)renderer;
            m_activeView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, m_activeView.Extent);
        }
		public void Draw(IFeatureCursor cursor, esriDrawPhase DrawPhase, IDisplay Display, ITrackCancel trackCancel)
		{
			string ActiveErrorHandler = null;

	try
	{
			// loop through and draw each feature

			IFeature pFeat = null;
			IFeatureRenderer pRend = null;

			bool bContinue = false;

			// do not draw features if no display
			if (Display == null)
				return;

			// we can't draw without somewhere to get our base symbols from
			if (m_pMainRend == null)
				return;

			if (m_pSizeRend != null)
			{
				// size varies
				if (m_ShapeType == esriGeometryType.esriGeometryPoint | m_ShapeType == esriGeometryType.esriGeometryPolyline)
				{
					if (DrawPhase == esriDrawPhase.esriDPGeography)
					{
						// draw symbols in order from large to small
						DrawSymbolsInOrder(cursor, DrawPhase, Display, trackCancel);
					}
				}
				else if (m_ShapeType == esriGeometryType.esriGeometryPolygon)
				{
					if (DrawPhase == esriDrawPhase.esriDPAnnotation)
					{
						// draw primary symbology from large to small
						DrawSymbolsInOrder(cursor, DrawPhase, Display, trackCancel);
					}
					else if (DrawPhase == esriDrawPhase.esriDPGeography)
					{
						// draw background symbology
						pFeat = cursor.NextFeature();
						bContinue = true;

						// while there are still more features and drawing has not been cancelled
                        IFillSymbol pBackFillSym;

                        
						while ((pFeat != null) & (bContinue == true))
						{
							// draw the feature
                            IFeatureDraw pFeatDraw = pFeat as IFeatureDraw;
							if (m_pSizeRend is IClassBreaksRenderer)
							{
                                IClassBreaksRenderer pCBRend = m_pSizeRend as IClassBreaksRenderer;
								pBackFillSym = pCBRend.BackgroundSymbol;
							}
							else
							{
                                IProportionalSymbolRenderer pPropRend = m_pSizeRend as IProportionalSymbolRenderer;
								pBackFillSym = pPropRend.BackgroundSymbol;
							}
							Display.SetSymbol(pBackFillSym as ISymbol);

              //implementation of IExportSupport
              BeginFeature(pFeat, Display);
              
							pFeatDraw.Draw(DrawPhase, Display, pBackFillSym as ISymbol, true, null, esriDrawStyle.esriDSNormal);

              //implementation of IExportSupport
							GenerateExportInfo(pFeat, Display);
							EndFeature(Display);
							
							pFeat = cursor.NextFeature();
              if (trackCancel != null)
                bContinue = trackCancel.Continue();
						}
					}
					else
					{
                        Marshal.ThrowExceptionForHR(147500037); //E_FAIL
					}
				}

			}
			else
			{
				// size does not vary
				if (DrawPhase != esriDrawPhase.esriDPGeography)
				{
                    Marshal.ThrowExceptionForHR(147500037); //E_FAIL
				}
				else
					DrawSymbols(cursor, DrawPhase, Display, trackCancel);
			}

}

catch
{
}
		}
Exemple #6
0
        public void processFeatureLayer(ILayer lyr)
        {
            type = "Vektor";
            fillLayerProps(lyr);
            fillDatalayerProps(lyr);
            IFeatureLayer flyr = lyr as IFeatureLayer;

            fillDefQueryProps(flyr);
            processJoins(flyr);
            processRelates(flyr);

            IGeoFeatureLayer gflyr = flyr as IGeoFeatureLayer;

            if (gflyr.DisplayAnnotation == true)
            {
                IAnnotateLayerPropertiesCollection labelPropsColl = gflyr.AnnotationProperties;
                for (int collIndex = 0; collIndex < labelPropsColl.Count; collIndex++)
                {
                    IAnnotateLayerProperties annoLayerProps;
                    IElementCollection       elCol1;
                    IElementCollection       elCol2;
                    labelPropsColl.QueryItem(collIndex, out annoLayerProps, out elCol1, out elCol2);
                    string sql = annoLayerProps.WhereClause;
                    ILabelEngineLayerProperties2 labelEngineProps = (ILabelEngineLayerProperties2)annoLayerProps;
                    string expr = labelEngineProps.Expression;
                    this.label = this.label + sql + "?" + expr + "/";
                }
            }
            this.label = this.label.TrimEnd('/');

            IFeatureRenderer rend = gflyr.Renderer;

            if (rend is IUniqueValueRenderer)
            {
                string felder          = "";
                IUniqueValueRenderer u = rend as IUniqueValueRenderer;
                for (int i = 0; i < u.FieldCount; i++)
                {
                    felder = felder + u.get_Field(i) + "/";
                }
                symbfields = felder.TrimEnd('/') + " (UniqueValueRenderer)";
            }
            else if (rend is IProportionalSymbolRenderer)
            {
                IProportionalSymbolRenderer prop = rend as IProportionalSymbolRenderer;
                symbfields = prop.Field + " (ProportionalSymbolRenderer)";
            }
            else if (rend is IClassBreaksRenderer)
            {
                IClassBreaksRenderer cl = rend as IClassBreaksRenderer;
                symbfields = cl.Field + " (ClassBreaksRenderer)";;
            }
            else if (rend is ISimpleRenderer)
            {
                symbfields = "kein Feld (SimpleRenderer)";
            }
            else
            {
                symbfields = "unbekannter Renderer";
            }
        }
 private static void RandomizeMarkerColor(IProportionalSymbolRenderer renderer)
 {
     var symbol = renderer.MinSymbol as IMarkerSymbol;
     if (symbol != null)
     {
         symbol.Color = RandomColor();
         renderer.MinSymbol = (ISymbol) symbol;
     }
     renderer.CreateLegendSymbols();
 }