win7搭建openStreetMap地圖

一、 參考資料:

https://blog.gmem.cc/setup-openstreetmap-server

http://www.v5cn.cn/?p=167

http://www.tuicool.com/articles/ba6vEn

二、系統(tǒng)架構(gòu):


上圖中紅色部分為本文主要使用的組件,我們把這些組件全部安裝到一個目錄%OSM_STACK%下


三、下載安裝:

1、地圖數(shù)據(jù)下載

地圖數(shù)據(jù)源網(wǎng)上有很多,這里給出其中一個數(shù)據(jù)源:

區(qū)域地圖,可從這里下載:http://download.geofabrik.de/

全球地圖,可從這里下載:http://ftp.heanet.ie/mirrors/openstreetmap.org/planet/2015/planet-150105.osm.bz2

2、安裝Python

安裝Python 2.7.x到%OSM_STACK%\python,并加入PATH環(huán)境變量,下載地址:https://www.python.org/ftp/python/2.7.9/python-2.7.9.msi

為避免后續(xù)需要下載依賴的模塊,可以安裝便攜版的Python,集成了很多常用模塊,安裝后把App目錄里面的所有文件拷貝到%OSM_STACK%\python即可,下載地址:http://ftp.osuosl.org/pub/portablepython/v2.7/PortablePython_2.7.6.1.exe

3、安裝PostgreSQL和PostGIS

最好下載PostgreSQL 9.0以上或者?8.3版,8.4存在性能問題。

9.4的下載地址:http://get.enterprisedb.com/postgresql/postgresql-9.4.0-1-windows-binaries.zip,解壓到%OSM_STACK%\psql

下載PostGIS:http://download.osgeo.org/postgis/windows/pg94/postgis-bundle-pg94x32-2.1.5-2.zip,解壓覆蓋到%OSM_STACK%\psql

注意:上述的PostgreSQL是綠色版的,對MSVC12有C運行時庫、C++標(biāo)準庫有依賴,如果你的機器缺少msvcp120.dll、msvcr120.dll這兩個DLL,可以下載:Visual C++ Redistributable Packages for Visual Studio 2013并安裝,亦可直接拷貝這兩個文件到%OSM_STACK%\psql\bin下

打開%OSM_STACK%\psql\data\postgresql.conf,修改以下參數(shù),以提高性能(根據(jù)硬件配置調(diào)整):

4、下載osm2pgsql-

osm2pgsql-——是由OpenStreetMap開發(fā)的一個命令行工具負責(zé)將OSM數(shù)據(jù)導(dǎo)入到基于PostgresSql的Postgis的數(shù)據(jù)庫中。下載地址:http://customdebug.com/osm/osm2pgsql.zip,其次我們還要指定osm2pgsql的gitHub地址因為我們需要的兩個文件在里面可以找到一個是900913.sql一個是default.style,osm2pgsql在github的地址如下:https://github.com/openstreetmap/osm2pgsql

需要指出的是:在github中最新版本的osm2pgsql已經(jīng)沒有900913.sql這個文件,需要在github歷史版本中去尋找。

OSM數(shù)據(jù)導(dǎo)入到Postgresql數(shù)據(jù)庫:

第一步:創(chuàng)建一個Postgresql的數(shù)據(jù)庫

打開命令行輸入createdb -U postgres -E UTF8 osm其中osm是數(shù)據(jù)庫的名稱,postgres是數(shù)據(jù)庫的用戶名。執(zhí)行完成后我們打開pgAdmin III客戶端刷新,就可以看到剛才創(chuàng)建的數(shù)據(jù)庫。

第二步:安裝language plpgsql

createlang -U postgres plpgsql osm

一般這一步都不需要,默認已經(jīng)安裝上去了。

第三步:添加PostGIS功能到數(shù)據(jù)庫,執(zhí)行如下命令:

psql -U postgres -d osm -f “你PostgreSQL安裝路徑/share/contrib/postgis-2.1/postgis.sql”

控制臺會打印下一些命令。

第四步:添加EPSG: 900913支持

上面提到過在osm2pgsql的github上包含900013.sql的文件下載到本地。放到一個好訪問的目錄中,執(zhí)行如下命令:

psql -U postgres -d osm -f “本地的文件路徑/900913.sql”

第五步:添加OSM數(shù)據(jù)到數(shù)據(jù)庫

下載github上的osm2pgsql中的default.style文件并拷貝到本地osm2pgsql的x64目錄中,把下載的chain.osm.bz2文件解壓得到的chain.osm文件也拷貝到osm2pgsql的x64目錄中。

新打開一個命令行進入osm2pgsql的x64目錄中,執(zhí)行如下命令:

