You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
741 lines
32 KiB
741 lines
32 KiB
|
|
using ESRI.ArcGIS.Carto; |
|
using ESRI.ArcGIS.Display; |
|
using ESRI.ArcGIS.esriSystem; |
|
using ESRI.ArcGIS.Geodatabase; |
|
using ESRI.ArcGIS.Geometry; |
|
using KGIS.Plugin.LayerProperty.Enum; |
|
using KGIS.Plugin.LayerProperty.Interface; |
|
using KGIS.Plugin.LayerProperty.View; |
|
using System; |
|
using System.Collections; |
|
using System.Collections.Generic; |
|
using System.Data; |
|
using System.Drawing; |
|
using System.Text; |
|
using System.Windows.Forms; |
|
|
|
namespace KGIS.Plugin.LayerProperty.Utils |
|
{ |
|
internal class RenderUtil |
|
{ |
|
public delegate void LayerRenderDescriptionDelegate(string desc); |
|
private const string CONST_SYMBOL = "F_Symbol"; |
|
private const string CONST_VALUE = "F_Value"; |
|
private const string CONST_LABEL = "F_Label"; |
|
private const string CONST_BITMAP = "F_BITMAP"; |
|
private static FormSymbolSelector frmSymbolSelector; |
|
private static IUIPlugIn symbolSelector; |
|
private static FormGalleryPathSelector frmGalleryPathSelector; |
|
private static KGIS.Framework.Utils.Dialog.OpenFileDialog openFileDialog; |
|
public static event RenderUtil.LayerRenderDescriptionDelegate LayerRenderDescription; |
|
internal static IDoStyleGalleryItem OpenStyleSelector(esriGeometryType GeometryType) |
|
{ |
|
try |
|
{ |
|
if (RenderUtil.frmSymbolSelector == null) |
|
{ |
|
RenderUtil.frmSymbolSelector = new FormSymbolSelector(); |
|
RenderUtil.symbolSelector = RenderUtil.frmSymbolSelector; |
|
//RenderUtil.symbolSelector.RDBHelper = RdbUtil.RDBHelper; |
|
//RenderUtil.symbolSelector.TraceHandler = Util.TraceHandler; |
|
//RenderUtil.symbolSelector.Log = Util.Log; |
|
RenderUtil.frmSymbolSelector.Init(); |
|
} |
|
switch (GeometryType) |
|
{ |
|
case esriGeometryType.esriGeometryPoint: |
|
RenderUtil.frmSymbolSelector.Init(esriStyleClass.MarkerSymbols); |
|
break; |
|
case esriGeometryType.esriGeometryPolyline: |
|
RenderUtil.frmSymbolSelector.Init(esriStyleClass.LineSymbols); |
|
break; |
|
case esriGeometryType.esriGeometryPolygon: |
|
RenderUtil.frmSymbolSelector.Init(esriStyleClass.FillSymbols); |
|
break; |
|
} |
|
if (RenderUtil.frmSymbolSelector.ShowDialog() == DialogResult.OK) |
|
{ |
|
return RenderUtil.frmSymbolSelector.DoStyleGalleryItem; |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
//RdbUtil.AddException(ex); |
|
} |
|
return null; |
|
} |
|
internal static object OpenStyleSelector(esriGeometryType GeometryType, ISymbol symbol) |
|
{ |
|
try |
|
{ |
|
if (RenderUtil.frmSymbolSelector == null) |
|
{ |
|
RenderUtil.frmSymbolSelector = new FormSymbolSelector(); |
|
RenderUtil.symbolSelector = RenderUtil.frmSymbolSelector; |
|
try |
|
{ |
|
//RenderUtil.symbolSelector.RDBHelper = RdbUtil.RDBHelper; |
|
//RenderUtil.symbolSelector.TraceHandler = Util.TraceHandler; |
|
//RenderUtil.symbolSelector.Log = Util.Log; |
|
} |
|
catch |
|
{ |
|
} |
|
RenderUtil.frmSymbolSelector.Init(); |
|
} |
|
switch (GeometryType) |
|
{ |
|
case esriGeometryType.esriGeometryPoint: |
|
RenderUtil.frmSymbolSelector.Init(esriStyleClass.MarkerSymbols, ref symbol); |
|
break; |
|
case esriGeometryType.esriGeometryPolyline: |
|
RenderUtil.frmSymbolSelector.Init(esriStyleClass.LineSymbols, ref symbol); |
|
break; |
|
case esriGeometryType.esriGeometryPolygon: |
|
RenderUtil.frmSymbolSelector.Init(esriStyleClass.FillSymbols, ref symbol); |
|
break; |
|
} |
|
if (RenderUtil.frmSymbolSelector.ShowDialog() == DialogResult.OK) |
|
{ |
|
return RenderUtil.frmSymbolSelector.ResultSymbol; |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
//RdbUtil.AddException(ex); |
|
} |
|
return null; |
|
} |
|
internal static object OpenStyleSelector(esriStyleClass styleClass, ISymbol symbol) |
|
{ |
|
try |
|
{ |
|
if (RenderUtil.frmSymbolSelector == null) |
|
{ |
|
RenderUtil.frmSymbolSelector = new FormSymbolSelector(); |
|
RenderUtil.symbolSelector = RenderUtil.frmSymbolSelector; |
|
try |
|
{ |
|
//RenderUtil.symbolSelector.RDBHelper = RdbUtil.RDBHelper; |
|
//RenderUtil.symbolSelector.TraceHandler = Util.TraceHandler; |
|
//RenderUtil.symbolSelector.Log = Util.Log; |
|
} |
|
catch |
|
{ |
|
} |
|
RenderUtil.frmSymbolSelector.Init(); |
|
} |
|
RenderUtil.frmSymbolSelector.Init(styleClass, ref symbol); |
|
if (RenderUtil.frmSymbolSelector.ShowDialog() == DialogResult.OK) |
|
{ |
|
return RenderUtil.frmSymbolSelector.ResultSymbol; |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
//RdbUtil.AddException(ex); |
|
} |
|
return null; |
|
} |
|
internal static object OpenGalleryPathSelector() |
|
{ |
|
try |
|
{ |
|
if (RenderUtil.frmGalleryPathSelector == null) |
|
{ |
|
RenderUtil.frmGalleryPathSelector = new FormGalleryPathSelector(); |
|
RenderUtil.symbolSelector = RenderUtil.frmGalleryPathSelector; |
|
//RenderUtil.symbolSelector.RDBHelper = RdbUtil.RDBHelper; |
|
//RenderUtil.symbolSelector.TraceHandler = Util.TraceHandler; |
|
//RenderUtil.symbolSelector.Log = Util.Log; |
|
RenderUtil.frmGalleryPathSelector.Init(); |
|
} |
|
if (RenderUtil.frmGalleryPathSelector.ShowDialog() == DialogResult.OK) |
|
{ |
|
if (frmGalleryPathSelector.UpdateTextName != null) |
|
{ |
|
frmGalleryPathSelector.SelectedPath = frmGalleryPathSelector.UpdateTextName; |
|
} |
|
return RenderUtil.frmGalleryPathSelector.SelectedPath; |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
//RdbUtil.AddException(ex); |
|
} |
|
return null; |
|
} |
|
internal static IDoStyleGalleryItem OpenStyleSelector(esriStyleClass styleClass) |
|
{ |
|
try |
|
{ |
|
if (RenderUtil.frmSymbolSelector == null) |
|
{ |
|
RenderUtil.frmSymbolSelector = new FormSymbolSelector(); |
|
RenderUtil.symbolSelector = RenderUtil.frmSymbolSelector; |
|
//RenderUtil.symbolSelector.RDBHelper = RdbUtil.RDBHelper; |
|
//RenderUtil.symbolSelector.TraceHandler = Util.TraceHandler; |
|
//RenderUtil.symbolSelector.Log = Util.Log; |
|
RenderUtil.frmSymbolSelector.Init(); |
|
} |
|
RenderUtil.frmSymbolSelector.Init(styleClass); |
|
if (RenderUtil.frmSymbolSelector.ShowDialog() == DialogResult.OK) |
|
{ |
|
return RenderUtil.frmSymbolSelector.DoStyleGalleryItem; |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
//RdbUtil.AddException(ex); |
|
} |
|
return null; |
|
} |
|
internal static Bitmap GetSymbolBitMap(int width, int height, IStyleGalleryClass symbologyStyleClass, ISymbol pSymbol) |
|
{ |
|
try |
|
{ |
|
Bitmap result; |
|
if (pSymbol == null || symbologyStyleClass == null) |
|
{ |
|
result = null; |
|
return result; |
|
} |
|
result = StyleGalleryItemView.StyleGalleryItemToBmp(width, height, symbologyStyleClass, new ServerStyleGalleryItemClass |
|
{ |
|
Item = pSymbol |
|
}); |
|
return result; |
|
} |
|
catch (Exception ex) |
|
{ |
|
//RdbUtil.AddException(ex); |
|
} |
|
return null; |
|
} |
|
internal static Hashtable GetAllSymbols(string path, string className) |
|
{ |
|
IStyleGallery styleGallery = new ServerStyleGalleryClass(); |
|
Hashtable hashtable = new Hashtable(); |
|
IStyleGalleryStorage styleGalleryStorage = styleGallery as IStyleGalleryStorage; |
|
styleGalleryStorage.AddFile(path); |
|
IEnumStyleGalleryItem enumStyleGalleryItem = styleGallery.get_Items(className, path, null); |
|
enumStyleGalleryItem.Reset(); |
|
for (IStyleGalleryItem styleGalleryItem = enumStyleGalleryItem.Next(); styleGalleryItem != null; styleGalleryItem = enumStyleGalleryItem.Next()) |
|
{ |
|
object item = styleGalleryItem.Item; |
|
if (item is ISymbol) |
|
{ |
|
ISymbol value = item as ISymbol; |
|
string name = styleGalleryItem.Name; |
|
try |
|
{ |
|
hashtable.Add(name, value); |
|
} |
|
catch (Exception) |
|
{ |
|
} |
|
} |
|
} |
|
return hashtable; |
|
} |
|
internal static Hashtable GetAllSymbols(IDoStyleGalleryPath path, string className) |
|
{ |
|
Hashtable hashtable = new Hashtable(); |
|
try |
|
{ |
|
IDoStyleGallery doStyleGallery = StyleGalleryFactory.CreateDistStyleGallery(); |
|
IDoStyleGalleryStorage doStyleGalleryStorage = doStyleGallery as IDoStyleGalleryStorage; |
|
doStyleGalleryStorage.AddDoStyleGalleryPath(path); |
|
List<IDoStyleGalleryItem> list = doStyleGallery.get_Items(className, path, ""); |
|
foreach (IDoStyleGalleryItem current in list) |
|
{ |
|
object item = current.Item.Item; |
|
if (item is ISymbol) |
|
{ |
|
ISymbol value = item as ISymbol; |
|
string name = current.Name; |
|
try |
|
{ |
|
hashtable.Add(name, value); |
|
} |
|
catch (Exception) |
|
{ |
|
} |
|
} |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
//RdbUtil.AddException(ex); |
|
} |
|
return hashtable; |
|
} |
|
/// <summary> |
|
/// 获取匹配的符号集 |
|
/// </summary> |
|
/// <param name="path"></param> |
|
/// <param name="className"></param> |
|
/// <returns>王欢 2018-12-13</returns> |
|
internal static Hashtable GetAllSymbols_NEW(string path, string className) |
|
{ |
|
try |
|
{ |
|
//ServerStyleGallery对象 |
|
Hashtable hashtable = new Hashtable(); |
|
IStyleGallery pStyleGaller = new ServerStyleGalleryClass(); |
|
|
|
IStyleGalleryStorage pStyleGalleryStorage = pStyleGaller as IStyleGalleryStorage; |
|
IEnumStyleGalleryItem pEnumSyleGalleryItem = null; |
|
|
|
IStyleGalleryItem pStyleGallerItem = null; |
|
|
|
IStyleGalleryClass pStyleGalleryClass = null; |
|
|
|
//使用IStyleGalleryStorage接口的AddFile方法加载ServerStyle文件 |
|
pStyleGalleryStorage.AddFile(path); |
|
//遍历ServerGallery中的Class |
|
for (int i = 0; i < pStyleGaller.ClassCount; i++) |
|
{ |
|
pStyleGalleryClass = pStyleGaller.get_Class(i); |
|
|
|
if (pStyleGalleryClass.Name != className) |
|
continue; |
|
//获取EnumStyleGalleryItem对象 |
|
pEnumSyleGalleryItem = pStyleGaller.get_Items(className, path, ""); |
|
pEnumSyleGalleryItem.Reset(); |
|
if (pEnumSyleGalleryItem == null) |
|
continue; |
|
//遍历pEnumSyleGalleryItem |
|
pStyleGallerItem = pEnumSyleGalleryItem.Next(); |
|
|
|
while (pStyleGallerItem != null) |
|
{ |
|
//获取符号 |
|
ISymbol pSymbol = pStyleGallerItem.Item as ISymbol; |
|
if (pStyleGallerItem.Item is ISymbol) |
|
{ |
|
ISymbol value = pStyleGallerItem.Item as ISymbol; |
|
string name = pStyleGallerItem.Name; |
|
if (!hashtable.ContainsKey(name)) |
|
{ |
|
hashtable.Add(name, value); |
|
} |
|
} |
|
pStyleGallerItem = pEnumSyleGalleryItem.Next(); |
|
} |
|
} |
|
|
|
System.Runtime.InteropServices.Marshal.ReleaseComObject(pEnumSyleGalleryItem); |
|
System.Runtime.InteropServices.Marshal.ReleaseComObject(pStyleGalleryClass); |
|
|
|
return hashtable; |
|
} |
|
catch (Exception ex) |
|
{ |
|
//KGIS.Common.Utility.LogAPI.Debug(ex); |
|
RenderUtil.InvkeLayerRenderDescription("未找到符合的样式符合!"); |
|
return null; |
|
} |
|
|
|
} |
|
internal static void FeatureLayerAutoMatch2(IFeatureLayer2 FeaLyr, object StylePath, string MatchField, int MaxMatchCount, out StringBuilder messages) |
|
{ |
|
messages = new StringBuilder(); |
|
try |
|
{ |
|
messages.AppendLine("开始匹配:<" + (FeaLyr as ILayer).Name + "> " + DateTime.Now.ToString()); |
|
IGeoFeatureLayer geoFeatureLayer = FeaLyr as IGeoFeatureLayer; |
|
if (geoFeatureLayer == null) |
|
{ |
|
messages.AppendLine("不能对图层:<" + (FeaLyr as ILayer).Name + ">进行渲染。"); |
|
messages.AppendLine("======================="); |
|
} |
|
else |
|
{ |
|
IUniqueValueRenderer uniqueValueRenderer = geoFeatureLayer.Renderer as IUniqueValueRenderer; |
|
if (uniqueValueRenderer == null) |
|
{ |
|
uniqueValueRenderer = new UniqueValueRendererClass(); |
|
} |
|
ISymbol defaultSymbol = uniqueValueRenderer.DefaultSymbol; |
|
if (defaultSymbol == null) |
|
{ |
|
defaultSymbol = RenderUtil.GetDefaultSymbol(FeaLyr.FeatureClass.ShapeType); |
|
} |
|
string text = null; |
|
IDisplayTable displayTable = (IDisplayTable)FeaLyr; |
|
ICursor cursor = displayTable.DisplayTable.Search(null, false); |
|
IDataStatistics dataStatistics = new DataStatisticsClass(); |
|
dataStatistics.Cursor = cursor; |
|
dataStatistics.Field = MatchField; |
|
dataStatistics.SampleRate = -1; |
|
IEnumerator uniqueValues = dataStatistics.UniqueValues; |
|
uniqueValues.Reset(); |
|
string className = RenderUtil.GetClassName(FeaLyr); |
|
Hashtable hashtable = null; |
|
if (StylePath is IDoStyleGalleryPath) |
|
{ |
|
hashtable = RenderUtil.GetAllSymbols(StylePath as IDoStyleGalleryPath, className); |
|
} |
|
else |
|
{ |
|
hashtable = RenderUtil.GetAllSymbols(StylePath.ToString(), className); |
|
} |
|
uniqueValueRenderer.FieldCount = 1; |
|
uniqueValueRenderer.RemoveAllValues(); |
|
uniqueValueRenderer.set_Field(0, MatchField); |
|
int num = displayTable.DisplayTable.RowCount(null); |
|
messages.AppendLine("共有:" + num + "个要素需要匹配。"); |
|
IQueryFilter queryFilter = new QueryFilterClass(); |
|
int num2 = 0; |
|
while (uniqueValues.MoveNext()) |
|
{ |
|
try |
|
{ |
|
text = Convert.ToString(uniqueValues.Current); |
|
} |
|
catch (Exception) |
|
{ |
|
} |
|
ISymbol symbol = hashtable[text] as ISymbol; |
|
if (symbol == null) |
|
{ |
|
queryFilter.WhereClause = MatchField + "='" + text + "'"; |
|
int num3 = displayTable.DisplayTable.RowCount(queryFilter); |
|
messages.AppendLine(string.Concat(new object[] |
|
{ |
|
MatchField, |
|
"值为:", |
|
text, |
|
"的", |
|
num3, |
|
"个要素未匹配到符号,使用默认符号" |
|
})); |
|
uniqueValueRenderer.AddValue(text, MatchField, defaultSymbol); |
|
} |
|
else |
|
{ |
|
uniqueValueRenderer.AddValue(text, MatchField, symbol); |
|
} |
|
num2++; |
|
if (num2 >= MaxMatchCount && MaxMatchCount > 0) |
|
{ |
|
messages.AppendLine(string.Concat(new object[] |
|
{ |
|
"总个数", |
|
dataStatistics.UniqueValueCount, |
|
"个,已匹配", |
|
MaxMatchCount, |
|
"个,没有完全匹配" |
|
})); |
|
break; |
|
} |
|
} |
|
uniqueValueRenderer.DefaultSymbol = defaultSymbol; |
|
uniqueValueRenderer.UseDefaultSymbol = true; |
|
(FeaLyr as IGeoFeatureLayer).Renderer = (uniqueValueRenderer as IFeatureRenderer); |
|
messages.AppendLine(string.Concat(new object[] |
|
{ |
|
"<", |
|
(FeaLyr as ILayer).Name, |
|
">符号匹配结束,共匹配:", |
|
num2, |
|
"种符号。 ", |
|
DateTime.Now.ToString() |
|
})); |
|
messages.AppendLine("======================="); |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
//RdbUtil.AddException(ex); |
|
} |
|
} |
|
internal static void FeatureLayerAutoMatch(IFeatureLayer2 FeaLyr, object StylePath, string MatchField, int MaxMatchCount) |
|
{ |
|
try |
|
{ |
|
RenderUtil.InvkeLayerRenderDescription("开始匹配:<" + (FeaLyr as ILayer).Name + "> " + DateTime.Now.ToString()); |
|
IGeoFeatureLayer geoFeatureLayer = FeaLyr as IGeoFeatureLayer; |
|
if (geoFeatureLayer == null) |
|
{ |
|
RenderUtil.InvkeLayerRenderDescription("不能对图层:<" + (FeaLyr as ILayer).Name + ">进行渲染。"); |
|
} |
|
else |
|
{ |
|
IUniqueValueRenderer uniqueValueRenderer = geoFeatureLayer.Renderer as IUniqueValueRenderer; |
|
if (uniqueValueRenderer == null) |
|
{ |
|
uniqueValueRenderer = new UniqueValueRendererClass(); |
|
} |
|
ISymbol defaultSymbol = uniqueValueRenderer.DefaultSymbol; |
|
if (defaultSymbol == null) |
|
{ |
|
defaultSymbol = RenderUtil.GetDefaultSymbol(FeaLyr.FeatureClass.ShapeType); |
|
} |
|
string text = null; |
|
IDisplayTable displayTable = (IDisplayTable)FeaLyr; |
|
ICursor cursor = displayTable.DisplayTable.Search(null, false); |
|
IDataStatistics dataStatistics = new DataStatisticsClass(); |
|
dataStatistics.Cursor = cursor; |
|
dataStatistics.Field = MatchField; |
|
dataStatistics.SampleRate = -1; |
|
IEnumerator uniqueValues = dataStatistics.UniqueValues; |
|
uniqueValues.Reset(); |
|
string className = RenderUtil.GetClassName(FeaLyr); |
|
Hashtable hashtable = null; |
|
if (StylePath is IDoStyleGalleryPath) |
|
{ |
|
hashtable = RenderUtil.GetAllSymbols(StylePath as IDoStyleGalleryPath, className); |
|
} |
|
else |
|
{ |
|
hashtable = RenderUtil.GetAllSymbols(StylePath.ToString(), className); |
|
} |
|
uniqueValueRenderer.FieldCount = 1; |
|
uniqueValueRenderer.RemoveAllValues(); |
|
uniqueValueRenderer.set_Field(0, MatchField); |
|
int num = displayTable.DisplayTable.RowCount(null); |
|
RenderUtil.InvkeLayerRenderDescription("共有:" + num + "个要素需要匹配。"); |
|
IQueryFilter queryFilter = new QueryFilterClass(); |
|
int num2 = 0; |
|
while (uniqueValues.MoveNext()) |
|
{ |
|
try |
|
{ |
|
text = Convert.ToString(uniqueValues.Current); |
|
} |
|
catch (Exception) |
|
{ |
|
} |
|
ISymbol symbol = hashtable[text] as ISymbol; |
|
if (symbol == null) |
|
{ |
|
queryFilter.WhereClause = MatchField + "='" + text + "'"; |
|
int num3 = displayTable.DisplayTable.RowCount(queryFilter); |
|
RenderUtil.InvkeLayerRenderDescription(string.Concat(new object[] |
|
{ |
|
MatchField, |
|
"值为:", |
|
text, |
|
"的", |
|
num3, |
|
"个要素未匹配到符号,使用默认符号" |
|
})); |
|
uniqueValueRenderer.AddValue(text, MatchField, defaultSymbol); |
|
} |
|
else |
|
{ |
|
uniqueValueRenderer.AddValue(text, MatchField, symbol); |
|
} |
|
num2++; |
|
if (num2 >= MaxMatchCount && MaxMatchCount > 0) |
|
{ |
|
RenderUtil.InvkeLayerRenderDescription(string.Concat(new object[] |
|
{ |
|
"总个数", |
|
dataStatistics.UniqueValueCount, |
|
"个,已匹配", |
|
MaxMatchCount, |
|
"个,没有完全匹配" |
|
})); |
|
break; |
|
} |
|
} |
|
uniqueValueRenderer.DefaultSymbol = defaultSymbol; |
|
uniqueValueRenderer.UseDefaultSymbol = true; |
|
(FeaLyr as IGeoFeatureLayer).Renderer = (uniqueValueRenderer as IFeatureRenderer); |
|
RenderUtil.InvkeLayerRenderDescription(string.Concat(new object[] |
|
{ |
|
"<", |
|
(FeaLyr as ILayer).Name, |
|
">符号匹配结束,共匹配:", |
|
num2, |
|
"种符号。 ", |
|
DateTime.Now.ToString() |
|
})); |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
RenderUtil.InvkeLayerRenderDescription("匹配异常:" + ex.Message); |
|
//RdbUtil.AddException(ex); |
|
} |
|
} |
|
internal static string GetClassName(IFeatureLayer2 pLayer) |
|
{ |
|
esriGeometryType shapeType = pLayer.ShapeType; |
|
switch (shapeType) |
|
{ |
|
case esriGeometryType.esriGeometryPoint: |
|
return "Marker Symbols"; |
|
case esriGeometryType.esriGeometryMultipoint: |
|
goto IL_36; |
|
case esriGeometryType.esriGeometryPolyline: |
|
break; |
|
case esriGeometryType.esriGeometryPolygon: |
|
return "Fill Symbols"; |
|
default: |
|
if (shapeType != esriGeometryType.esriGeometryLine) |
|
{ |
|
goto IL_36; |
|
} |
|
break; |
|
} |
|
return "Line Symbols"; |
|
IL_36: |
|
return ""; |
|
} |
|
internal static ISymbol GetDefaultSymbol(esriGeometryType geometryType) |
|
{ |
|
try |
|
{ |
|
ISymbol result = null; |
|
IRgbColor rgbColor = new RgbColorClass(); |
|
rgbColor.Red = 184; |
|
rgbColor.Green = 242; |
|
rgbColor.Blue = 200; |
|
switch (geometryType) |
|
{ |
|
case esriGeometryType.esriGeometryPoint: |
|
result = (new SimpleMarkerSymbolClass |
|
{ |
|
Color = rgbColor, |
|
Style = esriSimpleMarkerStyle.esriSMSCircle |
|
} as ISymbol); |
|
goto IL_B3; |
|
case esriGeometryType.esriGeometryMultipoint: |
|
goto IL_B3; |
|
case esriGeometryType.esriGeometryPolyline: |
|
break; |
|
case esriGeometryType.esriGeometryPolygon: |
|
result = (new SimpleFillSymbolClass |
|
{ |
|
Color = rgbColor, |
|
Style = esriSimpleFillStyle.esriSFSSolid |
|
} as ISymbol); |
|
goto IL_B3; |
|
default: |
|
if (geometryType != esriGeometryType.esriGeometryLine) |
|
{ |
|
goto IL_B3; |
|
} |
|
break; |
|
} |
|
result = (new SimpleLineSymbolClass |
|
{ |
|
Color = rgbColor, |
|
Width = 1.0, |
|
Style = esriSimpleLineStyle.esriSLSSolid |
|
} as ISymbol); |
|
IL_B3: |
|
return result; |
|
} |
|
catch (Exception ex) |
|
{ |
|
//RdbUtil.AddException(ex); |
|
} |
|
return null; |
|
} |
|
internal static ILayerFile OpenLayerFile() |
|
{ |
|
ILayerFile layerFile = null; |
|
if (RenderUtil.openFileDialog == null) |
|
{ |
|
RenderUtil.openFileDialog = new KGIS.Framework.Utils.Dialog.OpenFileDialog(); |
|
} |
|
RenderUtil.openFileDialog.Filter = "图层文件(*.lyr)|*.lyr"; |
|
RenderUtil.openFileDialog.Title = "选择图层文件"; |
|
RenderUtil.openFileDialog.Multiselect = false; |
|
if (!RenderUtil.openFileDialog.ShowDialog()) |
|
{ |
|
return layerFile; |
|
} |
|
string fileName = RenderUtil.openFileDialog.FileName; |
|
if (fileName != "") |
|
{ |
|
layerFile = new LayerFileClass(); |
|
layerFile.Open(fileName); |
|
return layerFile; |
|
} |
|
return layerFile; |
|
} |
|
internal static void InvkeLayerRenderDescription(string desc) |
|
{ |
|
if (RenderUtil.LayerRenderDescription != null) |
|
{ |
|
RenderUtil.LayerRenderDescription(desc); |
|
} |
|
} |
|
internal static void SetUniqueValuesToTable(IUniqueValueRenderer m_LyrRender, IStyleGalleryClass m_SymbologyStyleClass, DataTable m_SymbolTable) |
|
{ |
|
try |
|
{ |
|
DataRow dataRow = null; |
|
for (int i = 0; i < m_LyrRender.ValueCount; i++) |
|
{ |
|
string text = m_LyrRender.get_Value(i); |
|
ISymbol symbol = m_LyrRender.get_Symbol(text); |
|
string value = m_LyrRender.get_Label(text); |
|
if (symbol == null) |
|
{ |
|
if (dataRow != null) |
|
{ |
|
dataRow["F_Value"] = dataRow["F_Value"] + ";" + text; |
|
dataRow.AcceptChanges(); |
|
} |
|
} |
|
else |
|
{ |
|
Bitmap symbolBitMap = RenderUtil.GetSymbolBitMap(40, 20, m_SymbologyStyleClass, symbol); |
|
IClone clone = symbol as IClone; |
|
ISymbol value2 = clone.Clone() as ISymbol; |
|
dataRow = m_SymbolTable.NewRow(); |
|
dataRow["F_BITMAP"] = symbolBitMap; |
|
dataRow["F_Value"] = text; |
|
dataRow["F_Label"] = value; |
|
dataRow["F_Symbol"] = value2; |
|
m_SymbolTable.Rows.Add(dataRow); |
|
} |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
//RdbUtil.AddException(ex); |
|
} |
|
} |
|
internal static void SetUniqueValuesFromTable(IUniqueValueRenderer m_LyrRender, string headName, DataTable m_SymbolTable) |
|
{ |
|
try |
|
{ |
|
for (int i = 0; i < m_SymbolTable.Rows.Count; i++) |
|
{ |
|
DataRow dataRow = m_SymbolTable.Rows[i]; |
|
string text = Convert.ToString(dataRow["F_Value"]); |
|
string label = (dataRow["F_Label"] == DBNull.Value) ? "" : dataRow["F_Label"].ToString(); |
|
ISymbol symbol = dataRow["F_Symbol"] as ISymbol; |
|
string[] array = text.Split(new char[] |
|
{ |
|
';' |
|
}); |
|
if (array.Length > 0) |
|
{ |
|
m_LyrRender.AddValue(array[0], headName, symbol); |
|
m_LyrRender.set_Label(array[0], label); |
|
m_LyrRender.set_Symbol(array[0], symbol); |
|
for (int j = 1; j < array.Length; j++) |
|
{ |
|
string value = array.GetValue(j).ToString(); |
|
m_LyrRender.AddReferenceValue(value, array[0]); |
|
} |
|
} |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
//RdbUtil.AddException(ex); |
|
} |
|
} |
|
} |
|
}
|
|
|