win7搭建openStreetMap地图

一、 参考资料:

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

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

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

二、系统架构:

win7搭建openStreetMap地图_第1张图片

上图中红色部分为本文主要使用的组件,我们把这些组件全部安装到一个目录%OSM_STACK%下


三、下载安装:

1、地图数据下载

地图数据源网上有很多,这里给出其中一个数据源:

区域地图,可从这里下载: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环境变量,下载地址:https://www.python.org/ftp/python/2.7.9/python-2.7.9.msi

为避免后续需要下载依赖的模块,可以安装便携版的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++标准库有依赖,如果你的机器缺少msvcp120.dll、msvcr120.dll这两个DLL,可以下载:Visual C++ Redistributable Packages for Visual Studio 2013并安装,亦可直接拷贝这两个文件到%OSM_STACK%\psql\bin下

打开%OSM_STACK%\psql\data\postgresql.conf,修改以下参数,以提高性能(根据硬件配置调整):

win7搭建openStreetMap地图_第2张图片

4、下载osm2pgsql­

osm2pgsql­——是由OpenStreetMap开发的一个命令行工具负责将OSM数据导入到基于PostgresSql的Postgis的数据库中。下载地址:http://customdebug.com/osm/osm2pgsql.zip,其次我们还要指定osm2pgsql的gitHub地址因为我们需要的两个文件在里面可以找到一个是900913.sql一个是default.style,osm2pgsql在github的地址如下:https://github.com/openstreetmap/osm2pgsql

需要指出的是:在github中最新版本的osm2pgsql已经没有900913.sql这个文件,需要在github历史版本中去寻找。

OSM数据导入到Postgresql数据库:

第一步:创建一个Postgresql的数据库

打开命令行输入createdb -U postgres -E UTF8 osm其中osm是数据库的名称,postgres是数据库的用户名。执行完成后我们打开pgAdmin III客户端刷新,就可以看到刚才创建的数据库。

第二步:安装language plpgsql

createlang -U postgres plpgsql osm

一般这一步都不需要,默认已经安装上去了。

第三步:添加PostGIS功能到数据库,执行如下命令:

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

控制台会打印下一些命令。

第四步:添加EPSG: 900913支持

上面提到过在osm2pgsql的github上包含900013.sql的文件下载到本地。放到一个好访问的目录中,执行如下命令:

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

第五步:添加OSM数据到数据库

下载github上的osm2pgsql中的default.style文件并拷贝到本地osm2pgsql的x64目录中,把下载的chain.osm.bz2文件解压得到的chain.osm文件也拷贝到osm2pgsql的x64目录中。

新打开一个命令行进入osm2pgsql的x64目录中,执行如下命令:

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环境变量,python\2.7\site-packages加入PYTHONPATH环境变量。

在mapnik中,一个Map可以包含若干个图层(Layer),每个层可以独立着色,即可为每个层定制样式(Style),每个样式由若干个规则组成(Rule),每个规则由是由若干个符号定制。

6、安装cygwin模拟linux环境

以下的配置或文件生成需要用到linux环境,所以先安装cygwin.

注:cygwin中安装插件代码为:apt-cyg install  **,  如 apt-cyg  install  unzip,所以先看看怎么使用apt-cyg

7、安装和配置TileStache

TileStache作为网络地图服务,类似于apache的功能,只是她提供的是地图服务。WMS协议的服务器

安装便携版Python后,只需要执行下面的脚本:

win7搭建openStreetMap地图_第3张图片

在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服务(基于 Werkzeug,一个WSGI工具库):

%PYTHON_HOME%替换成相应的python安装路径

其中tilestache.cfg是TileStache使用的配置文件,注意要使用utf-8编码,我们先使用下面这个做测试:


win7搭建openStreetMap地图_第4张图片

上图中的path可能要用linux的目录结构才行,所以类似/tmp/tilecache ,这是值地图的缓存地址,可以自由更改

启动TileStache后,可以通过以下几个URL来测试:

win7搭建openStreetMap地图_第5张图片

8、下载mapnik-stylesheets

mapnik-stylesheets中提供了osm的样式文件,osm.xml,它表示我们要在web服务中展示的地图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来创建一个地图样式文件,

9、通过postgresql中的数据生成地图样式

$ cd mapnik-stylesheets/

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

其中osm.xml是样式文件,在mapnik-stylesheets中,china.xml是将要生成的样式文件名称,openStreetMap是postgresql中的数据库(之前已把地图数据导入),postgres是数据库的用户名

执行完成后就会生成china.xml文件。

10、集成TileStache与mapnik

tilestache.cfg可以配置为这样:

win7搭建openStreetMap地图_第6张图片

tilestache.cfg改好后,启动TileStache Web服务,浏览器打开http://127.0.0.1:5539/osm/preview.html进行测试

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

使用Leaflet

Leaflet是一个近来迅速流行的JavaScript库,比起OpenLayers它更小小巧、简单,对于简单寻常的需求,Leaflet是个好的选择。


win7搭建openStreetMap地图_第7张图片

以上如有不对之处,请参考参考资料(篇顶处)!!!!!

你可能感兴趣的:(win7搭建openStreetMap地图)