TileMill是一款免費的地圖設計工具,他的特色在于可自定義程度極其豐富,利用CSS就可以更改地圖中海洋、國家邊界、道路等各種元素的顏色和樣式,小到精確到街道,大到國際、洲際地圖都可以做,同時也能導出圖片或者矢量格式方便使用。
主要功能:
1、支持 ESRI Shapefile, KML, GeoJSON, GeoTIFF, PostGIS, and SQLite數據來源。
2、新版本支持大數據量柵格數據的加載與顯示,支持山體陰影,分層設色等功能。
3、支持數據的查詢,也就是屬性數據的瀏覽。
4、支持以Carto css樣式語言對地圖進行配色設計(比xml要方便很多)
5、支持svg圖標,truetype字體樣式等,基于Mapnik提供(mapnik2.0出來了又強大了不少)
6、支持地圖tooltip、圖片、圖表、utf-8 Grid(不是很了解這個技術)等自定義信息提示
7、支持直接發(fā)布到Mapbox,和朋友共享你制作的地圖。
使用方法:
1、軟件主界面:
我使用的0.10.0(目前最新版),軟件左側的五個按鈕依次為:進入編輯模式、打開工程目錄、一個簡單的軟件指南、插件選項以及設置按鈕。
軟件界面很友善,感興趣的童鞋自己試一下就基本了解幾個按鈕的功能了。下面僅以一個簡單的例子來制作一個地圖。
首先點擊左端的 Projects 按鈕,可以看到,軟件已經內置了幾個樣例工程,對于初學者,這幾個樣例還是有很大幫助的,建議仔細研究一下。這里不多說。
點擊New project,我們新建一個工程,填寫一個文件名稱,點擊add。一幅簡單的世界地圖已經在我們眼前了?墒俏覀冞沒有添加任何數據,寫任何代碼呀?其實這是工程在創(chuàng)建的時候,自動為我們加載的。這時候在軟件界面的左下角,多了4個按鈕,依次為模板、字體、一個簡單的Carto說明以及圖層按鈕(重要)。界面右邊的大半部分都是地圖樣式編輯區(qū)域,tilemill使用.mss文件來定義導入的地圖數據的樣式。又上角為保存和導出按鈕。
我們點擊左下角的Layers(圖層)按鈕,可以看到,軟件已經為我們加載了一個數據。這便是顯示在我們地圖界面的世界輪廓數據。在樣式編輯區(qū)域,已經有一個style.mss文件,定義了世界輪廓的顯示樣式:
Map {
background-color: #b8dee6;
}
#countries {
::outline {
line-color: #85c5d3;
line-width: 2;
line-join: round;
}
polygon-fill: #fff;
}
我們看到,定義了地圖背景為淡藍色(海洋),大陸的輪廓(outline)樣式以及大陸板塊的顏色。
地圖的數據的添加跟這個原理是一樣的,1、引入地圖數據 2、定義相應數據顯示樣式
添加圖層方法:
TileMill 可以從文件、SQLite 和 PostGIS 讀取圖層。這里演示從 PostGIS 讀取 OSM 數據。演示假設您已經熟悉 OSM 數據的結構。您可以通過 pgAdminIII 或 QGIS 、Open Jump 等桌面 GIS 系統(tǒng)了解 OSM 數據。
從 PostGIS 導入數據。首先,點擊圖層按鈕(|LAYER|)并選擇 ‘+ Add layer’ 添加圖層。在 ‘Add layer’ 中選擇數據源類型為 PostGIS:
從 PostGIS 添加道路(roads)圖層。選擇圖層后點擊 ‘Save & Style’ 確認:
ID: osm_roads
Class: osmroads
Connection: host=localhost port=5432 user=user password=user dbname=osm_local
Table or subquery: planet_osm_roads
Unique key field: osm_id
Geometry field: way
SRS: Select WGS84
從 PostGIS 導入 osm_line 圖層,選中后點擊 ‘Save & Style’ 確認:
ID: osm_line
Class: osmline
Connection: host=localhost port=5432 user=user password=user dbname=osm_local
Table or subquery: planet_osm_line
Unique key field: osm_id
Geometry field: way
SRS: Select WGS84
從 PostGIS 導入 osm_points 位置點圖層,選中后點擊 ‘Save & Style’ 確認:
ID: osm_points
Class: osmpoints
Connection: host=localhost port=5432 user=user password=user dbname=osm_local
Table or subquery: (select osm_id, amenity, way from planet_osm_point where amenity is not null) AS amen
Unique key field: osm_id
Geometry field: way
SRS: Select WGS84
在 osm_points 圖層中只選擇了來自 osm_local 的一個子集,以保證其設施類型(amenity)屬性非空。