AO中如何利用style 文件渲染要素
2007-03-09 11:17
344 查看
1.新建style文件
在Arcmap中Tools--Styles--StyleManager
添加新的style文件,在文件中添加将要用于渲染的symbol,symbol的命名实别中文。
2 从SDE或者shp中添加地图,根据图层对应的symbol名称从style文件中提取symbol进行渲染操作
public void RenderLayer(ILayer layer)
...{
IGeoFeatureLayer geoLayer;
//显示自动注记
geoLayer = layer as IGeoFeatureLayer;
ISimpleRenderer simpleRenderer = new SimpleRendererClass();
string geotype="";
if(geoLayer.FeatureClass.ShapeType==esriGeometryType.esriGeometryPolygon)
...{geotype="3";}
else if(geoLayer.FeatureClass.ShapeType==esriGeometryType.esriGeometryPolyline)...{geotype="2";}
else if(geoLayer.FeatureClass.ShapeType==esriGeometryType.esriGeometryPoint)...{geotype="1";}
ISymbol sym=getSymbolByName(geotype,info.FHMC);
//Set the symbol property of the renderer
if(sym!=null)
...{
simpleRenderer.Symbol = (ISymbol) sym;
//Set the renderer property of the geo feature layer
geoLayer.Renderer = (IFeatureRenderer) simpleRenderer;}
}
private ISymbol getSymbolByName(string symbolstyle,string name)
...{
ISymbol result=null;
string stylepath=System.Configuration.ConfigurationSe
d287
ttings.AppSettings["SymbolPath"];
IStyleGallery pStyleGallery =new StyleGalleryClass();
IntPtr pointer = System.Runtime.InteropServices.Marshal.GetComInterfaceForObject(pStyleGallery, typeof(IStyleGallery));
IStyleGalleryStorage pStyleStorage=pStyleGallery as IStyleGalleryStorage;
//IStyleGalleryClass pStyleClass;
IEnumStyleGalleryItem pEnumStyleGall;
IStyleGalleryItem pStyleItem;
//IMarkerSymbol pMarkerSym;
// pStyleGallery.ImportStyle(stylepath);
string pp=pStyleStorage.DefaultStylePath;
pStyleStorage.AddFile(stylepath);
if(symbolstyle=="1")
...{
pEnumStyleGall = pStyleGallery.get_Items("Marker Symbols", stylepath, "");}
else if(symbolstyle=="2")...{pEnumStyleGall = pStyleGallery.get_Items("Line Symbols", stylepath, "");}
else if(symbolstyle=="3")...{pEnumStyleGall = pStyleGallery.get_Items("Fill Symbols", stylepath, "");}
else...{return null;}
pEnumStyleGall.Reset();
pStyleItem = pEnumStyleGall.Next();
while ( pStyleItem != null) //Loop through and access each marker
...{
if(pStyleItem.Name==name)...{result=pStyleItem.Item as ISymbol;break;}
pStyleItem = pEnumStyleGall.Next();
}
return result;
}
在Arcmap中Tools--Styles--StyleManager
添加新的style文件,在文件中添加将要用于渲染的symbol,symbol的命名实别中文。
2 从SDE或者shp中添加地图,根据图层对应的symbol名称从style文件中提取symbol进行渲染操作
public void RenderLayer(ILayer layer)
...{
IGeoFeatureLayer geoLayer;
//显示自动注记
geoLayer = layer as IGeoFeatureLayer;
ISimpleRenderer simpleRenderer = new SimpleRendererClass();
string geotype="";
if(geoLayer.FeatureClass.ShapeType==esriGeometryType.esriGeometryPolygon)
...{geotype="3";}
else if(geoLayer.FeatureClass.ShapeType==esriGeometryType.esriGeometryPolyline)...{geotype="2";}
else if(geoLayer.FeatureClass.ShapeType==esriGeometryType.esriGeometryPoint)...{geotype="1";}
ISymbol sym=getSymbolByName(geotype,info.FHMC);
//Set the symbol property of the renderer
if(sym!=null)
...{
simpleRenderer.Symbol = (ISymbol) sym;
//Set the renderer property of the geo feature layer
geoLayer.Renderer = (IFeatureRenderer) simpleRenderer;}
}
private ISymbol getSymbolByName(string symbolstyle,string name)
...{
ISymbol result=null;
string stylepath=System.Configuration.ConfigurationSe
d287
ttings.AppSettings["SymbolPath"];
IStyleGallery pStyleGallery =new StyleGalleryClass();
IntPtr pointer = System.Runtime.InteropServices.Marshal.GetComInterfaceForObject(pStyleGallery, typeof(IStyleGallery));
IStyleGalleryStorage pStyleStorage=pStyleGallery as IStyleGalleryStorage;
//IStyleGalleryClass pStyleClass;
IEnumStyleGalleryItem pEnumStyleGall;
IStyleGalleryItem pStyleItem;
//IMarkerSymbol pMarkerSym;
// pStyleGallery.ImportStyle(stylepath);
string pp=pStyleStorage.DefaultStylePath;
pStyleStorage.AddFile(stylepath);
if(symbolstyle=="1")
...{
pEnumStyleGall = pStyleGallery.get_Items("Marker Symbols", stylepath, "");}
else if(symbolstyle=="2")...{pEnumStyleGall = pStyleGallery.get_Items("Line Symbols", stylepath, "");}
else if(symbolstyle=="3")...{pEnumStyleGall = pStyleGallery.get_Items("Fill Symbols", stylepath, "");}
else...{return null;}
pEnumStyleGall.Reset();
pStyleItem = pEnumStyleGall.Next();
while ( pStyleItem != null) //Loop through and access each marker
...{
if(pStyleItem.Name==name)...{result=pStyleItem.Item as ISymbol;break;}
pStyleItem = pEnumStyleGall.Next();
}
return result;
}
相关文章推荐
- java中如何利用JSmooth生成EXE文件
- 如何利用Xshell在windows与linux之间互传文件
- 如何利用C/C++逐行读取txt文件中的字符串(可以顺便实现文本文件的复制)
- 如何利用iText在java程序中生成PDF文件
- Unity3D教程:如何利用Shader实现钻石渲染效果
- 如何利用PHP执行.SQL文件
- 如何通过超级终端 利用串口实现arm板子和pc互相发送文件???
- 如何利用Ajax下载文件
- 利用Python如何批量更新服务器文件
- 利用MAVEN打包时,如何包含更多的资源文件
- 如何在android style文件中使用自定义属性
- 如何利用闭包递归打印出当前路径下所有文件
- [dotNET]如何利用ConfigurationSettings.AppSettings.GetValues读取配置文件中多个同Key的value
- 如何利用已有的切片文件生成TPK
- 教你如何利用xml格式的sitemap文件做好SEO
- 如何利用Python2.7、py2exe、PyInstaller-2.1将*.py打包成*.exe,再利用Inno Setup Compiler封装成windows安装文件
- 如何利用Shader来渲染游戏中的3D角色
- 如何利用git由本机向github上传文件
- 如何在android style/layout文件中使用自定义属性。
- 【Linux_Fedora_应用系列】_5_如何安装XZ Utils 解压缩工具以及利用 xz工具来解压缩.xz文件