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; }
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; } } }
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 { } }
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(); }