MapServer教程


https://mapserver.org/

MapServer是一個開放源代碼平台,用於將空間數據和交互式地圖應用程序發布到Web。由OSGEO批准的MapServer項目指導委員會(PSC)負責管理和管理由世界各地的開發人員和用戶維護、改進和支持的項目。有關郵件列表等,請參閱社區活動頁。

About:

MapServer是一個用C語言編寫的開源地理數據呈現引擎。除了瀏覽地理信息系統數據之外,MapServer還允許您創建“地理圖像地圖”,即可以引導用戶訪問內容的地圖。例如,明尼蘇達州的dnr娛樂指南針通過一個應用程序為用戶提供超過10000個網頁、報告和地圖。同一個應用程序充當站點其他部分的“地圖引擎”,在需要時提供空間上下文。有關更多實時示例,請參閱MapServer網站庫

MAPServer最初是由明尼蘇達大學(UMN)Fornet項目與美國宇航局和明尼蘇達自然資源部(MNDNR)合作開發的。后來,它由Terrasip項目主辦,這是一個由美國國家航空航天局贊助的UMN和一個土地管理利益聯盟之間的項目。

MAPServer是OsGeo基金會的創始項目之一,並由越來越多的開發者(從世界各地接近20)維護。它得到了各種組織的支持,這些組織為增強和維護提供資金,並且由由開發人員和其他貢獻者組成的MapServer項目指導委員會在OSGEO內進行管理。所有源代碼都是通過GitHub公開提供的。

  • Advanced cartographic output高級制圖輸出

    • Scale dependent feature drawing and application execution 與比例相關的特征繪制和應用程序執行

    • Feature labeling including label collision mediation 功能標簽,包括標簽沖突中介

    • Fully customizable, template driven output 完全可定制的模板驅動輸出

    • TrueType fonts TrueType字體

    • Map element automation (scalebar, reference map, and legend)  地圖元素自動化(比例尺、參考地圖和圖例)

    • Thematic mapping using logical- or regular expression-based classes 使用基於邏輯或正則表達式類的主題地圖

  • Support for popular scripting and development environments 支持流行的腳本和開發環境

    • PHP, Python, Perl, Ruby, Java, and .NET

  • Cross-platform support 跨平台支持

    • Linux, Windows, Mac OS X, Solaris, and more

  • Support of numerous Open Geospatial Consortium (OGC) standards 支持大量的開源空間地理協會標准

    • WMS (client/server), non-transactional WFS (client/server), WMC, WCS, Filter Encoding, SLD, GML, SOS, OM

  • A multitude of raster and vector data formats多種柵格和矢量數據格式

  • Map projection support地圖投影支持

    • On-the-fly map projection with 1000s of projections through the PROJ library

https://www.cnblogs.com/eshinex/p/10275700.html

 

配置數據:https://www.osgeo.cn/post/i0a19

發布數據:

應用開發:

源碼下載:它是如何將tomcat給嵌入進來的 https://mapserver.org/download.html

https://www.osgeo.cn/webgis/

 git:https://github.com/mapserver/mapserver

已經有168個版本的release了

Development:https://mapserver.org/development/index.html#development

 

MapServer教程1 第一章

 第一章 Introduction 簡介

An Introduction to MapServer MapServer簡介

  • MapServer Overview 概括
  • Anatomy of a MapServer Application MapServer應用程序剖析
  • Installation and Requirements 安裝和要求
  • Introduction to the Mapfile Mapfile簡介
  • Making the Site Your Own 制作個人站點
  • Enhancing your site 增強你的站點
  • How do I get Help? 從哪尋求幫助

 

第一章 Introduction 簡介

1.1.1 MapServer Overview 概括

MapServer是一個流行的開源項目,其目的是通過Internet顯示動態空間地圖。. Some of its major features include:

•支持顯示和查詢數百種光柵、矢量和數據庫格式
•能夠在各種操作系統(Windows、Linux、Mac OS X等)上運行
支持流行的腳本語言和開發環境(PHP、Python、Perl、Ruby、Java、.NET)
•飛行中的預測
•高質量渲染
•完全可定制的應用程序輸出
•許多現成的開源應用程序環境

