亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于B/S模式的地圖打印輸出技術研究

        2018-03-09 06:06:11張娜李國清張蓓蓓
        資源導刊(信息化測繪) 2018年2期
        關鍵詞:電子地圖腳本文檔

        張娜 李國清 張蓓蓓

        (河南省遙感測繪院,河南 鄭州 450008)

        1 引言

        隨著信息化的發(fā)展,地理信息應用服務模式逐漸發(fā)生轉變。傳統(tǒng)紙質地圖由專業(yè)技術人員通過編輯準備、數(shù)據(jù)獲取、數(shù)據(jù)編輯處理、直接制版等多道工序完成[1]。如今,各行各業(yè)都需要隨時輸出專題地圖,傳統(tǒng)工序已不能滿足當前實時制圖打印的需求。在互聯(lián)網(wǎng)時代,電子地圖已經(jīng)成為人們日常使用的主要地圖產(chǎn)品,其所儲存的信息遠遠高于普通地圖[2]。在電子地圖的基礎上,隨時進行專題制圖輸出成為用戶的主要需求。從本質上講,電子地圖的打印輸出就是將電子地圖轉化為紙質地圖[3]。當前信息化系統(tǒng)主要支持基于C/S模式的地圖專題打印輸出,但是隨著信息化系統(tǒng)的發(fā)展,基于B/S模式的行業(yè)信息化系統(tǒng)逐漸成為主流,而當前大部分B/S模式電子地圖的打印只針對A3、A4等小幅面的圖片式打印輸出,無法滿足用戶對大幅面專題地圖矢量結果輸出的需求。

        為了滿足用戶日常工作需求,本文通過研究基于B/S模式的大幅面地圖打印輸出技術,使用Python語言編寫地圖打印服務文件,通過ArcGIS Server軟件完成打印服務發(fā)布,便于非專業(yè)用戶在B/S信息化系統(tǒng)中實現(xiàn)一鍵式地圖打印輸出。

        2 技術原理

        采用Python腳本語言,基于ArcGIS軟件的Python二次開發(fā)接口即arcpy開發(fā)完成。arcpy提供了大量類和函數(shù),使用它可以直接執(zhí)行ArcGIS工具箱中的工具,并且支持創(chuàng)建原生對象。在ArcGIS環(huán)境中,用戶可以將編寫的Python腳本語言導入到Python ToolBox中,生成腳本工具[4],同時ArcGIS 10.1以上版本支持將用戶制作的地理處理工具發(fā)布為服務,通過在線方式完成地理處理工作。ArcGIS 10.1以上版本Server自帶有地圖打印服務,但是該服務主要用于輸出A3、A4等常規(guī)尺寸地圖。為實現(xiàn)大幅面矢量數(shù)據(jù)輸出,需采用腳本語言自定義地圖打印服務。

        首先創(chuàng)建自定義地理處理服務的Python腳本,腳本文件采用ConvertWebMapToMapDocument函數(shù),該函數(shù)可將待打印或導出的Web地圖(JSON格式)轉換為地圖文檔,然后arcpy.mapping腳本在輸出地圖文檔的所有圖層中循環(huán),除與Web地圖JSON中的服務圖層相對應的矢量圖層外,其他所有圖層均被移除。腳本可讀取自定義打印任務中的額外參數(shù),隨后可將地圖文檔導出為所選格式,如PDF。部分示例代碼如下所示:

        df = arcpy.mapping.ListDataFrames(mxd,'Webmap')[0]

        serviceLayersNames = [slyr.name for slyr in arcpy.mapping.ListLayers(mxd, data_frame=df)if slyr.isServiceLayer and slyr.visible and not slyr.isGroupLayer]

        vectorLayersNames = [vlyr.name for vlyr in arcpy.mapping.ListLayers(mxd, data_frame=df)if not vlyr.isServiceLayer and not vlyr.isGroupLayer]

        removeLayerNameList = [vlyrName for vlyrName in vectorLayersNames if vlyrName not in serviceLayersNames]

        for lyr in arcpy.mapping.ListLayers(mxd, data_frame=df):

        if not lyr.isGroupLayer

        and not lyr.isServiceLayer

        and lyr.name in removeLayerNameList

        and lyr.name in vectorLayersNames:

        arcpy.mapping.RemoveLayer(df, lyr)

        在創(chuàng)建腳本工具過程中,需設置地圖打印交互參數(shù),包括以下幾個方面:

        (1)Web_Map_as_JSON:該參數(shù)為Web應用程序當前的地圖狀態(tài),用JSON表示。

        (2)Fromat:傳遞打印時地圖圖像使用的格式。

        (3)Layout_Template:用于設置打印時使用的地圖模板文檔。

        (4)Georef_info:用于設置是否將坐標信息導出。

        (5)Output_File:將要創(chuàng)建的輸出文件。

        3 地圖打印技術路線

        本文基于ArcGIS軟件完成B/S地圖打印輸出,具體技術路線如圖1所示。

        圖1 技術流程圖

        (1)準備用于打印輸出的數(shù)據(jù)文件:要進行大幅面的矢量數(shù)據(jù)輸出,需要將所有數(shù)據(jù)全部導入gdb文件數(shù)據(jù)庫。已制作好的切片地圖數(shù)據(jù)同樣可以采用鑲嵌數(shù)據(jù)集的方式導入gdb文件數(shù)據(jù)庫,并將地圖文檔發(fā)布為服務,用于Web程序打印輸出。

        (2)準備數(shù)據(jù)打印輸出模板:在服務器端根據(jù)用戶需求提前配置地圖打印模板,包括地圖打印幅面、指北針、比例尺、圖例等各類地圖整飾要素。

        (3)編寫Python腳本:根據(jù)打印輸出需求,編寫Python腳本,設置地圖模板位置、打印輸出參數(shù)等。

        (4)創(chuàng)建Python工具:基于Python腳本程序創(chuàng)建地理處理工具,設置相關參數(shù),可先在arcmap桌面端進行工具測試,對錯誤進行修改直到測試成功。

        (5)發(fā)布打印服務:將創(chuàng)建的腳本工具共享發(fā)布為地理處理服務。

        (6)地圖打印輸出:在Web程序中調用發(fā)布的數(shù)據(jù)及地理處理服務,實現(xiàn)打印輸出。

        4 功能實現(xiàn)

        4.1 打印模板設置

        為讓用戶在瀏覽器上一鍵式出圖打印,需在服務器端設置打印模板。根據(jù)需求,在arcmap的layout view視圖中設置地圖打印模板,如紙張大小可設置為60 cm×60 cm、100 cm×60 cm等尺寸,自定義添加圖名、圖例、指北針等地圖整飾要素,設置相關顯示樣式。

        4.2 打印服務發(fā)布

        創(chuàng)建地圖打印工具時,根據(jù)提前制作的地圖模板,設置打印參數(shù),便于用戶在輸出時選擇。在打印服務發(fā)布時,應注意同步、異步問題,程序設置應與服務相同;根據(jù)用戶需求進行打印測試,一般情況下耗時短用同步,耗時較長則用異步。

        4.3 Web端地圖打印

        在Web程序中,基于ArcGIS提供的JS API接口,使用JavaScript語言調用地圖數(shù)據(jù)服務及打印服務。為滿足用戶一鍵式打印需求,采用所見即所得的地圖打印方式。打印出圖比例尺即用戶當前瀏覽的比例尺,紙張尺寸可選,出圖范圍根據(jù)比例尺及選定的紙張尺寸由程序自動計算確定。主要代碼如下所示:

        function init() {

        printFun.map = new esri.Map("printmap",{extent:myMap.extent });

        var dynURL=”http:// MyServer:6080/ArcGIS/rest/services/pdscb/MapServer”;

        printFun.curlayer= new esri.layers.ArcGISTiledM apServiceLayer(dynURL);

        printFun.map. addLayer(printFun.curlayer);

        var printUrl="http://MyServer:6080/ArcGIS/rest/services/Print/pdsprint/GPServer/pdsprint ";

        printTask = new esri.tasks.PrintTask(printUrl,{async: true});

        params = new esri.tasks.PrintParameters();params.map = printFun. map;

        }

        function print(){

        var ptemplate = new esri.tasks.

        PrintTemplate();

        ptemplate.preserveScale = false;

        params.template={layout:select_layout,format:select_format,

        l a y o u t O p t i o n s:{t i t l e T e x t:t i t l e,legendLayers:[legendLayer]}};

        printTask.execute(params, printComplete);

        }

        function printComplete(result){

        window.open(result.url);

        }

        dojo.addOnLoad(init);

        在B/S系統(tǒng)中增加地圖打印輸出模塊,用戶可根據(jù)需求選擇紙張大小及輸出格式,設置地圖標題,即可完成專題地圖輸出工作。地圖打印界面如圖2所示,輸出地圖文檔如圖3所示。

        圖2 地圖打印界面

        圖3 地圖制圖輸出結果

        5 結束語

        基于B/S模式的地圖打印輸出技術讓用戶能在瀏覽器上實時進行地圖打印輸出,解決了傳統(tǒng)地圖打印需安裝桌面軟件、地圖輸出設置復雜等問題。該技術將復雜的設置操作放在服務器端,由專業(yè)人員進行維護,降低了地理信息系統(tǒng)使用門檻,拓展了地理信息服務范圍,在各行業(yè)信息化系統(tǒng)中有廣闊的應用前景。

        [1]張冬梅.數(shù)字地圖制圖技術淺析[J].測繪通報, 2009 (12):70-72.

        [2]魏紅艷,常軍.淺談電子地圖的應用現(xiàn)狀及發(fā)展前景[J].才智, 2015 (10).

        [3]張曉輝,游雄,賈奮勵.電子地圖打印的總體設計和輸出[J].測繪科學技術學報,2007,24 (2):145-148.

        [4]ArcGIS幫助10.1[EB/OL].http://resources.ArcGIS.com/zh-cn/help/main/10.1/index.html.

        猜你喜歡
        電子地圖腳本文檔
        中國公豬站引種指南電子地圖
        酒駕
        有人一聲不吭向你扔了個文檔
        安奇奇與小cool 龍(第二回)
        數(shù)據(jù)庫系統(tǒng)shell腳本應用
        電子測試(2018年14期)2018-09-26 06:04:24
        快樂假期
        中學生(2017年19期)2017-09-03 10:39:07
        基于Mapserver的增強現(xiàn)實電子地圖的設計與實現(xiàn)
        基于RI碼計算的Word復制文檔鑒別
        Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat
        電子地圖在初中地理教學中的應用實踐
        国内精品无码一区二区三区| 精品国产亚洲av麻豆| 欧美人与动性xxxxx杂性| 丰满人妻被黑人中出849| 一区二区韩国福利网站| 国产精品99久久不卡二区| 久久在一区二区三区视频免费观看 | 91精品啪在线观看国产色| 国产黄色一级到三级视频| 国产极品少妇一区二区| 少妇下蹲露大唇无遮挡| 国产午夜精品理论片| 国内偷拍视频一区二区| 国产精品一区二区三区卡| 免费观看激色视频网站| 国产人澡人澡澡澡人碰视频| 四虎在线中文字幕一区| 久久久久99精品成人片欧美 | 日韩AV不卡六区七区| 人妻少妇喷水意淫诱惑| 国产熟人精品一区二区| 亚洲国色天香卡2卡3卡4| 久久精品免费免费直播| 中文字幕久久人妻av| 国产高清成人在线观看视频| 亚洲а∨天堂久久精品2021| 久久精品国产亚洲av大全相关| 美女一区二区三区在线视频| 国产激情艳情在线看视频| 天堂sv在线最新版在线| 国产伪娘人妖在线观看| 亚洲国产中文字幕在线视频综合 | 久久久精品久久久久久96| 军人粗大的内捧猛烈进出视频| 99久久久无码国产精品动漫| 国产在线观看一区二区三区av| 久久精品中文闷骚内射| 91av精品视频| 男女啪啪免费视频网址 | 久久人人爽人人爽人人片av东京热| 亚洲中文av一区二区三区|