有时候需要根据外部关联表格的某一个字段的值来符号化一个图层,例如,有一个行政区的图层,它和一个属性表格关联,这个表格中记录有行政区的属性,比如“人口”,现我们需要根据人口值来符号化每一个要素。因为图层和属性表格不在同一个表格中,因此,需要将它们“Join”起来,保存在内存中,以便符号化图层的时候能读取到关联表格的字段值。这里需要注意的是取字段的时候要注明表格名称,如iField = pFields.FindField("tract_pop.POPULATION")
过程描述
Private Sub CreateAndApplyUVRenderer()
Dim pDpyRC As IDisplayRelationshipClass'内存关联类
Set pDpyRC = JionToTable(0)
Dim pTable As ITable
Set pTable = pDpyRC
Dim pMap As IMap
Set pMap = axMapControl.Map
Dim pLayer As ILayer
Set pLayer = pMap.Layer(0)
Dim pFLayer As IFeatureLayer
Set pFLayer = pLayer
Dim pLyr As IGeoFeatureLayer
Set pLyr = pFLayer
Dim pFeatCls As IFeatureClass
Set pFeatCls = pFLayer.FeatureClass
Dim pQueryFilter As IQueryFilter
Set pQueryFilter = New QueryFilter 'empty supports: SELECT *
Dim pFeatCursor As IFeatureCursor
Set pFeatCursor = pFeatCls.Search(pQueryFilter, False)
Dim pCursor As ICursor
Set pCursor = pTable.Search(pQueryFilter, False)
'** Make the color ramp we will use for the symbols in the renderer
Dim rx As IRandomColorRamp
Set rx = New RandomColorRamp
rx.MinSaturation = 20
rx.MaxSaturation = 40
rx.MinValue = 85
rx.MaxValue = 100
rx.StartHue = 76
rx.EndHue = 188
rx.UseSeed = True
rx.Seed = 43
'** Make the renderer
Dim pRender As IUniqueValueRenderer, n As Long
Set pRender = New UniqueValueRenderer
Dim symd As ISimpleFillSymbol
Set symd = New SimpleFillSymbol
symd.Style = esriSFSSolid
symd.Outline.Width = 0.4
'** These properties should be set prior to adding values
pRender.FieldCount = 1
pRender.Field(0) = "POPULATION"
pRender.DefaultSymbol = symd
pRender.UseDefaultSymbol = True
'Dim pFeat As IFeature
'n = pFeatCls.FeatureCount(pQueryFilter)
Dim pRow As IRow
n = pTable
(本文已被浏览 次)