在其最基本的形式中,mapserver是一個CGI程序,它在Web服務器上處於非活動狀態。當請求發送到MapServer時,它使用請求URL和映射文件中傳遞的信息來創建請求映射的圖像。請求還可以返回圖例、比例尺、參考地圖和作為CGI變量傳遞的值的圖像。

另外查看:術語表概述了本文檔中的許多行話術語。

可以通過mapscript或模板化來擴展和定制mapserver。它可以支持許多不同的矢量和光柵輸入數據格式,並且可以生成多種輸出格式。大多數預編譯的mapserver發行版都包含其大部分功能。

另外查看:在Unix上編譯和在Win32上編譯

注意:mapscript為mapserver提供了一個腳本接口,用於構建Web和獨立應用程序。mapscript可以獨立於cgi mapserver使用,它是一個可加載模塊,可以將mapserver功能添加到您最喜歡的腳本語言中。MpScript目前存在於PHP、Perl、Python、Ruby、Tcl、Java和.NET調味品中。

本指南不會明確討論mapscript,有關詳細信息,請參閱mapscript參考(第5章會講)。

1.1.2 MapServer應用程序剖析
一個簡易的MapServer應用程序包括:

• Map File - 用於MapServer應用程序的結構化文本配置文件。它定義了地圖的區域,告訴MapServer程序:你的數據在哪里,以及輸出圖像的位置。它還定義了地圖層,包括它們的數據源、投影和符號。它必須具有.map擴展名,否則MapServer將無法識別它。

另行查看: MapServer Mapfile Reference(第4章)

• 地理數據 - MapServer可以使用許多地理數據源類型。默認格式為ESRI形狀格式。可以支持許多其他數據格式,下面將在向站點添加數據時進一步討論這一點。

See also:
Vector Input Reference and Raster Input Reference 

• HTML頁面 - 用戶和MapServer之間的接口。它們通常位於web根目錄中。在最簡單的形式中,可以調用mapserver在HTML頁面上放置靜態映射圖像。為了使地圖具有交互性,圖像被放置在頁面的HTML表單中。

CGI程序是無狀態的,他們得到的每一個請求都是新的,他們不記得上一次被你的應用程序擊中的事情。因此,每次應用程序向MapServer發送請求時,都需要在隱藏的表單變量或URL變量中傳遞上下文信息(什么層上,您在地圖上的位置,應用程序模式等)。

一個簡易的MapServer CGI應用程序可能包括兩個HTML頁面: 

– 初始化文件-使用帶有隱藏變量的表單向Web服務器和MapServer發送初始查詢。此表單可以放在另一個頁面上,也可以通過將初始化信息作為URL中的變量傳遞來替換。

– 模板文件-控制MapServer輸出的地圖和圖例在瀏覽器中的顯示方式。通過引用模板html中的mapserver cgi變量,您允許mapserver使用與應用程序當前狀態相關的值(例如,映射圖像名稱、引用圖像名稱、映射范圍等)填充這些變量,因為它創建了供瀏覽器讀取的html頁面。該模板還確定用戶如何與MapServer應用程序交互(瀏覽、縮放、平移、查詢)。

See also:Templating 

https://blog.csdn.net/qq_38237806/article/details/80361683

https://blog.csdn.net/u010924834/article/details/53434322

• mapserver cgi—接收請求並返回圖像、數據等的二進制或可執行文件,位於Web服務器的cgi bin或scripts目錄中。Web服務器用戶必須對其所在的目錄具有執行權限,並且出於安全原因,它不應位於Web根目錄中。默認情況下,此程序稱為mapserv

• Web/HTTP服務器-當用戶_a_zs瀏覽器點擊時提供HTML頁面。在安裝MAPServer的計算機上,您需要一個工作的Web(HTTP)服務器,如Apache或Microsoft Internet Information Server。

1.1.3 安裝及要求

