ArcGIS的ArcMap的Mxd格式符号转换为Geoserver style的sld格式
? ? ? ? 最近需要設計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格式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [异步、tensorflow] - 子线
- 下一篇: python url拼接_详解Pytho