安装

作者

伊夫·杰克林

联系

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 Data下载2个PBF文件。Pbf只是谷歌的另一种格式,压缩得很好。 pwdls -1 命令就在那里,告诉你我们在哪里,我们得到了什么。

这个 来源 命令激活Python虚拟环境以使用imposm。

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

然后,我们使用法国国家投影EPSG代码(EPSG:2154)将数据写入(推送)数据库。你可以使用任何适合你需要的东西。

最后几个命令优化数据并授予一些权限 www-data

一些数据丢失了,您可以找到:

项目配置

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

项目部署

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

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

自定义配置

创建您自己的自定义生成文件并为其命名(无论您想要什么):

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

您可以添加来自主Makefile的所有自定义值,下面是一些示例:

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

include Makefile

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

构建映射文件

$ make -f aname.mk

现在应该有一个工作映射文件了。

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?服务=WMS&版本=1.3.0&请求=getCapabilities