現象:點 Shapefile 正常顯示,基於屬性字段進行單值渲染 (UniqueValueRenderer) 後,地圖變空白。
截圖顯示渲染配置中:
- C 類水平、B 類水平使用 **面符號** (SimpleFillSymbol)。
- 但原始圖層為 **點圖層** (PointShp)。
SimpleMarkerSymbol、CharacterMarkerSymbol、PictureMarkerSymbol)。FillSymbol) 僅適用於面幾何 (Polygon),套用到點幾何無渲染輸出 → 空白。IGeoFeatureLayer geoLayer = (IGeoFeatureLayer)layer;
esriGeometryType type = geoLayer.FeatureClass.ShapeType; // 應為 esriGeometryPointIUniqueValueRenderer uvRenderer = new UniqueValueRendererClass();
uvRenderer.FieldCount = 1;
uvRenderer.set_Field(0, "WaterLevelClass"); // 渲染字段
// 為每個類別創建點符號
ISimpleMarkerSymbol markerA = new SimpleMarkerSymbolClass();
markerA.Style = esriSimpleMarkerStyle.esriSMSCircle;
markerA.Color = GetRGBColor(255, 0, 0); // 紅色
markerA.Size = 10;
ISimpleMarkerSymbol markerB = new SimpleMarkerSymbolClass();
// ... 配置 B 類符號
uvRenderer.AddValue("A", "", markerA);
uvRenderer.AddValue("B", "", markerB);
// ...
geoLayer.Renderer = (IFeatureRenderer)uvRenderer;
activeView.PartialRefresh(esriViewDrawPhase.esriViewDrawGeography, null, null);
AddValue 的值與數據實際值不一致 (如數據為 "1","2" 但代碼用 "A","B")。PartialRefresh 或 Refresh 更新視圖。ILayer.Visible = false) 或被其他圖層遮擋。核心修正:**點圖層配點符號,面圖層配面符號,線圖層配線符號。** 符號類型必須與幾何類型嚴格對應。