硬件要求
mapserver在Linux、Windows、Mac OS X、Solaris等系統上運行。要編譯或安裝某些必需的程序,您可能需要計算機的管理權限。人們通常會問一些關於MapServer應用程序最低硬件規格的問題,但答案實際上是特定於單個應用程序的。為了開發和學習的目的,一個非常小的機器可以很好地工作。對於部署,您需要研究從數據到服務器配置的所有優化。

軟件要求
您需要在安裝MAPServer的計算機上安裝一個工作正常且配置正確的Web(HTTP)服務器,如Apache或Microsoft Internet Information Server。
如果您在Windows計算機上,並且沒有安裝Web服務器,建議您使用“ms4w”,它將安裝預配置的Web服務器、mapserver、mapcache、php、tinyows和許多其他實用程序。Windows用戶也可以選擇簽出OSGEO4W安裝程序。
本介紹將假設您正在使用MS4W安裝進行后續操作。在Linux或Mac OS X上獲取mapserver應該很簡單。訪問下載以安裝Mac OS X和Linux上的預編譯MapServer版本。

注意:osgeo live虛擬機也包含可供使用的mapserver

您還需要一個Web瀏覽器和一個文本編輯器(vi、emacs、notepad++、textpad、homesite)來修改HTML和映射文件。

技能要求
除了學習MapServer應用程序的不同組件如何協同工作以及學習映射文件語法之外,構建基本應用程序還需要對幾個技能領域有一些概念上的理解和熟練掌握。
您需要能夠創建或至少修改HTML頁面,並了解HTML表單的工作方式。由於MapServer應用程序的主要目的是創建地圖,因此您還需要了解地理數據的基礎知識,以及地圖投影。隨着應用程序變得越來越復雜,SQL、DHTML/JavaScript、Java、數據庫、表達式、編譯和腳本編寫的技巧可能非常有用。

Windows安裝
注意:可以從各種來源獲得針對MapServer的預編譯二進制文件,請參閱的Windows部分
下載頁面

MS4W(MapServer for Windows)是包含Apache Web服務器、MapServer及其所有依賴項和工具的長時間安裝程序;MS4W還包含多個附加包,其中包含60多個預配置的MapServer配置文件(MapFile)和數據。以下步驟說明如何安裝MS4W:

4)選擇要安裝的軟件包。請務必選擇_aij_mapserver itasca演示應用程序_a_i,因為我們稍后將使用此演示。
5)點擊_aijnext_a_i按鈕
6)單擊_aijbrowse_a_e_a_i按鈕,選擇安裝路徑。您可以安全地保留默認值(c/),安裝程序將創建c:/ms4w。

7)點擊_aijnext_a_i按鈕
8)輸入用於Apache服務的端口號。在大多數情況下,您可以將端口保留為80,除非有什么東西正在使用該端口,如IIS服務。
10)點擊_aijinstall_a_i按鈕

1.1.4 MapFile文件簡介
.map文件是用於MapServer數據訪問和樣式設置的基本配置文件。該文件是一個ASCII文本文件,由不同的對象組成。每個對象都有各種可用的參數。所有.map文件(或map file)參數都記錄在mapfile引用中。下面是一個僅顯示一個圖層的簡單地圖文件示例,以及地圖圖像輸出:

