ArcMap2Sld:一个将MXD中图层配图样式转换为OGC的SLD文件的开源工具

在一个项目中,用户采用GeoServer做为GIS服务器(原因嘛当然是免费能省钱,经过验证可能还会在性能和稳定性等表现力也有优越性),但是手上收集的数据都是ESRI格式的,这倒不打紧,因为GeoServer直接能够支持ESRI的shape file和ArcSDE两种数据格式,要命的是用户的配图也是用ESRI,mxd中40个左右的图层组织和专题图样式都配好了。在网上查了大部分关于在GeoServer中发布服务的样式都是建议在uDig中重新配置,然后导出SLD文件,添加到GeoServer中。由于时间紧张,也不想花大量的精力做这种重复性工作,于是就想难道没有工具能直接把MXD中的layer转成SLD吗,于是百度一下,事遂人愿,还真是找着了!大概花了1小时间,就把这个工具下下来搞定,所有的样式文件转完1分钟妥妥地转完了,添加到GeoServer,拿数据一测试,完全正解。

下面专门介绍下这个工具:

1.ArcMap2SLD,开源工具

这个工具最早是在2006年由慕尼黑工业大学的一个学生做毕业论文的开发的,这位同学名叫Albrecht Weiser,同时这个项目又是一个地理信息开发协会赞助支持的,所以源码开放出来。这个版本开发时是支持ArcGIS 9.0版本的,后来经过又一个德国人lat/lon,
Bonn
补充,可以支持到ArcView3.3版本,目胶这个工具最新的版本是1.3.0,可以支持到ArcGIS 10。这个工具仍然由原作者在开发维护。

关于这个工具更多的介绍可以参看网站:http://arcmap2sld.i3mainz.hs-mainz.de/ArcMap2SLDConverter_Eng.htm

工具下载的地址:http://wald.intevation.org/projects/arcmap2sld/,根据自己的情况下载不同的版本

2、下载调试

我下了最新版本后,在机子上用VS 2012打开,运行报错,因为我的机器上装的是ArcGIS 10.1,而且我只装了DeskTop,工程里引用的应该是10.0的DLL,所以报一个授权时ProductCode的错误,发现这个错误是由于Version dll 引用不对造成的,后来让一个精熟微软的同事把所有相关的组件都重新引用了下,相关的配置文件放对位置,由于德文转换引起的一些编码也调整了,大概花了30分钟,就跑出来了,运行后大概是这样的:

3、测试结果

工具运行的时候,需要打开一个MXD(注意,只能打开一个),会自动读取MXD里面的图层,在这个界面中,只需要指定一个转换出来的SLD文件存放的路径即可,点击左下角那个按纽,就会启动转换工作(不知道是哪个地方控制了,运行以后的大小和开发工程里不太一样,反正能运行,我也就没调这个了),对于转换文件的保存方式,有两种 ,所有样式存放在一个文件中,按图层分开存储,这个设置在左上角"Extras"菜单中,由于GeoServer发布服务需要单独的样式文件,所以我选择了分开存储,转换后的样式文件大概是这样的:

classBreaks Render
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>

<sld:StyledLayerDescriptor version="1.0.0" xmlns:sld="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xlink="http://www.w3.org/1999/xlink">

<sld:NamedLayer>

<sld:Name>grid200_avg</sld:Name>

<sld:UserStyle>

<sld:Name>Style1</sld:Name>

<sld:FeatureTypeStyle>

<sld:FeatureTypeName>grid200_avg</sld:FeatureTypeName>

<sld:Rule>

<sld:Name>.00 - .10</sld:Name>

<sld:Title>.00 - .10</sld:Title>

<ogc:Filter>

<ogc:PropertyIsBetween>

<ogc:PropertyName>BCOVERWH_4</ogc:PropertyName>

<ogc:LowerBoundary>

<ogc:Literal>0</ogc:Literal>

</ogc:LowerBoundary>

<ogc:UpperBoundary>

<ogc:Literal>0.0994</ogc:Literal>

</ogc:UpperBoundary>

</ogc:PropertyIsBetween>

</ogc:Filter>

<sld:PolygonSymbolizer>

<sld:Fill>

<sld:CssParameter name="fill">#FFFF80</sld:CssParameter>

<sld:CssParameter name="fill-opacity">1</sld:CssParameter>

</sld:Fill>

</sld:PolygonSymbolizer>

