Delphi ArcEngine 创建点密度专题方法


function DotDensityRenderer(pLayer: ILayer; sField: string; iDotSize: Integer; pRgbColor: IRgbColor; dDotValue:  Double): Boolean;

//参数说明 ,按顺序 指定的图层,字段  ,点大小,颜色,每个点代表的值
var
   pGeoLayer: IGeoFeatureLayer;
   pRenderer: IDotDensityRenderer;
   pMarkerSymbol: ISimpleMarkerSymbol;
   pRendererFields: IRendererFields;
   pDotDensitySymbol: IDotDensityFillSymbol;

   pSymbolArray: ISymbolArray;
begin
   //创建点密度渲染对象
   pRenderer := CoDotDensityRenderer.Create as IDotDensityRenderer;
   pRendererFields := pRenderer as IRendererFields;

   //创建点密度符号
   pDotDensitySymbol := CoDotDensityFillSymbol.Create as IDotDensityFillSymbol;
   pDotDensitySymbol.DotSize := iDotSize;
   pDotDensitySymbol.BackgroundColor := pRgbColor;

   //创建点符号,用于点密度渲染
   pMarkerSymbol := CoSimpleMarkerSymbol.Create as ISimpleMarkerSymbol;
   pMarkerSymbol.Color := getRGB(0, 0, 255, 255);
   pMarkerSymbol.Style := esriSMSCircle;

   pSymbolArray := pDotDensitySymbol as ISymbolArray;
   pSymbolArray.AddSymbol(pMarkerSymbol as ISymbol);

   pRenderer.DotDensitySymbol := pDotDensitySymbol;
   pRenderer.DotValue := dDotValue;
   pRenderer.CreateLegend;

   if pRenderer <> nil then
   begin
      pGeoLayer := pLayer as IGeoFeatureLayer;
      pGeoLayer.Renderer := pRenderer as IFeatureRenderer;
      Result := True;
   end
   else
   begin
      Result := False;
   end;
end;

posted on 2009-03-21 12:27  知真道  阅读(463)  评论(0编辑  收藏  举报