osm2pgsql -U postgres -d osm -s -S ./default.style ./china.osm


5、安裝mapnik -

http://mapnik.org/pages/downloads.html下載mapnik的windows版本即Windows 32 bit SDK,安裝(或解壓,好像是綠色版,不用安裝)到%OSM_STACK%\mapnik,將其bin、lib目錄加入PATH環(huán)境變量,python\2.7\site-packages加入PYTHONPATH環(huán)境變量。

在mapnik中,一個Map可以包含若干個圖層(Layer),每個層可以獨立著色,即可為每個層定制樣式(Style),每個樣式由若干個規(guī)則組成(Rule),每個規(guī)則由是由若干個符號定制。

6、安裝cygwin模擬linux環(huán)境

以下的配置或文件生成需要用到linux環(huán)境,所以先安裝cygwin.

注:cygwin中安裝插件代碼為:apt-cyg install ?**, ?如?apt-cyg ?install ?unzip,所以先看看怎么使用apt-cyg

7、安裝和配置TileStache

TileStache作為網(wǎng)絡(luò)地圖服務(wù),類似于apache的功能,只是她提供的是地圖服務(wù)。WMS協(xié)議的服務(wù)器

安裝便攜版Python后,只需要執(zhí)行下面的腳本:

在Windows上,如果使用的是Python 2.7.6,需要修改一下__init__.py的源碼,否則運行時會報錯:UnicodeDecodeError: utf8 codec can't decode byte 0xb0 in position 1: invalid start byte,這是Python的一個BUG。

安裝完畢后,通過下面的腳本即可啟動TileStache的Web服務(wù)(基于 Werkzeug,一個WSGI工具庫):

%PYTHON_HOME%替換成相應(yīng)的python安裝路徑

其中tilestache.cfg是TileStache使用的配置文件,注意要使用utf-8編碼,我們先使用下面這個做測試:


上圖中的path可能要用linux的目錄結(jié)構(gòu)才行,所以類似/tmp/tilecache ,這是值地圖的緩存地址,可以自由更改

啟動TileStache后,可以通過以下幾個URL來測試:

8、下載mapnik-stylesheets

mapnik-stylesheets中提供了osm的樣式文件,osm.xml,它表示我們要在web服務(wù)中展示的地圖style,

下載地址:https://github.com/openstreetmap/mapnik-stylesheets

同時需要下載以來包:

wgethttp://tile.openstreetmap.org/world_boundaries-spherical.tgz# (51M)? ? wgethttp://tile.openstreetmap.org/processed_p.tar.bz2# (391M)? ? wgethttp://tile.openstreetmap.org/shoreline_300.tar.bz2# (42M)? ? wgethttp://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_populated_places.zip# (1.5 MB)? ? wgethttp://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_boundary_lines_land.zip# (44 KB)? ??

解壓

tar xzf world_boundaries-spherical.tgz # creates a 'world_boundaries' folder? ??

tar xjf processed_p.tar.bz2 -C world_boundaries? ?

tar xjf shoreline_300.tar.bz2 -C world_boundaries? ??

unzip -q ne_10m_populated_places.zip -d world_boundaries? ??

unzip -q ne_110m_admin_0_boundary_lines_land.zip -d world_boundaries

這個倉庫中包含了眾多的小工具,generate_xml.py用于生成Mapnik的樣式文件,generate_image.py用于生成圖片,generate_tiles.py用于生成眾多的瓦片。

此處我們將使用generate_xml.py來創(chuàng)建一個地圖樣式文件,

9、通過postgresql中的數(shù)據(jù)生成地圖樣式

$ cd?mapnik-stylesheets/

$./generate_xml.py osm.xml china.xml--dbname openStreetMap --user postgres --accept-none

其中osm.xml是樣式文件,在mapnik-stylesheets中,china.xml是將要生成的樣式文件名稱,openStreetMap是postgresql中的數(shù)據(jù)庫(之前已把地圖數(shù)據(jù)導(dǎo)入),postgres是數(shù)據(jù)庫的用戶名

執(zhí)行完成后就會生成china.xml文件。

10、集成TileStache與mapnik

tilestache.cfg可以配置為這樣:

tilestache.cfg改好后,啟動TileStache Web服務(wù),瀏覽器打開http://127.0.0.1:5539/osm/preview.html進行測試

11、通過前端API使用OSM瓦片

使用Leaflet

Leaflet是一個近來迅速流行的JavaScript庫,比起OpenLayers它更小小巧、簡單,對于簡單尋常的需求,Leaflet是個好的選擇。


以上如有不對之處,請參考參考資料(篇頂處)?。。。?!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容