注:
•地圖文件中的注釋使用_a__a_z字符´指定。
•MapServer從上到下解析映射文件,因此將最后繪制映射文件末尾的層。
(意味着它們將顯示在其他層的頂部)
•始終建議使用相對路徑
•路徑應引用起來(接受單引號或雙引號)
•上述示例建立於以下目錄結構:
  –只要Web服務器可以訪問映射文件,它就可以放在任何地方。通常,一個盡量避免把它放在一個可以在網上訪問的地方。讓我們說它已經就位了在/home/msuser/mapfiles中/
  –字體文件的位置是相對於地圖文件給出的,在這種情況下:/home/msuser/etc/fonts.txt

  –數據集(blue大理石.gif)的位置相對於地圖文件給出,在這種情況下:/主頁/用戶/數據/
  –符號文件的位置相對於地圖文件給出,在這種情況下:/home/msuser/etc/symbols.txt
  –mapserver生成的文件將放在/ms4w/tmp/ms_tmp/目錄中。網絡服務器必須能夠在此目錄中放置文件。Web服務器必須將此目錄作為/ms_tmp提供(如果Web服務器位於www.ms.org上,則目錄的網址必須為:http://www.ms.org/ms_tmp/。

MAP Object 

•范圍是以輸出圖的單位表示的輸出范圍
•大小是地圖圖像的寬度和高度(像素)
•ImageColor是默認的圖像背景色

提示:MapServer接受以RGB值或十六進制字符串表示的顏色。

注意:MapServer當前使用的是基於像素中心的擴展模型,這與GDAL或WMS使用的模型稍有不同。

LAYER Object

•從MapServer 5.0開始,對mapfile中的層數沒有限制
•DATA參數相對於MAP對象的SHAPEPATH參數。
•如果文件名中沒有提供DATA擴展名,MapServer將假定其為ESRI形狀格式(.shp)

Raster Layers 柵格圖層

See also:
  Raster Data

Vector Layers矢量圖層 
可以顯示點、線或多邊形類型的向量層。以下示例顯示如何使用outlinecolor參數僅顯示類型多邊形圖層中的線:

提示:MapServer接受以RGB值或十六進制字符串表示的顏色。

See also:
  Vector Data 
CLASS and STYLE Objects類和樣式對象

•典型的樣式信息存儲在圖層LAYER的類CLASS和樣式STYLE對象中。
•從MapServer 5.0開始,對映射文件中的類或樣式數量沒有限制
•下面的示例顯示了如何使用重疊樣式STYLE對象顯示具有兩種顏色的路線。

 

 提示:MapServer接受以RGB值或十六進制字符串表示的顏色。

SYMBOLs 符號

•可以直接在映射文件中定義,也可以在單獨的文件中定義
•單獨的文件方法必須使用MAP對象中的SYMBOLSET參數:

其中symbols.txt可能包含:

地圖文件將包含:

另請參見:
Cartographical Symbol Construction with MapServer, Symbology Examples, and SYMBOL

LABEL 標簽
• 在一個Class對象內定義

• 在Layer對象中的Labelitem參數可以用來指定為數據的標簽的屬性。標簽以FONT顯示,在FONTSET文件(設置在Map對象里)中聲明。FONTSET文件包含對可用字體名的引用。ENCODING描述了文件中使用的哪個編碼(請參見MapServer中的國際字符顯示)。

引用上述字體之一的示例label對象可能如下所示:

See also:
LABELFONTSET 
CLASS Expressions 
MapServer支持在一個Layer中三種類型的CLASS表達式(Layer中的ClassItem決定了前兩種類型表達式要使用的屬性):

1)字符串比較

2)正則表達式

3)邏輯表達式

注意:盡可能避免使用邏輯表達式,因為它們在繪制時間方面非常昂貴。

See also:
Expressions 
INCLUDE 
當添加到MapServer 4.10之后,mapfile的任何部分現在都可以存儲在單獨的文件中,並使用include參數添加到主mapfile中。要包含的文件名可以有任何擴展名,並且它總是相對於主.map文件。以下是一些潛在的用途:

•層Layers可以存儲在文件中,並包含在任意數量的應用程序中
•樣式Styles也可以存儲並包含在多個應用程序中

以下是使用mapfile includes在單獨文件中包含層定義的示例:
如果_a_shadedrelief.lay_a_z包含:

因此,主mapfile將包含:

以下是一個映射文件的示例,其中所有層都在單獨的.lay文件中,所有其他對象(web、reference、scalebar等)都存儲在一個aij.ref a i文件中:

警告:映射文件必須具有.map擴展名,否則MapServer將無法識別它們。但是,include文件可以有任何擴展名。

See also:
INCLUDE

Get MapServer Running 讓MapServer運行

您可以通過在命令行上運行帶有-v參數的mapserver可執行文件(mapserv)來測試mapserver是否工作。

