SLD:GIS制圖自動(dòng)化遷移與GeoServer集成實(shí)戰(zhàn))
簡(jiǎn)介本資源是ArcMap2SLD工具1.4.0版本的完整源碼包面向GIS開發(fā)人員、地圖制圖工程師及Geoserver部署運(yùn)維人員解決Esri ArcMap符號(hào)體系尤其是Cartographic Representation向開源標(biāo)準(zhǔn)SLD格式跨平臺(tái)遷移的核心難題。壓縮包共84個(gè)文件719KB包含16個(gè)核心XML映射與配置文件如LUT_sld_mapping_file.xml、10個(gè)VB.NET源碼文件.vb、5個(gè)可執(zhí)行程序.exe、4個(gè)配置文件.config及配套批處理腳本.bat、資源文件.resources和項(xiàng)目工程文件.sln/.vbproj結(jié)構(gòu)完整支持直接編譯與二次開發(fā)。已有666人學(xué)習(xí)下載讀者可獲得開箱即用的ArcGIS_SLD_Converter.exe、預(yù)置世界地圖樣式映射規(guī)則、多語言readme文檔、ArcGIS版本適配腳本及SLD生成全流程XSLT轉(zhuǎn)換模板顯著降低在Geoserver中復(fù)現(xiàn)ArcMap視覺效果的技術(shù)門檻。1. 從ArcMap樣式到SLD一個(gè)地圖制作者的痛點(diǎn)與解法如果你和我一樣長(zhǎng)期在ArcGIS Desktop特別是ArcMap和開源GIS生態(tài)比如GeoServer之間來回切換那你一定對(duì)“樣式轉(zhuǎn)換”這四個(gè)字深惡痛絕。在ArcMap里我們花幾個(gè)小時(shí)精心調(diào)校的圖層符號(hào)化效果——那個(gè)完美的漸變色帶、恰到好處的分類斷點(diǎn)、精心設(shè)計(jì)的標(biāo)注規(guī)則——一旦需要發(fā)布到基于OGC標(biāo)準(zhǔn)的GeoServer上就面臨一個(gè)巨大的鴻溝ArcMap用的是.lyr文件和.mxd文檔里存儲(chǔ)的專有符號(hào)系統(tǒng)而GeoServer認(rèn)的是SLDStyled Layer Descriptor文件。手動(dòng)對(duì)照著ArcMap的界面在GeoServer的SLD編輯器里一點(diǎn)點(diǎn)重寫XML這不僅是重復(fù)勞動(dòng)更是對(duì)耐心和準(zhǔn)確性的終極考驗(yàn)一個(gè)符號(hào)屬性沒對(duì)齊地圖效果就天差地別。我最近在折騰一個(gè)歷史地塊數(shù)據(jù)發(fā)布的項(xiàng)目數(shù)據(jù)在ArcMap里已經(jīng)用一套復(fù)雜的“唯一值多字段”規(guī)則符號(hào)化好了有二十多種地類每種顏色、邊框、填充圖案都不同。當(dāng)需要把這套樣式遷移到GeoServer時(shí)我意識(shí)到必須找到一個(gè)自動(dòng)化的橋梁。這就是“ArcMap2SLD”這類工具存在的核心價(jià)值它試圖將ArcGIS的專有符號(hào)化描述翻譯成標(biāo)準(zhǔn)的SLD XML語言實(shí)現(xiàn)樣式的無損或盡可能少損失遷移。網(wǎng)絡(luò)上流傳的ArcMap2SLD_Code_1.4.0.zip這個(gè)版本就是一個(gè)典型的社區(qū)解決方案。它不是一個(gè)商業(yè)軟件而是一段需要你自己運(yùn)行、甚至可能需要調(diào)試的代碼這本身就充滿了極客精神和實(shí)用主義的味道。簡(jiǎn)單來說ArcMap2SLD瞄準(zhǔn)的就是我們這些“兩棲”GISer的剛需將ArcMap中可視化的制圖成果快速、準(zhǔn)確地轉(zhuǎn)化為可在GeoServer等OGC標(biāo)準(zhǔn)服務(wù)中直接使用的SLD樣式文件。它節(jié)省的不僅是時(shí)間更是保證了從桌面端到服務(wù)端地圖可視化的一致性這對(duì)于需要頻繁更新和發(fā)布地圖的團(tuán)隊(duì)來說價(jià)值巨大。無論你是負(fù)責(zé)GIS系統(tǒng)集成的工程師還是需要發(fā)布Web地圖的制圖員亦或是研究開源GIS的學(xué)生理解并掌握這個(gè)工具鏈都能讓你的工作流順暢不止一個(gè)量級(jí)。2. ArcMap2SLD 1.4.0工具拆解與運(yùn)行環(huán)境搭建ArcMap2SLD_Code_1.4.0.zip這個(gè)文件名已經(jīng)透露了很多信息。“Code”意味著它不是開箱即用的可執(zhí)行文件而是一套源代碼。版本號(hào)1.4.0暗示它可能是一個(gè)仍在迭代中的項(xiàng)目。從相關(guān)熱詞如“geos”很可能指GeoServer和“Converter”來看它的核心功能就是轉(zhuǎn)換。要使用它我們首先得把它“養(yǎng)”起來。2.1 源代碼包結(jié)構(gòu)與核心依賴分析解壓ZIP包后你通常會(huì)看到幾個(gè)關(guān)鍵部分Python腳本可能是.py文件、配置文件、說明文檔README或類似文件以及可能用到的資源文件。作為代碼它必然有運(yùn)行環(huán)境依賴。根據(jù)其功能解析ArcGIS樣式、生成XML我推測(cè)它很可能依賴以下幾個(gè)關(guān)鍵庫ArcPy: 這是最關(guān)鍵的。工具需要與ArcMap對(duì)話讀取.lyr文件或當(dāng)前地圖文檔中的圖層符號(hào)化信息。arcpy是ArcGIS Desktop自帶的Python站點(diǎn)包這意味著這個(gè)工具必須在安裝了ArcGIS DesktopArcMap的Windows計(jì)算機(jī)上運(yùn)行。它無法在純開源環(huán)境或沒有ArcGIS許可的機(jī)器上獨(dú)立工作。lxml 或 xml.etree.ElementTree: 用于構(gòu)建和輸出符合SLD規(guī)范的XML文檔。SLD本質(zhì)上是一個(gè)結(jié)構(gòu)化的XML文件需要可靠的XML庫來生成。其他輔助庫: 如json處理配置、os、sys文件操作等。所以第一步是確認(rèn)你的環(huán)境一臺(tái)安裝了ArcGIS Desktop建議10.x或以上版本的Windows電腦并且確保ArcGIS的Python環(huán)境通常位于C:\Python27\ArcGISx.x可以正常使用。你需要用這個(gè)特定的Python解釋器來運(yùn)行腳本。2.2 實(shí)戰(zhàn)部署從解壓到第一次運(yùn)行假設(shè)你已準(zhǔn)備好環(huán)境我們一步步來解壓與探查將ArcMap2SLD_Code_1.4.0.zip解壓到一個(gè)沒有中文和空格的路徑下例如D:\GIS_Tools\ArcMap2SLD。打開文件夾首先尋找README.md、readme.txt或usage.txt等文件。這是作者的“使用說明書”會(huì)告訴你最基本的運(yùn)行命令和參數(shù)。如果沒有就找主腳本文件通常是名字像arcmap2sld.py或main.py的文件。依賴檢查用文本編輯器打開主Python腳本查看文件開頭的import語句。除了arcpy看看還導(dǎo)入了哪些第三方庫如lxml。對(duì)于非標(biāo)準(zhǔn)庫你可能需要手動(dòng)安裝。打開ArcGIS自帶的Python命令行可以通過開始菜單的ArcGIS Python 2.7找到使用pip install lxml進(jìn)行安裝。注意必須在這個(gè)ArcGIS的Python環(huán)境下安裝而不是你系統(tǒng)自帶的Python。參數(shù)解讀查看腳本說明或代碼找到它需要的輸入?yún)?shù)。典型參數(shù)可能包括input_lyr: 輸入的ArcMap圖層文件.lyr路徑。output_sld: 輸出的SLD文件路徑。可能還有控制符號(hào)化細(xì)節(jié)的選項(xiàng)如是否轉(zhuǎn)換標(biāo)注Label為TextSymbolizer如何處理漸變色ColorMap等。試運(yùn)行在ArcGIS的Python命令行中切換到腳本所在目錄然后運(yùn)行一個(gè)最簡(jiǎn)單的命令。例如cd D:\GIS_Tools\ArcMap2SLD python arcmap2sld.py -i C:\Data\parcels.lyr -o C:\Output\parcels.sld如果腳本設(shè)計(jì)有圖形界面GUI則可能直接雙擊運(yùn)行一個(gè).pyw文件。注意社區(qū)版本的代碼質(zhì)量參差不齊。第一個(gè)“坑”往往是路徑和編碼問題。確保你的數(shù)據(jù)路徑、輸出路徑?jīng)]有特殊字符。如果腳本報(bào)錯(cuò)UnicodeDecodeError可能需要你手動(dòng)修改腳本在文件打開操作中加入encodingutf-8或encodinggbk參數(shù)。這是處理中文Windows環(huán)境下的常見操作。3. 核心轉(zhuǎn)換邏輯ArcGIS符號(hào)化如何映射為SLD規(guī)則工具跑起來只是第一步理解它背后在做什么才能在使用中預(yù)判問題、調(diào)整輸出。ArcMap的符號(hào)系統(tǒng)和SLD的符號(hào)化器Symbolizer在理念上相通但實(shí)現(xiàn)細(xì)節(jié)差異很大。一個(gè)好的轉(zhuǎn)換工具就是在盡力彌合這些差異。3.1 符號(hào)類型的逐項(xiàng)映射這是轉(zhuǎn)換的核心字典我們來看看常見映射關(guān)系A(chǔ)rcMap 符號(hào)類型SLD 符號(hào)化器 (Symbolizer)關(guān)鍵映射項(xiàng)與潛在問題簡(jiǎn)單填充符號(hào)(Simple Fill Symbol)PolygonSymbolizerFill下的CssParameter對(duì)應(yīng)填充色、透明度。Stroke對(duì)應(yīng)邊框。問題ArcMap的“前置式”輪廓放在填充之上在SLD中難以直接實(shí)現(xiàn)通常合并為一個(gè)帶邊框的填充。圖片填充符號(hào)(Picture Fill Symbol)PolygonSymbolizerGraphicFill需要將圖片文件如PNG作為外部資源嵌入或引用。轉(zhuǎn)換工具必須能提取圖片數(shù)據(jù)并生成正確的OnlineResource鏈接。這是容易失敗的點(diǎn)。簡(jiǎn)單線符號(hào)(Simple Line Symbol)LineSymbolizerStroke的CssParameter對(duì)應(yīng)顏色、寬度、線型實(shí)線、虛線等。ArcMap豐富的線型庫如鐵路線、邊界線需要映射為SLD的Stroke的GraphicStroke實(shí)現(xiàn)復(fù)雜轉(zhuǎn)換可能降級(jí)為簡(jiǎn)單虛線。簡(jiǎn)單點(diǎn)符號(hào)(Simple Marker Symbol)PointSymbolizer圓形、方形等基本形狀映射較好。但ArcMap內(nèi)置的復(fù)雜標(biāo)記符號(hào)如箭頭、星形或字符標(biāo)記用字體做符號(hào)需要轉(zhuǎn)換為SLD的Graphic中的Mark并指定WellKnownName匹配度可能不高。字符標(biāo)記符號(hào)(Character Marker Symbol)PointSymbolizerMarkExternalGraphic?最棘手之一。ArcMap指定一個(gè)字體如ESRI Default Marker和字符碼。SLD標(biāo)準(zhǔn)沒有直接對(duì)應(yīng)項(xiàng)。高級(jí)轉(zhuǎn)換器可能嘗試將字體字符導(dǎo)出為小圖標(biāo)PNG并以ExternalGraphic形式引用但過程復(fù)雜且易失真。唯一值渲染(Unique Values)RuleFilter這是轉(zhuǎn)換的“重頭戲”。工具需要遍歷ArcMap中為每個(gè)唯一值設(shè)置的符號(hào)為每個(gè)值生成一個(gè)獨(dú)立的SLDRule并在規(guī)則內(nèi)用ogc:Filter和ogc:PropertyIsEqualTo來匹配屬性值。只要屬性字段和值能正確讀取這部分映射通常比較可靠。分類渲染(Graduated Colors)RuleFilter(使用PropertyIsBetween)將每個(gè)分類區(qū)間如0-10, 10-20轉(zhuǎn)換為一個(gè)Rule其Filter使用ogc:PropertyIsBetween。難點(diǎn)在于ArcMap的“自然斷點(diǎn)法”等分類方法產(chǎn)生的邊界值可能是浮點(diǎn)數(shù)需要精確寫入SLD。3.2 標(biāo)注Label到注記TextSymbolizer的轉(zhuǎn)換這是另一個(gè)復(fù)雜維度。ArcMap強(qiáng)大的標(biāo)注引擎Label Engine可以設(shè)置基于多字段的表達(dá)式、沖突檢測(cè)、權(quán)重、格式化等。SLD的TextSymbolizer雖然功能強(qiáng)大但語法和邏輯不同。標(biāo)注表達(dá)式ArcMap的VBScript或Python標(biāo)注表達(dá)式需要被“解釋”或“重寫”為SLD中ogc:Function或直接拼接的字符串。例如ArcMap表達(dá)式[Field1] vbNewLine [Field2]需要轉(zhuǎn)換為SLD中的ogc:Function namestrConcat...。自動(dòng)轉(zhuǎn)換很難完美復(fù)雜表達(dá)式往往需要手動(dòng)調(diào)整生成的SLD。標(biāo)注樣式字體、大小、顏色、暈圈Halo這些基本樣式映射相對(duì)直接對(duì)應(yīng)TextSymbolizer的Label、Font、Halo等元素。標(biāo)注位置ArcMap中“最佳位置”等智能放置策略在SLD中需要通過LabelPlacement和PointPlacement/LinePlacement的詳細(xì)參數(shù)來模擬很難做到完全一致。實(shí)操心得不要指望標(biāo)注轉(zhuǎn)換能100%完美。對(duì)于非常重要的地圖我的做法是先用工具轉(zhuǎn)換基礎(chǔ)符號(hào)點(diǎn)、線、面獲得一個(gè)大致可用的SLD。然后在GeoServer的SLD編輯器中專注于手動(dòng)重寫或精細(xì)調(diào)整TextSymbolizer部分。這樣效率最高因?yàn)榉?hào)的視覺權(quán)重高于標(biāo)注先保證符號(hào)正確再優(yōu)化標(biāo)注。4. 高級(jí)功能與轉(zhuǎn)換邊界什么能轉(zhuǎn)什么不能轉(zhuǎn)ArcMap2SLD這類工具并非萬能。理解它的能力邊界能幫你避免無謂的折騰直接找到正確的工作方向。4.1 可能成功轉(zhuǎn)換的復(fù)雜場(chǎng)景基于比例的顯示如果ArcMap圖層設(shè)置了比例依賴的可見性如某些要素在放大到1:5000時(shí)才顯示工具應(yīng)能將其轉(zhuǎn)換為SLD規(guī)則中的MinScaleDenominator和MaxScaleDenominator。這是SLD標(biāo)準(zhǔn)的一部分映射很直接。多屬性字段組合的唯一值A(chǔ)rcMap支持用多個(gè)字段共同定義“唯一值”如“土地利用類型”和“等級(jí)”組合。這需要工具生成更復(fù)雜的OGC過濾器例如ogc:And里面包含兩個(gè)ogc:PropertyIsEqualTo。邏輯清晰實(shí)現(xiàn)起來不難。圖層透明度與顏色透明度圖層整體的透明度設(shè)置以及符號(hào)自身的顏色透明度RGBA中的A都應(yīng)該能合并計(jì)算后轉(zhuǎn)換到SLD對(duì)應(yīng)的CssParameter中如fill-opacity,stroke-opacity。4.2 幾乎肯定會(huì)有損失或無法轉(zhuǎn)換的場(chǎng)景高級(jí)制圖效果圖層暈渲/陰影效果ArcMap的“圖層屬性”中的陰影效果在SLD標(biāo)準(zhǔn)中沒有直接對(duì)應(yīng)物。無法轉(zhuǎn)換。符號(hào)級(jí)別繪制ArcMap中可以精細(xì)控制不同符號(hào)等級(jí)的壓蓋關(guān)系。SLD的渲染順序由規(guī)則順序決定但無法實(shí)現(xiàn)單個(gè)符號(hào)內(nèi)部的復(fù)雜層級(jí)控制。3D符號(hào)ArcScene中的3D符號(hào)系統(tǒng)與SLD的2D渲染模型完全不兼容。數(shù)據(jù)驅(qū)動(dòng)的高級(jí)符號(hào)化圖表符號(hào)ArcMap的“圖表”渲染器餅圖、柱狀圖在SLD中無對(duì)應(yīng)。需要借助GeoServer的擴(kuò)展或完全不同的方法如前端渲染實(shí)現(xiàn)。多比例尺符號(hào)同一個(gè)要素類在不同比例尺下使用完全不同的幾何類型如全國尺度用點(diǎn)省級(jí)尺度用面進(jìn)行符號(hào)化。這超出了樣式轉(zhuǎn)換的范疇屬于數(shù)據(jù)建模與多尺度表達(dá)問題。依賴ArcGIS特定資源的符號(hào)樣式庫引用如果圖層符號(hào)引用的是ArcMap自定義樣式庫.style中的項(xiàng)目而該樣式庫未隨數(shù)據(jù)分發(fā)轉(zhuǎn)換工具可能無法解析該引用導(dǎo)致符號(hào)丟失或替換為默認(rèn)符號(hào)。服務(wù)器緩存/切片方案與ArcGIS Server動(dòng)態(tài)制圖或緩存切片相關(guān)的設(shè)置與GeoServer的GeoWebCache機(jī)制不同無法通過SLD轉(zhuǎn)換。我的經(jīng)驗(yàn)是在啟動(dòng)轉(zhuǎn)換前先在ArcMap里審視一下你的圖層符號(hào)化。如果它大量使用了上述“無法轉(zhuǎn)換”的高級(jí)功能那么你可能需要調(diào)整策略。要么在ArcMap中簡(jiǎn)化符號(hào)化方案采用更“標(biāo)準(zhǔn)”的方式多用簡(jiǎn)單符號(hào)、唯一值、分類渲染要么接受轉(zhuǎn)換后需要在GeoServer中手動(dòng)重建部分效果的現(xiàn)實(shí)。轉(zhuǎn)換工具的最佳應(yīng)用場(chǎng)景是將那些基礎(chǔ)的、標(biāo)準(zhǔn)的、用于傳達(dá)核心信息的符號(hào)化方案進(jìn)行遷移。5. 轉(zhuǎn)換后處理與GeoServer集成實(shí)戰(zhàn)假設(shè)轉(zhuǎn)換成功你得到了一個(gè).sld文件。但這并不意味著工作結(jié)束這才是與GeoServer磨合的開始。5.1 SLD文件驗(yàn)證與常見錯(cuò)誤修復(fù)首先用文本編輯器如VS Code打開生成的SLD文件。一個(gè)有效的SLD首先必須是格式良好的XML。XML結(jié)構(gòu)檢查查看開頭是否有正確的?xml version1.0 encodingUTF-8?聲明根元素是否為StyledLayerDescriptor命名空間如xmlnshttp://www.opengis.net/sld是否正確定義。格式錯(cuò)誤會(huì)導(dǎo)致GeoServer完全無法識(shí)別。符號(hào)化器嵌套檢查確保每個(gè)Rule下的Point/Line/PolygonSymbolizer等元素閉合正確。常見的錯(cuò)誤是標(biāo)簽不匹配或?qū)傩灾等鄙僖?hào)。屬性字段名匹配檢查SLD中所有ogc:PropertyName標(biāo)簽內(nèi)的字段名是否與發(fā)布到GeoServer的數(shù)據(jù)源中的字段名完全一致。ArcMap中的字段名可能是中文或者有空格在SLD中必須正確引用。GeoServer對(duì)字段名大小寫是否敏感取決于底層數(shù)據(jù)存儲(chǔ)如PostGIS通常不敏感但Shapefile可能敏感。顏色值格式檢查CssParameter namefill等處的顏色值。ArcMap可能輸出#FF0000十六進(jìn)制或rgb(255,0,0)而SLD通常也支持這些格式但需保持一致。有時(shí)會(huì)錯(cuò)誤地包含透明度值需要確認(rèn)是否符合#AARRGGBB格式。如果SLD文件本身沒問題但在GeoServer中應(yīng)用后效果不對(duì)就需要進(jìn)入下一步調(diào)試。5.2 在GeoServer中調(diào)試SLD樣式上傳與關(guān)聯(lián)在GeoServer管理界面的“樣式”頁面上傳或創(chuàng)建新樣式將SLD內(nèi)容粘貼進(jìn)去保存。然后在圖層的“發(fā)布”頁面找到“樣式”選項(xiàng)卡將其關(guān)聯(lián)到該圖層。圖層預(yù)覽使用“圖層預(yù)覽”功能查看效果。如果地圖一片空白或符號(hào)異常首先打開瀏覽器的開發(fā)者工具F12查看“網(wǎng)絡(luò)”(Network)選項(xiàng)卡中WMS GetMap請(qǐng)求的返回。如果GeoServer報(bào)錯(cuò)錯(cuò)誤信息會(huì)在這里顯示。常見的錯(cuò)誤如“java.lang.IllegalArgumentException: The requested Style can not be used with this layer.” 通常意味著SLD中指定的幾何類型如PolygonSymbolizer與圖層的實(shí)際幾何類型如MultiLineString不匹配。使用SLD驗(yàn)證器GeoServer自帶一個(gè)強(qiáng)大的調(diào)試工具在“樣式”編輯頁面底部有一個(gè)“驗(yàn)證”按鈕。點(diǎn)擊它會(huì)生成一個(gè)樣例XML并顯示樣式應(yīng)用在樣例數(shù)據(jù)上的效果。這是一個(gè)極其重要的功能。你可以在這里實(shí)時(shí)修改SLD代碼點(diǎn)擊“應(yīng)用”立即看到效果而無需反復(fù)保存、關(guān)聯(lián)、預(yù)覽。分規(guī)則調(diào)試如果樣式包含多個(gè)規(guī)則可以嘗試在SLD中注釋掉!-- --大部分規(guī)則只保留一個(gè)看是否生效。然后逐個(gè)取消注釋定位到引發(fā)問題的具體規(guī)則。這能有效排查是某個(gè)特定符號(hào)的語法問題還是規(guī)則間的過濾器邏輯沖突。5.3 性能優(yōu)化與進(jìn)階調(diào)整當(dāng)樣式正確顯示后我們還要關(guān)注它在Web地圖服務(wù)中的性能。規(guī)則數(shù)量與復(fù)雜度一個(gè)包含上百條唯一值規(guī)則的SLD在每次地圖渲染時(shí)都會(huì)對(duì)每個(gè)要素進(jìn)行過濾判斷可能影響性能??紤]是否可以在數(shù)據(jù)層面進(jìn)行簡(jiǎn)化如合并一些次要類別或者使用SLD的ElseFilter來減少規(guī)則數(shù)量。外部圖形引用如果SLD中使用了ExternalGraphic引用在線圖片要確保URL穩(wěn)定且圖片尺寸適中。過大的圖標(biāo)會(huì)顯著增加傳輸數(shù)據(jù)量。建議將小圖標(biāo)內(nèi)嵌為Base64編碼雖然會(huì)增大SLD文件但減少HTTP請(qǐng)求。利用GeoServer擴(kuò)展函數(shù)SLD可以調(diào)用GeoServer內(nèi)置的轉(zhuǎn)換函數(shù)ogc:Function實(shí)現(xiàn)更動(dòng)態(tài)的樣式。例如根據(jù)屬性值動(dòng)態(tài)計(jì)算顏色或大小。這超出了ArcMap2SLD工具的生成范圍但你可以手動(dòng)在生成的SLD基礎(chǔ)上進(jìn)行增強(qiáng)。踩坑實(shí)錄我曾遇到一個(gè)轉(zhuǎn)換后的SLD在GeoServer中預(yù)覽正常但在OpenLayers前端調(diào)用時(shí)某些面要素閃爍或顯示不全。排查后發(fā)現(xiàn)是SLD中某個(gè)PolygonSymbolizer的Fill里同時(shí)定義了GraphicFill和純色CssParameter導(dǎo)致渲染引擎解析異常。解決辦法是在GeoServer的SLD驗(yàn)證器里簡(jiǎn)化這個(gè)符號(hào)只保留一種填充方式。教訓(xùn)是轉(zhuǎn)換工具生成的SLD可能包含一些符合標(biāo)準(zhǔn)但渲染引擎處理有歧義的語法在生產(chǎn)環(huán)境使用前務(wù)必在目標(biāo)GeoServer版本上進(jìn)行完整的功能和壓力測(cè)試。從ArcMap到GeoServer的樣式遷移ArcMap2SLD這類工具提供了一個(gè)寶貴的自動(dòng)化起點(diǎn)但它不是終點(diǎn)。它處理了80%的機(jī)械性翻譯工作剩下的20%——包括對(duì)轉(zhuǎn)換結(jié)果的驗(yàn)證、調(diào)試、性能調(diào)優(yōu)以及與特定發(fā)布環(huán)境的適配——?jiǎng)t需要我們結(jié)合對(duì)SLD標(biāo)準(zhǔn)的理解和GeoServer的實(shí)操經(jīng)驗(yàn)來完成。這個(gè)過程本質(zhì)上是在兩個(gè)偉大的GIS世界之間搭建一座理解的橋梁雖然偶爾需要手動(dòng)修繕但一旦貫通數(shù)據(jù)流動(dòng)和可視化的效率將獲得巨大的提升。本文還有配套的精品資源點(diǎn)擊獲取