</sld:Rule>

<sld:Rule>

<sld:Name>.11 - .20</sld:Name>

<sld:Title>.11 - .20</sld:Title>

<ogc:Filter>

<ogc:PropertyIsBetween>

<ogc:PropertyName>BCOVERWH_4</ogc:PropertyName>

<ogc:LowerBoundary>

<ogc:Literal>0.099401</ogc:Literal>

</ogc:LowerBoundary>

<ogc:UpperBoundary>

<ogc:Literal>0.200012496477616</ogc:Literal>

</ogc:UpperBoundary>

</ogc:PropertyIsBetween>

</ogc:Filter>

<sld:PolygonSymbolizer>

<sld:Fill>

<sld:CssParameter name="fill">#FAD155</sld:CssParameter>

<sld:CssParameter name="fill-opacity">1</sld:CssParameter>

</sld:Fill>

</sld:PolygonSymbolizer>

</sld:Rule>

<sld:Rule>

<sld:Name>.21 - .35</sld:Name>

<sld:Title>.21 - .35</sld:Title>

<ogc:Filter>

<ogc:PropertyIsBetween>

<ogc:PropertyName>BCOVERWH_4</ogc:PropertyName>

<ogc:LowerBoundary>

<ogc:Literal>0.200013496477616</ogc:Literal>

</ogc:LowerBoundary>

<ogc:UpperBoundary>

<ogc:Literal>0.351116688634112</ogc:Literal>

</ogc:UpperBoundary>

</ogc:PropertyIsBetween>

</ogc:Filter>

<sld:PolygonSymbolizer>

<sld:Fill>

<sld:CssParameter name="fill">#F2A72E</sld:CssParameter>

<sld:CssParameter name="fill-opacity">1</sld:CssParameter>

</sld:Fill>

</sld:PolygonSymbolizer>

</sld:Rule>

<sld:Rule>

<sld:Name>.36 - .50</sld:Name>

<sld:Title>.36 - .50</sld:Title>

<ogc:Filter>

<ogc:PropertyIsBetween>

<ogc:PropertyName>BCOVERWH_4</ogc:PropertyName>

<ogc:LowerBoundary>

<ogc:Literal>0.351117688634112</ogc:Literal>

</ogc:LowerBoundary>

<ogc:UpperBoundary>

<ogc:Literal>0.5</ogc:Literal>

</ogc:UpperBoundary>

</ogc:PropertyIsBetween>

</ogc:Filter>

<sld:PolygonSymbolizer>

<sld:Fill>

<sld:CssParameter name="fill">#AD5313</sld:CssParameter>

<sld:CssParameter name="fill-opacity">1</sld:CssParameter>

</sld:Fill>

</sld:PolygonSymbolizer>

</sld:Rule>

<sld:Rule>

<sld:Name>.51 - 1.00</sld:Name>

<sld:Title>.51 - 1.00</sld:Title>

<ogc:Filter>

<ogc:PropertyIsBetween>

<ogc:PropertyName>BCOVERWH_4</ogc:PropertyName>

<ogc:LowerBoundary>

<ogc:Literal>0.500001</ogc:Literal>

</ogc:LowerBoundary>

<ogc:UpperBoundary>

<ogc:Literal>1</ogc:Literal>

</ogc:UpperBoundary>

</ogc:PropertyIsBetween>

</ogc:Filter>

<sld:PolygonSymbolizer>

<sld:Fill>

<sld:CssParameter name="fill">#730000</sld:CssParameter>

<sld:CssParameter name="fill-opacity">1</sld:CssParameter>

</sld:Fill>

</sld:PolygonSymbolizer>

</sld:Rule>

</sld:FeatureTypeStyle>

</sld:UserStyle>

</sld:NamedLayer>

</sld:StyledLayerDescriptor>

时间: 2024-10-01 08:04:46

ArcMap2Sld:一个将MXD中图层配图样式转换为OGC的SLD文件的开源工具的相关文章

GeoServer中利用SLD配图之矢量图层配图

1 背景 我们在ArcMap中可以直接通过symbol功能对图层进行定制化配图.但是,如果我们将配好图的shp图层在GeoServer中发布时,会发现图层样式完全丢失了.其实原因很简单,用ArcMap配好的图层,其样式文件并不是保存在shp中,而是保存在mxd或者msd中. 那么如何才能让GeoServer发布的图层也能达到定制化配图的效果呢? 2 SLD简介 SLD是风格化图层描述器(Styled Layer Descriptor)的简称,是2005年OGC提出的一个标准,这个标准在一定条件下

记一次项目中的css样式复用

本文同步至微信公众号:http://mp.weixin.qq.com/s?__biz=MzAxMzgwNDU3Mg==&mid=401616238&idx=1&sn=3c6e965283c632e9035875be43e6a305&scene=0#wechat_redirect 二维码: 一直觉得css是一个不被重视,或者说是重视不够的饭后甜点.因为它太“简单”,门槛低,不能彰显或提升广大闷骚程序猿的逼格...一直都想聊聊css相关的一些杂碎.正好借最近的一次项目实践来侃侃

html5 中的 css样式单 的 两种调用方式的区别

在 html5 中 使用 css 样式单的方式 有4种: 1.链接外部样式文件:将样式文件 彻底与 html 文档分离,样式文件需要额外引入,这种情况下 一批样式 可以控制多份文档.对于好多文件都共有的样式单,推荐使用这种方式. 2.导入外部样式文件:此方式与第一种方式类似,但是需要用@import来引入外部样式单.由于某些浏览器(如 internet explorer)会在导入外部样式单时导致闪屏,所以不推荐用这种方式,而是尽量考虑使用第一种方式. 3.使用内部样式定义:这种方式是通过在htm

HTML文档中应用css样式的方法总结

在HTML文档中应用css样式大致有三种方法:1.link标签链接外部样式表:2.使用style元素包含样式表:3.使用style属性,即内联样式 一.link标签链接外部样式表 先看一条较为标准的link标记语句: <link rel="stylesheet" type="text/css" href="main.css" media="all" /> link标记必须放在head元素中,且不能放在其他元素(如t

JQuery中操作css样式

//1.获取和设置样式  $("#tow").attr("class")获取ID为tow的class属性  $("#two").attr("class","divClass")设置Id为two的class属性.  //2.追加样式  $("#two").addClass("divClass2")为ID为two的对象追加样式divClass2  //3.移除样式  $(

关于java中JButton的样式设置(的一些我们应该知道的函数)(转)

1 1. 对JButton大小的设置 2 ——因为JButen是属于小器件类型的,所以一般的setSize不能对其惊醒大小的设置,所以一般我们用 3 button.setPreferredSize(new Dimension(30,30)); 4 //(30,30) 是你要设置按钮的大小 5 2. 对JButton透明的设置 6 ——按钮设置为透明,这样就不会挡着后面的背景 7 button.setContentAreaFilled(false); 8 3. 对JButton去掉按钮的边框的设置

ArcGIS教程:ArcGIS中图层添加投影及投影转换

由于GIS描述的是位于地球表面的空间信息,所以在表示时必须嵌入到一个空间参照系中,这个参照系就是坐标系它是根据椭球体等参数建立的.我国目前所用到的三种主要坐标系是:北京1954.西安1980及WGS84. 有了坐标系,即椭球体,数据图层就有了地理坐标,地理坐标是用经纬度表示球面的位置的.为了能够将地图从三维地理坐标通过投影转换成二位平面坐标,还要进行投影,这样的坐标系叫做投影坐标系.常用的投影有高斯-克吕格(Gauss-Kruger)投影,阿尔博斯(Albers Equal-Area Conic

Chrome中输入框默认样式移除

Chrome中输入框默认样式移除 在chrome浏览器中会默认给页面上的输入框如input.textarea等渲染浏览器自带的边框效果 IE8中效果如下: Chrome中效果如下:   这在我们未给输入框设置获取焦点时改变边框颜色时,chrome浏览器解析页面中默认将输入框获取焦点时改变边框效果,这给我们带来了极大的方便.如果我们要自己设置边框色时,chrome浏览器的默认操作就给我们的设置(boder:1px solid color)带来了问题,这是你会发现,你的设置在其他浏览器中时有效的,但

页面中插入CSS样式的三种方法

页面中插入css样式的三种方法总结 1. 外部样式 当样式需要应用于很多页面时,外部样式表将是理想的选择.在使用外部样式表的情况下,你可以通过改变一个文件来改变整个站点的外观.每个页面使用<link>标签链接到样式表. <link>标签在(文档的)头部: <head> <link rel="stylesheet" type="text/css" href="path/myCss.css"/> <