通過-setup.exe安裝程序安裝的ms4w用戶可以使用桌面上的ms4w shell快捷方式,然后在命令行運行mapserv-v。未使用-setup.exe安裝程序的ms4w用戶可以在測試mapserv-v命令之前打開命令提示窗口cd到其安裝文件夾,然后執行setenv.bat。

您還可以直接向mapserver cgi程序發送HTTP請求,而無需傳遞任何配置變量(例如http://127.0.0.1/cgi-bin/mapserv.exe)。如果您收到消息,_a_no query information to decode.未設置查詢字符串。_a_z,您的安裝正在工作。

Get Demo Running 運行Demo
警告:MS4W用戶不必執行此步驟,因為上面的說明已經安裝了演示。您應該在頁面底部看到一個aij mapserver itasca demo application a i部分(單擊ms4w localhost快捷方式后)。

1.1.5 使demo成為您自己的網站

現在您有了一個正在運行的MapServer演示,您可以使用該demo來顯示您自己的數據。將新圖層添加到地圖文件中,以引用您自己的地理數據圖層(您可能希望刪除現有圖層或將其狀態設置為“關閉”)。

除非添加的圖層與演示的地理區域相同,否則請修改地圖范圍以匹配數據的范圍。要確定數據的范圍,可以使用ogrinfo。如果你可以使用地理信息系統,你也可以使用它。地圖范圍需要以輸出投影的單位表示。

如果添加具有不同地理參考系統的地理數據層,則需要修改地圖文件以向地圖(定義輸出投影/地理參考系統)和每個層(定義圖層數據集的地理參考系統)添加投影塊。

向你的網站添加數據

MapServer支持多種數據輸入格式,本地支持,如果使用開放源代碼庫gdal和ogr編譯,則支持更多格式。

矢量數據

矢量數據包括由點、線和多邊形組成的特征。MapServer默認支持ESRI形狀格式,但它可以編譯為支持空間啟用的數據庫(如PostgreSQL Postgis)和文件格式(如地理標記語言(GML)、MapInfo、帶分隔符的文本文件)以及其他格式(包括OGR)。

有關如何將不同地理數據源添加到MapServer項目的示例,請參見矢量數據參考。

柵格數據

光柵數據是圖像或網格數據。通過gdal,mapserver支持大多數光柵格式-請參閱gdal格式列表。在光柵數據參考中可以找到更具體的信息。

注:由於版本6.2 MapServer依賴GDAL進行所有光柵訪問

投影

因為地球是圓的,你的顯示器(或紙質地圖)是平的,當你在二維圖像中顯示地理數據時,就會發生失真。投影允許您在平面上表示地理數據。這樣做時,數據的某些原始屬性(例如面積、方向、距離、比例或一致性)將被扭曲。不同的投影在准確地描繪不同的屬性方面表現出色。科羅拉多大學有一本很好的地圖投影入門書。

使用MapServer,如果您將所有空間數據集保持在同一投影(或未投影的經緯度),則不需要在地圖文件中包含任何投影信息。在構建第一個MapServer應用程序時,建議進行這種簡化

在使用proj.4支持編譯mapserver時,可以實現動態投影。有關如何在Windows上啟用proj.4支持的說明,可以在wiki上找到。

1.1.6增強網站功能

添加查詢功能

查詢空間數據有兩種主要方法。兩種方法都通過使用模板和CGI變量替換來返回數據。QUERYMAP可用於map查詢結果。

為了便於查詢,每個mapfile層必須定義一個模板,或者層中的每個類必須定義一個模板。有關用於定義查詢的CGI變量的更多信息,可以在MapServer CGI引用中找到。

屬性查詢

用戶根據與該功能關聯的數據選擇功能。_a_向我展示深度大於100英尺_a_z的所有湖泊,其中_a_depth_a_z是形狀數據集或空間數據庫中的字段。屬性查詢是通過在URL(或表單發布)中將查詢定義信息傳遞給MapServer來完成的。mode=itemquery返回單個結果,mode=itemnquery返回多個結果集。

請求還必須包括一個Qlayer(標識要查詢的層)和一個包含查詢字符串的qstring。也可以將qitem與qstring結合使用,以定義要查詢的字段。屬性查詢僅適用於map文件中設置的extent范圍內。

空間查詢

用戶根據單擊地圖或用戶定義的選擇框選擇features。請求再次通過URL或表單投遞傳遞。通過設置模式mode=QUERY查詢,用戶將返回一個離單擊點最近的feature。在模式mode=Query查詢中,將返回通過單擊地圖或用戶定義的選擇框找到的所有features特征。其他查詢選項可以在CGI文檔中找到。

界面

See: OpenLayers http://openlayers.org, GeoMOOSE http://geomoose.org

注意:MS4W用戶可以安裝Openlayers和Geomoose作為現成的軟件包。

數據優化

在優化MapServer應用程序的性能方面,數據組織至少和硬件配置一樣重要。MapServer在它所做的事情上非常有效,但是通過減少它在用戶請求時需要做的處理量,您可以極大地提高性能。以下是一些規則:

•索引數據-通過使用shptree為Shape數據集創建空間索引。還應為空間感知數據庫(如Postgis和Oracle Spatial)創建空間索引。還應為空間感知數據庫(如Postgis和Oracle Spatial)創建空間索引。

•切片您的數據-理想情況下,您的數據將被a_a_z分割成與顯示數據的大小相同的片段。在搜索一個大的形狀數據集或圖像時,您只需要顯示一個小區域,這是不必要的開銷。通過將數據分解成圖塊並創建圖塊索引,mapserver只需要打開和搜索感興趣的數據文件。可以將形狀數據集拆分為較小的圖塊,然后使用tile4ms實用程序創建tileindex形狀數據集。也可以為光柵文件創建TileIndex形狀數據集。

•對數據進行預分類-MapServer允許使用非常復雜的表達式對數據進行分類。但是,使用邏輯表達式和正則表達式比使用字符串比較更耗費資源。為了提高效率,您可以提前將數據划分為類,創建一個用作類項的字段,並用一個標識類的簡單值填充它,例如用於四類數據集的1、2、3或4。然后可以對類表達式進行簡單的字符串比較。

•預處理您的圖像-預先進行資源密集型處理。有關詳細信息,請參見光柵數據參考。

•概述概述-創建一個更簡單、更通用的數據層,以小比例顯示,然后使用與比例相關的層,利用層Minscale和層Maxscale,在用戶放大時顯示更詳細的數據層。同樣的概念也適用於圖像。

See also:
Optimization 
1.1.7如何獲得幫助?

文檔
•官方的MapServer文檔位於此網站上。
•用戶提供的文檔存在於MapServer wiki上。

用戶郵件列表
注冊並將問題發布到MapServer用戶郵件列表。列表中的問題通常會很快得到回答。
通常是由開發人員自己完成的。需要記住的幾點:
1。首先在檔案中搜索你的答案,人們會厭倦一遍又一遍地回答同樣的問題。
2。提供MapServer安裝的版本和配置信息,以及
地圖和模板文件。
3。總是把你的回答發回整個列表,而不僅僅是回復你問題的人。

IRC
可以在Internet中繼聊天中找到MapServer用戶和開發人員。頻道是irc.freenode.net上的mapserver。

報告Bug
在MapServer問題跟蹤器上報告軟件錯誤。在MapServer上報告文檔錯誤
文檔問題跟蹤程序。

Tutorial

這里是一個新用戶的快速教程。

測試套件
下載MapServer測試套件以演示某些MapServer功能。


泰勒·米切爾的一本書《網絡地圖圖解》,描述得很好,並為使用提供了現實世界的例子。Web映射概念、開源GIS軟件、MapServer、Web服務和PostGIS。
由Schuyler Erle、Rich Gibson和Jo Walsh設計的《地圖黑客》,創造性地演示了數字地圖工具和概念。MapServer只出現在100個黑客中的一小部分,但更多的對概念和靈感有用。
《開始MapServer:OpenSourceGIS開發》,由BillKropla編寫。據發布者介紹,它涵蓋了安裝和配置、基本的MapServer主題和功能、動態數據的合並、高級主題,以及實際應用程序的創建。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM