文档章节

OpenStreetMap安装指南 ,基于Ubuntu14.04

撕纸王啊
 撕纸王啊
发布于 2014/11/17 20:47
字数 1216
阅读 218
收藏 2
点赞 0
评论 0

服务器器基于Ubuntu14.04,以下命令仅保证能运行在ubuntu系列中。

1.安装系统依赖

sudo apt-get update  

sudo apt-get dist-upgrade  

sudo apt-get install postgresql postgresql-9.3-postgis-2.1 postgresql-contrib-9.3 postgresql-server-dev-9.3 libpq-dev pgadmin3 subversion git-core tar unzip wget bzip2 build-essential autoconf libtool libxml2-dev libgeos-dev libbz2-dev libprotobuf-c0-dev protobuf-c-compiler libfreetype6-dev libpng12-dev libtiff4-dev libicu-dev libboost-all-dev libgdal-dev libcairo-dev libcairomm-1.0-dev apache2 apache2-dev libagg-dev libgeos++-dev libproj-dev lua5.2 liblua5.2-dev libltdl-dev libltdl7 libpng12-dev libtiff5 libtiff5-dev libtiffxx5 libicu-dev python-cairo-dev python-nose libfreetype6-dev libfreetype6 libcairo2-dev  libcairomm-1.0-dev libgeotiff-dev libsigc++-2.0-0c2a libsigc++-2.0-dev libsigx-2.0-2 libsigx-2.0-dev libgdal1-dev  python-gdal imagemagick  ttf-dejavu ttf-unifont libharfbuzz-dev libharfbuzz0b apache2 libfcgi-dev apache2-threaded-dev libagg-dev apache2-utils libxml2 libxml2-dev python-lxml osm2pgsql python-mapnik2 libmapnik-dev libmapnik2-dev openssh-server vim

2.下载源码

2.1 mapnik-style  

svn co http://svn.openstreetmap.org/applications/rendering/mapnik mapnik-style

2.2 mod_tile

git clone https://github.com/openstreetmap/mod_tile/

2.3OpenStreetMap.js

wget http://www.openstreetmap.org/openlayers/OpenStreetMap.js

2.4OpenLayers

wget http://github.com/openlayers/openlayers/releases/download/release-2.13.1/OpenLayers-2.13.1.tar.gz

2.5 world_boundaries

以下五个文件从mapnik-style中get-coastlines.sh文件获取下载地址,可能有变化

wget http://tile.openstreetmap.org/world_boundaries-spherical.tgz

wget  http://tile.openstreetmap.org/processed_p.tar.bz2

wget  http://tile.openstreetmap.org/shoreline_300.tar.bz2

wget  http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_populated_places.zip

wget  http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_boundary_lines_land.zip

3.设置用户postgres与www-data 系统密码(安装postgresql自动生成用户)

设置密码

sudo passwd postgres

sudo passwd www-data

3.2提升www-data权限

sudo vim /etc/passwd

改为/bin/bash

4.数据库配置

4.1创建数据库存储目录

cd /

sudo mkdir hugecargo  

cd hugecargo  

sudo mkdir pgtbs_osmgis  

sudo chown postgres pgtbs_osmgis  

4.2配置数据库密码和指定数据库空间

sudo su postgres

psql -d postgres

ALTER USER postgres WITH PASSWORD '123456';

CREATE ROLE "www-data" LOGIN PASSWORD '123456' SUPERUSER INHERIT CREATEDB NOCREATEROLE REPLICATION;

CREATE TABLESPACE pgtbs_osmgis OWNER "www-data" LOCATION '/hugecargo/pgtbs_osmgis';

4.3创建数据库

CREATE DATABASE osmgis WITH OWNER = "www-data" ENCODING = 'UTF8' TABLESPACE = pgtbs_osmgis CONNECTION LIMIT = -1;

GRANT ALL ON DATABASE osmgis TO public;  

GRANT ALL ON DATABASE osmgis TO "www-data";

\q

exit

4.4添加POSTGIS数据库表

sudo su postgres -c "psql -dosmgis </usr/share/postgresql/9.3/contrib/postgis-2.1/postgis.sql"  

sudo su postgres -c "psql -dosmgis </usr/share/postgresql/9.3/contrib/postgis-2.1/spatial_ref_sys.sql"  

sudo su postgres -c "psql -dosmgis </usr/share/postgresql/9.3/contrib/postgis-2.1/postgis_comments.sql" 

sudo su postgres  

psql -dosmgis  

create extension hstore;

\q

exit

4.5导入地图数据

下载地图数据

http://download.geofabrik.de/

导入地图数据,这里使用中国地图

osm2pgsql -dosmgis -s -C384 -Uwww-data -W -Hlocalhost -v china-latest.osm.pbf

4.6 加入地图

解压world_boundaries下载步骤中的五个文件,取出所有的文件,并放到world_boundaries中

sudo mv world_boundaries /usr/local/share/

5.配置mapnik-style

5.1生成osm.xml

cd /mapnik-style  

./generate_xml.py --world_boundaries=/usr/local/share/world_boundaries --host=127.0.0.1 --port=5432 --user=www-data --password=123456 --dbname=osmgis

5.2测试渲染

./generate_image.py

保存后,直接执行,如果没错,就出现了 image.png

6.安装apache2和fcgi

访问 http://127.0.0.1

7.mod_tile

cd mod_tile  

./autogen.sh  

./configure  

make  

sudo make install  

sudo make install-mod_tile  

sudo ldconfig

8.配置瓦片渲染后台服务renderd

8.1创建文件夹

sudo mkdir /var/run/renderd  

sudo chown www-data /var/run/renderd 

8.2配置renderd

sudo vim /usr/local/etc/renderd.conf

做一下配置:

[renderd]  

;把socketname设置到刚才创建的文件夹里  

socketname=/var/run/renderd/renderd.sock  

num_threads=4  

tile_dir=/var/lib/mod_tile ; DOES NOT WORK YET  

stats_file=/var/run/renderd/renderd.stats  


[mapnik]  

plugins_dir=/usr/lib/mapnik/2.2/input  

font_dir=/usr/share/fonts/truetype/unifont  

font_dir_recurse=1  


[default]  

URI=/osm_tiles/  

XML=/home/qlaiaqu/Downloads/mapnik-style/osm.xml

HOST=localhost  

;HTCPHOST=proxy.openstreetmap.org


8.3配置apache2 mod_tile

sudo mkdir /var/lib/mod_tile  

sudo chown  www-data /var/lib/mod_tile 

(1)导入mod_tile 

sudo vim /etc/apache2/mods-available/mod_tile.load

里面包含一行

LoadModule tile_module /usr/lib/apache2/modules/mod_tile.so 

生效

cd /etc/apache2/mods-enabled

sudo ln -s /etc/apache2/mods-available/mod_tile.load

(2)而后,设置用户访问网页的入口点

sudo vim  /etc/apache2/sites-available/000-default.conf  

加入

 LoadTileConfigFile /usr/local/etc/renderd.conf

 ModTileRenderdSocketName /var/run/renderd/renderd.sock

 ModTileRequestTimeout 0

 ModTileMissingRequestTimeout 30 

8.4测试

cd mod_tile  

sudo su www-data  

renderd -f -c /usr/local/etc/renderd.conf

8.5测试

http://localhost/osm_tiles/0/0/0.png

8.6设置时间戳

sudo touch /var/lib/mod_tile/planet-import-complete  

sudo chown www-data /var/lib/mod_tile/planet-import-complete

9.OpenLayer

tar xzvf OpenLayers-2.13.1.tar.gz

mv OpenLayers-2.13.1 openlayers

mv OpenStreetMap.js openlayers

sudo mv openlayes /var/www/html/openlayers

sudo chmod +r -R /var/www/html/openlayers

10.html

sudo vim /var/www/html/map.html

<html>  

<head>  

    <title>OSM Local Tiles</title>  

    <link rel="stylesheet" href="/openlayers/theme/default/style.css" type="text/css" />  

    <!-- bring in the OpenLayers javascript library  

         (here we bring it from the remote site, but you could  

         easily serve up this javascript yourself) -->  

    <script src="/openlayers/OpenLayers.js"></script>  


  

    <!-- bring in the OpenStreetMap OpenLayers layers.  

         Using this hosted file will make sure we are kept up  

         to date with any necessary changes -->  


    <script src="/openlayers/OpenStreetMap.js"></script>  


    <script type="text/javascript">  

