win7搭建openStreetMap地图

一、 参考资料:

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

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

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

二、系统架构:


上图中红色部分为本文主要使用的组件,我们把这些组件全部安装到一个目录%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,修改以下参数,以提高性能(根据硬件配置调整):

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后,只需要执行下面的脚本:

在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编码,我们先使用下面这个做测试:


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

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

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可以配置为这样:

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

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

使用Leaflet

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


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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容