安装

作者

伊夫·杰克林

联系方式

yjacolin at free.fr

基本地图需要用*数据*投射成具体布局。

本节介绍如何安装这两个选项。

数据

数据来自于OpenStreetmap数据库,并且存储在PostgreSQL数据库中。

数据库创建

$ sudo -u postgres createdb osm
$ sudo -u postgres psql -d osm -c "CREATE EXTENSION postgis;"
$ sudo -u postgres createuser -D -l -R -S -P "www-data"
$ sudo -u postgres psql -d osm -c 'GRANT ALL ON ALL TABLES IN SCHEMA public TO "www-data";'

这将创建一个名为 osm的新数据库, 并添加PostGIS扩展,在公共架构中创建一个具有权限的*www-data* 。

IMSM安装

openstreetmap数据由impom处理。这是一个快速而简单的步骤。

从http://impsm.org/docs/impsm/latest/install.html查看安装过程,或参见以下步骤:

$ cd # switch to user home
$ mkdir osm_pbf
$ cd osm_pbf
$ sudo apt-get install build-essential python-dev  protobuf-compiler \
  libprotobuf-dev libtokyocabinet-dev python-psycopg2 libgeos-c1
$ virtualenv venv
$ venv/bin/pip install imposm

现在我们有了一个带有impom的虚拟python env。每次你需要使用它的时候,就运行 source venv/bin/activate (请参阅下面在我们的用例中使用它的后续步骤)。

导入数据

资料来源:http://impsm.org/docs/impsm/latest/tutorial.html

$ cd /tmp
$ wget http://download.geofabrik.de/europe/france/poitou-charentes-latest.osm.pbf
$ wget http://download.geofabrik.de/europe/france/centre-latest.osm.pbf #if you need another location
$ pwd
  /tmp/
$ ls -1
  centre-latest.osm.pbf
  poitou-charentes-latest.osm.pbf
$ source venv/bin/activate
$ imposm -m /path/to/basemaps/imposm-mapping.py --read poitou-charentes-latest.osm.pbf
$ imposm -m /path/to/basemaps/imposm-mapping.py --read --merge-cache centre-latest.osm.pbf
$ imposm -m /path/to/basemaps/imposm-mapping.py --write -d osm --connection postgis://www-data:www-data@localhost/osm --proj EPSG:2154
$ imposm -m /path/to/basemaps/imposm-mapping.py --optimize --connection postgis://www-data:www-data@localhost/osm
# Following command is probably not useful
$ sudo -u postgres psql -d osm -c "CREATE VIEW osm_new_waterways_gen1 AS \
    SELECT * FROM osm_new_waterways;CREATE VIEW osm_new_waterways_gen0 AS SELECT * FROM osm_new_waterways;"
$ sudo -u postgres psql -d osm -c "GRANT ALL ON ALL TABLES IN SCHEMA public TO \"www-data\";"

更简单的解释就是:首先,我们从Geofabrik OpenStreetMap数据中下载两个pbf文件。PBF是一种能很方便地从谷歌上压缩的格式。 pwdls -1 命令只是用来告诉读者我们所处的位置,我们得到了什么。

source 命令可以激活python虚拟环境,以使用impom。

接下来的两个命令(只读命令)是相似的,它们会预处理PBF数据。不同之处在于,第二个命令合并缓存数据以将两个法语区域都推送到数据库中。

然后,我们使用法国国家计划EPSG代码(EPSG:2154)将数据写入数据库。你可以采用任何符合你需要的方式。

最后一个命令优化数据并赋予 *www-data*(万维网数据).

对于一些已丢失数据,您可以访问:

项目配置

basemaps项目源代码位于以下位置:https://github.com/mapserver/basemaps

项目部署

$ cd  /var/www/somewhere/
$ git clone git@github.com:mapserver/basemaps.git
$ cd basemaps

这很简单,不需要太多解释。

自定义配置

创建您自己的自定义生成 Mapfile 并为其命名(任意名称):

$ vim aname.mk (edit the following file with custom variable):

您可以从 Mapfile 中添加所有想要的内容,以下是一些示例:

OSM_SRID = 2154
OSM_DB_CONNECTION = host=localhost dbname=osm user=www-data
password=www-data port=5432

include Makefile

在这里,我们定制数据的SRID(当我们将数据导入数据库时,请参见上文)和数据库连接。

构建 Mapfile

$ make -f aname.mk

现在应该有一个工作 Mapfile 了。

Apache配置

创建Apache配置并启用它。

$ vim osm.conf

有如下内容:

<VirtualHost \*:80>
   ErrorLog ${APACHE_LOG_DIR}/osm_error.log
   CustomLog ${APACHE_LOG_DIR}/osm_access.log combined

   ScriptAlias /osm-default /usr/lib/cgi-bin/mapserv
   <Location /osm-default>
      #    Order Deny,Allow
      #    Deny from all
      #    Allow from 127.0.1.1 ::1
      SetEnv MS_MAPFILE /path/to/basemaps/osm-default.map
   </Location>
</VirtualHost>

最后启用此Apache虚拟配置:

$ cp osm.conf /etc/apache/site-available/conf/
$ sudo a2ensite osm
$ sudo /etc/init.d/apache2 graceful

并测试 GetCapabilities url :http://localhost/osm-default?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities