最近需要设计Geoserver服务发布的图层符号,网上找了很多,有用QGis做符号的,但QGIS做的符号也有很多导出不正确,而且以前很多符号都是用ArcGIS制作,于是想到能不能把arcgis的符号转到geoserver上,国外也有过转换的(ArcMap2SLD Converter),但很多转换也不满足我的需求。

对于字体填充符号、线填充符号等的支持不是太好,在这种情况下,根据自身的需求,写了符号转换器,主要就是将arcgis的点、线、面中常用的符号转换成sld格式,以方便在geoserver中使用。

软件运行界面如下:

使用说明:

输出文件:输出sld文件的路径

mxd路径:需要转换的mxd文件路径

参数设置:

导出注记:是否输出图层的标注

考虑注记层的最大最小比例:导出标注时时是否设置标注中设置的最大最小比例

只导出可见图层:只导出mxd文件中打开的图层

保存时去除空格:保存sld文件时去除空格回车等,保存后文件大小较小,但可读性不高

所有图层合并为一个文件:将mxd所有图层合并输出为一个sld文件

图层输出时以要素类名称命名:不是单文件输出时有效,输出sld文件命名以图层的要素类命名,否则以图层名称命名

说明如下:

软件基于ArcGIS10.4开发,如有任何ArcGIS问题可探讨。
Sld格式具体参考官方相关文档(https://docs.geoserver.org/stable/en/user/styling/index.html#styling)。
解析了包括点、线、面三种类型的符号的部分类型及注记,考虑到服务发布需求,图层的查询条件软件暂未考虑,注记类查询条件进行了考虑。

1、图层符号只涉及 唯一值渲染、简单符号渲染;

2、面符号(简单填充、点填充、图片填充、线填充):所有填充边线与线符号对应。
    简单填充:填充颜色和边线(边线参考线符号);
    点填充:填充符号与点符号对应;graphic-margin设置偏移和间距。
    图片填充:不考虑间距和偏移,通过图片缩放比例以及填充间距计算符号大小;
    线填充:填充线只考虑SimpleLine和CartographicLine

3、线符号(简单线、点填充线、HashLine、CartographicLine):
    简单线:只有宽度和颜色;
    点填充线:符号与点符号对应;如果为CartographicLine,mark最小值不能小于2/3点符号大小,如果比符号的一半还小,则不会显示,不知道为啥,以后研究
    HashLine:通过shape://vertline实现,作为做铁路符号的实现,不能设间距,只能根据宽度自动调整间距。
    CartographicLine:虚线。

4、点符号(简单点、字体注记点、图片点):
    点符号的Halo和背景未设置。
    不管是点、线、面符号设置到字体注记还是图片注记需要将字体或图片放到合适位置,
    1)字体注记:字体放于Geoserver安装对应的java目录下,我的放在C:\Program Files\Java\jre1.8.0_291\lib\fonts目录下,我的Java路径为C:\Program Files\Java\jdk1.8.0_181
    具体可参考 https://blog.csdn.net/shendygis/article/details/119021696
    2)图片:生成sld文件时,图片存放在与sld文件同一目录下(命名=图层名称+序号),发布时,需要将图片拷贝到与Geoserver目录的style同位置处,否则识别不到。

5、注记
    考虑注记类、sql。
    注记表达式:只考虑通过&或+的连接。字段(格式:[字段名称])、换行(vbnewline和chr(13))、字符串,未考虑复杂模式。

转换后结果如下图所示:

sld文件是mxd中各个图层对于的样式文件,png格式图片是样式中用到的图片。

arcmap显示如下图所示:

经过转换,将style导入到Geoserver中,在Geoserver中显示如下:

更新日志:

20220903
    1、定义查询增加查询值为null,直接设置PropertyIsNull

20220907
    1、多个图层的IMultiLayerMarkerSymbol采用图片符号(将符号转为png图片)。
    2、添加point单位转换为pixel单位函数,暂时未启用。

需要下载的童鞋移步到: 我的下载资源Mxd2Sld.zip_mxd转为sld-VB文档类资源-CSDN下载

不能运行或需要的qq联系:233020169,请注明:mxd2sld

ArcGIS的ArcMap的Mxd格式符号转换为Geoserver style的sld格式相关推荐

  1. ArcGIS中ArcMap导入mxd地图文档文件出现红色感叹号、地图空白的解决

      本文介绍在ArcMap软件中,导入.mxd地图文档文件后图层出现感叹号.地图显示空白等情况的解决办法.   在ArcMap软件使用过程中,我们经常会需要将包含有多个图层的.mxd地图文档文件导入软 ...

  2. C 语言格式化输出函数中常用的格式符号

    在之前介绍输入输出函数的文章中,有提到格式化输入输出函数都有包含一种特殊的符号--格式符号. 那篇文章中关于格式符号也只是一笔带过,没有进行深入挖掘.本篇文章主要对输出函数(printf)中的一些常用 ...

  3. 【板栗糖GIS】arcmap—如何批量将tiff转换为方便打印的轻量jpg格式

    [板栗糖GIS]arcmap-如何批量将tiff转换为方便打印的轻量jpg格式 目录 1. 数据准备 2. 数据处理 3. 使用脚本 4. 不使用脚本的方法 1. 数据准备 需要的数据--有正确坐标的 ...

  4. 使用ArcGIS Portal10.5直接发布三维3D服务及文件支持哪些格式?

    使用ArcGIS Portal10.5直接发布三维3D服务及文件支持哪些格式? 360 VR Experience (.3vr) ArcGIS Desktop Add-In (.esriaddin) ...

  5. 如何将qlv格式倚天屠龙记转换为MP4格式

    一提到金庸,那绝对是家喻户晓的名字,不仅是带给我们不少童年的欢乐和记忆,更是父辈们的偶像.他作品众多,比较熟知和经典大概有<书剑恩仇录>.<射雕英雄传>.<神雕侠侣> ...

  6. ArcGIS ArcMap “ Add Data” 打开后,一直卡死,无内容

    打开ArcMap能打开,Add Data 或打开mxd就出Runtime Error对话框.打开ArcCatlog或者ArcGlobe出现Runtime Error对话框 Runtime Error! ...

  7. ArcGIS中ArcMap时间滑块功能对长时间序列栅格遥感影像进行动态显示并生成视频或动图

      本文介绍基于ArcMap软件,利用时间滑块功能,对大量多时相栅格遥感影像数据进行动态显示,并生成视频或动图的方法.   首先,我们需要在ArcMap软件中新建一个镶嵌数据集,并将全部的多时像遥感影 ...

  8. 如何将dwg格式高程点转换为三维模型

    概述 有时候我们需要将手上的dwg格式的高程点文件转换为三维模型,这里介绍一种转换方法,希望能对大家有所帮助. 创建点 我们使用的是Global Mapper来处理数据,由于高程点数据的特殊性,在Gl ...

  9. 详解如何将TIFF格式DEM转换为南方CASS高程点

    概述 从网上公开渠道获取的高程数据一般是TIFF格式的DEM数据,如果想要通过南方CASS软件展高程点则需要dat格式的高程点文件,本文将介绍一下如何从TIFF格式的DEM中提取高程点并转换为南方CA ...

  10. 将dos格式文件转换为unix格式

    在windows下换行符是\r\n,表示回到行首并换到下一行 而unix系统中换行符是\n 这样就存在一个问题,在windows上的文档到了unix上可能就无法使用了 针对这个情况有几种解决办法: 1 ...

最新文章

  1. 区块链时代的拜占庭容错:Tendermint(四)
  2. 自考总结--2020年10月份
  3. [工具整理] Debain(KDE)下常用工具
  4. 同级选择器_10-CSS3选择器详解
  5. Java动态代理模拟spring的AOP
  6. Linux Qt打包发布应用程序
  7. 嵌入式基于Linux电机控制,嵌入式linux下控制电机运动
  8. Power BI 夜校完美收官-所有视频资料可下载
  9. Flume-监控之Ganglia
  10. vscode解决方案 关闭源代码管理
  11. 2020-11-04 [蓝桥杯2018决赛]阅兵方阵
  12. 运维管理:极简运维系统设计
  13. Google Earth网页版初探
  14. Cmake 配置 arm-oe-linux-gnueabi-gcc 交叉编译
  15. 翻转课堂在语文教学中的案例
  16. code.aliyun.com拉取提交代码认证失败
  17. OpenCV课程C++实例代码实现
  18. 八大防火墙评测 谁才是真“金钟罩”
  19. android图片颜色过滤,在Android上实现图像颜色过滤与反转
  20. 几年级学奥数最好?奥数金牌教练建议3年级开始学...

热门文章

  1. Rational Rose概述
  2. 苹果序列号查询教程,鉴别手机真伪!
  3. RPG游戏-NPC系统
  4. 【20180905】【计算机技术】为什么每次打印机都要手动设置双面打印?已解决~
  5. PYTHON网络爬虫大数据朱炯明
  6. 软件测试简历项目经验怎么写,没有项目经验?
  7. Hashtable--练习题44:把繁体字转换为简体字
  8. centos 添加windows字体库
  9. 马尔科夫模型系列文章(二)——隐马尔科夫模型
  10. Python算法学习教程