// Start position for the map (hardcoded here for simplicity)  

        var lat=31.27386;  

        var lon=121.48132;  

        var zoom=7;  

        var map; //complex object of type OpenLayers.Map  


        //Initialise the 'map' object  

        function init() {  

            map = new OpenLayers.Map ("map", {  

                controls:[  

                    new OpenLayers.Control.Navigation(),  

                    new OpenLayers.Control.PanZoomBar(),  

                    //new OpenLayers.Control.PanZoom(),  

                    new OpenLayers.Control.Permalink(),  

                    new OpenLayers.Control.ScaleLine({geodesic: true}),  

                    new OpenLayers.Control.Permalink('permalink'),  

                    new OpenLayers.Control.KeyboardDefaults(),  

                    new OpenLayers.Control.NavToolbar(),  

                    new OpenLayers.Control.Attribution()],  

                maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),  

                maxResolution: 156543.0339,  

                numZoomLevels: 19,  

                units: 'm',  

                projection: new OpenLayers.Projection("EPSG:900913"),  

                displayProjection: new OpenLayers.Projection("EPSG:4326")  

            } );  


  

            // This is the layer that uses the locally stored tiles  

            var newLayer = new OpenLayers.Layer.OSM("Local Tiles", "/osm_tiles/${z}/${x}/${y}.png", {numZoomLevels: 19, transitionEffect: "resize"});  

            map.addLayer(newLayer);  

            var switcherControl = new OpenLayers.Control.LayerSwitcher();  

            map.addControl(switcherControl);  

            var vector_layer = new OpenLayers.Layer.Vector('Editable Vectors');  

            map.addControl(new OpenLayers.Control.EditingToolbar(vector_layer));  

            map.addLayer(vector_layer);  


            map.addControl(new OpenLayers.Control.Graticule({visible: false}));  

            var mousepos = new OpenLayers.Control.MousePosition({div: document.getElementById('mousepos_div')});  

            map.addControl(mousepos);  

            //mousepos.moveTo(new OpenLayers.Pixel(64,0));  


            map.addControl(new OpenLayers.Control.OverviewMap());  

             /*  

            var navigationT =    new OpenLayers.Control.TouchNavigation({  

                dragPanOptions:{  

                    enableKinetic: true  

                }  

            });  


            map.addControl(navigationT);  

            */  

            if( ! map.getCenter() ){  

                var lonLat = new OpenLayers.LonLat(lon, lat).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());  

                map.setCenter (lonLat, zoom);  

            }  

        }  

    </script>  


</head>  

<!-- body.onload is called once the page is loaded (call the 'init' function) -->  

<body onload="init();">  

    <!-- define a DIV into which the map will appear. Make it take up the whole window -->  

    <div style="width: 100%; height: 93%" id="map">  

    </div>  

    <P><a href='/index.html'>start screen</a></P>  

    <div style="width: 100%; height: 5%" id="mousepos_div">

    </div>  

</body>  

</html>  

11.访问测试

http://localhost/map.html

© 著作权归作者所有

共有 人打赏支持
撕纸王啊
粉丝 2
博文 1
码字总数 1216
作品 0
长沙
后端工程师
使用openCV+Qt+fcgi 为OpenStreetMap瓦片添加热力图图层

在搭建如OpenStreetMap等瓦片服务器的过程中,我们会关心当前服务器上哪些瓦片已经存在(被渲染了)、哪些瓦片被访问量大,哪些少。 统计瓦片的历史记录,可以直接扫描缓存,或者通过数据库来...

goldenhawking ⋅ 05/26 ⋅ 0

打破语音垄断,Mozilla Common Voice 支持更多语言

Mozilla 宣布它正在使其众包项目 Common Voice 支持更多语言。 Common Voice 是一个旨在创建开源语音识别数据集的项目,于去年6月发布,它邀请来自世界各地的志愿者通过网络和移动应用程序,...

h4cd ⋅ 06/09 ⋅ 0

史上最全TensorFlow学习资源汇总

来源 悦动智能(公众号ID:aibbtcom) 本篇文章将为大家总结TensorFlow纯干货学习资源,非常适合新手学习,建议大家收藏。 ▌一 、TensorFlow教程资源 1)适合初学者的TensorFlow教程和代码示...

悦动智能 ⋅ 04/12 ⋅ 0

【干货】史上最全的Tensorflow学习资源汇总,速藏!

