安装¶
- 作者
伊夫·杰克林
- 联系方式
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是一种能很方便地从谷歌上压缩的格式。 pwd 和 ls -1 命令只是用来告诉读者我们所处的位置,我们得到了什么。
source 命令可以激活python虚拟环境,以使用impom。
接下来的两个命令(只读命令)是相似的,它们会预处理PBF数据。不同之处在于,第二个命令合并缓存数据以将两个法语区域都推送到数据库中。
然后,我们使用法国国家计划EPSG代码(EPSG:2154)将数据写入数据库。你可以采用任何符合你需要的方式。
最后一个命令优化数据并赋予 *www-data*(万维网数据).
对于一些已丢失数据,您可以访问:
获取以下内容请访问:https://github.com/dataDesk/osm-la-streets/tree/master/la-streets/layers/processed_p and putt hem in basemaps/data/
获取以下图层land_polygon(Projection:Mercator)https://osmdata.openstreetmap.de/download/land-polygons-complete-3857.zip,也位于basemaps/data中/
获取下面的图层simplified_land_polygon https://osmdata.openstreetmap.de/download/land-polygons-split-3857.zip,也位于basemaps/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(当我们将数据导入数据库时,请参见上文)和数据库连接。
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