一 、Tensorflow教程资源: 1)适合初学者的Tensorflow教程和代码示例:(https://github.com/aymericdamien/TensorFlow-Examples)该教程不光提供了一些经典的数据集,更是从实现最简单的“Hel...

技术小能手 ⋅ 04/16 ⋅ 0

利用sklearn学习《统计学习方法》(二):k近邻法

简介:近邻法(,)是一种基本分类与回归方法,它的原理是,对给定的训练数据集,对新的输入实例,在训练数据集中找到与该实例最近邻的个实例,依据“少数服从多数”的原则,根据这个实例中占...

Norlan ⋅ 2017/05/29 ⋅ 0

手把手教你搭建自己的深度学习机器

深度学习是一门用来解决复杂问题的技术,例如自然语言处理和图像处理。目前,我们已经可以很快的处理超大计算量的问题——这多亏了GPU,GPU最初就是用于快速生成高分辨率计算机图像,由于它的...

小旋风柴进 ⋅ 2017/05/02 ⋅ 0

Mongodb在Ubuntu环境下的安装(以mongodb3.2为例)

软件的下载这里就不说了,最好是下载官方版本。。 //解压sudo tar -zxvf /usr/test/soft/mongodb-linux-x86_64-ubuntu1404-3.2.6.tgz -C /usr/test //移动sudo mv /usr/test/mongodb-linux-x......

逝去的过去 ⋅ 2016/07/18 ⋅ 0

ios有什么框架可以创建基于OpenStreetMap的应用程序

mapsforge提供了一个开源的工具箱能够让开发人员轻松创建基于OpenStreetMap的应用程序。这些工具和API 包括地图展示、路径规划和导航、POI索引和搜索、Map overlay。在android中可以使用该框...

魏振耀 ⋅ 2013/10/07 ⋅ 1

与MongoDB的第一次亲密接触

Mongo DB 是目前在IT行业非常流行的一种非关系型数据库(NoSql),其灵活的数据存储方式备受当前IT从业人员的青睐。Mongo DB很好的实现了面向对象的思想(OO思想),在Mongo DB中 每一条记录都是一...

没有人sdfsdf ⋅ 2015/05/03 ⋅ 0

python解析yaml文件

系统:ubuntu1404、python:2.7 解析yaml文件要先安装pyyaml,可以直接用sudo pip install pyyaml 安装yaml模块; t.yaml文件内容:隔距为2个空格或4个空格 t.yaml" 10L, 143C 1,1 Allhost: ip0...

jk409 ⋅ 2014/09/24 ⋅ 2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

RabbitMQ学习以及与Spring的集成(三)

本文介绍RabbitMQ与Spring的简单集成以及消息的发送和接收。 在RabbitMQ的Spring配置文件中,首先需要增加命名空间。 xmlns:rabbit="http://www.springframework.org/schema/rabbit" 其次是模...

onedotdot ⋅ 27分钟前 ⋅ 0

JAVA实现仿微信红包分配规则

最近过年发红包拜年成为一种新的潮流,作为程序猿对算法的好奇远远要大于对红包的好奇,这里介绍一种自己想到的一种随机红包分配策略,还请大家多多指教。 算法介绍 一、红包金额限制 对于微...

小致dad ⋅ 39分钟前 ⋅ 0

Python 数电表格格式化 xlutils xlwt xlrd的使用

需要安装 xlutils xlwt xlrd 格式化前 格式化后 代码 先copy读取的表格,然后按照一定的规则修改,将昵称中的学号提取出来替换昵称即可 from xlrd import open_workbookfrom xlutils.copy ...

阿豪boy ⋅ 今天 ⋅ 0

面试题:使用rand5()生成rand7()

前言 读研究生这3 年,思维与本科相比变化挺大的,这几年除了看论文、设计方案,更重要的是学会注重先思考、再实现,感觉更加成熟吧,不再像个小P孩,人年轻时总会心高气傲。有1 道面试题:给...

初雪之音 ⋅ 今天 ⋅ 0

Docker Toolbox Looks like something went wrong

Docker Toolbox 重新安装后提示错误:Looks like something went wrong in step ´Checking if machine default exists´ 控制面板-->程序与应用-->启用或关闭windows功能:找到Hyper-V,如果处......

随你疯 ⋅ 今天 ⋅ 0

Guacamole 远程桌面

本文将Apache的guacamole服务的部署和应用,http://guacamole.apache.org/doc/gug/ 该链接下有全部相关知识的英文文档,如果水平ok,可以去这里仔细查看。 一、简介 Apache Guacamole 是无客...

千里明月 ⋅ 今天 ⋅ 0

nagios 安装

Nagios简介:监控网络并排除网络故障的工具:nagios,Ntop,OpenVAS,OCS,OSSIM等开源监控工具。 可以实现对网络上的服务器进行全面的监控,包括服务(apache、mysql、ntp、ftp、disk、qmail和h...

寰宇01 ⋅ 今天 ⋅ 0

AngularDart注意事项

默认情况下创建Dart项目应出现以下列表: 有时会因为不知明的原因导致列表项缺失: 此时可以通过以下步骤解决: 1.创建项目涉及到的包:stagehand 2.执行pub global activate stagehand或pub...

scooplol ⋅ 今天 ⋅ 0

Java Web如何操作Cookie的添加修改和删除

创建Cookie对象 Cookie cookie = new Cookie("id", "1"); 修改Cookie值 cookie.setValue("2"); 设置Cookie有效期和删除Cookie cookie.setMaxAge(24*60*60); // Cookie有效时间 co......

二营长意大利炮 ⋅ 今天 ⋅ 0

【每天一个JQuery特效】淡入淡出显示或隐藏窗口

我是JQuery新手爱好者,有时间就练练代码,防止手生,争取每天一个JQuery练习,在这个博客记录下学习的笔记。 本特效主要采用fadeIn()和fadeOut()方法显示淡入淡出的显示效果显示或隐藏元...

Rhymo-Wu ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部