こんにちは松田です。
OpenStreetMapを使ってみようと思います。
各バージョン
- CentOS 7.4
- PostgreSQL 9.4.19
前提パッケージのインストール
1
2
3
4
5
6
|
# epelリポジトリ導入
yum install epel-release
# 前提パッケージのインストール
yum install freetype-devel libxml2-devel freetype-devel libtool-ltdl-devel libtiff-devel pycairo-devel cairomm-devel libjpeg-turbo-devel lua-devel boost-devel protobuf-c-devel
yum install proj-devel proj-epsg libicu-devel --enablerepo=epel
|
PostgreSQLのインストール
地図データを投入する用にPostgreSQLをインストール。
1
2
3
4
5
|
# PostgreSQLのリポジトリ導入
rpm -ivh https://download.postgresql.org/pub/repos/yum/9.4/redhat/rhel-7-x86_64/pgdg-redhat94-9.4-3.noarch.rpm
# PostgreSQLインストール
yum install postgresql94-server postgresql94-contrib postgresql94-devel --enablerepo=pgdg94
|
PostGISインストール
PostgreSQLでGIS (地理情報システム)が扱えるようになります。
1
2
3
4
5
|
# 前提パッケージのインストール
yum install gdal-devel --enablerepo=pgdg94,epel
# PostGISインストール
yum install postgis2_94 --enablerepo=pgdg94,epel
|
osm2pgsqlインストール
地図データ投入の際に使用するツールです。
1
2
3
4
5
6
7
8
|
Error: Package: osm2pgsql-0.92.0-1.el7.x86_64 (epel)
Requires: libgeos-3.4.2.so()(64bit)
Available: geos-3.4.2-1.rhel7.x86_64 (pgdg94)
libgeos-3.4.2.so()(64bit)
Available: geos-3.4.2-2.el7.x86_64 (epel)
libgeos-3.4.2.so()(64bit)
Installed: geos-3.5.0-1.rhel7.x86_64 (@pgdg94)
~libgeos-3.5.0.so()(64bit)
|
そのままインストールしようとすると上記のエラーとなったのでgeosのバージョンを下げた後インストールします。
1
2
3
4
5
6
7
8
|
# pgdg94リポジトリ版のgeos3.5をアンインストール
yum remove geos
# epelリポジトリ版のgeos3.4をインストール
yum install geos --enablerepo=epel
# osm2pgsqlをインストール
yum install osm2pgsql --enablerepo=epel
|
PostgreSQLの初期化
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
# 初期化
su - postgres
-bash-4.2$ /usr/pgsql-9.4/bin/initdb --encoding=UTF8 --no-locale
-bash-4.2$ exit
# 起動
systemctl start postgresql-9.4.service
# ユーザ作成
su - postgres
-bash-4.2$ createuser -s -P gis
Enter password for new role: 【パスワード入力】
Enter it again: 【パスワード入力】
# ユーザ確認
-bash-4.2$ psql
postgres=# \du
# ログアウト
postgres=# \q
-bash-4.2$ exit
|
データベースの作成
1
2
3
4
5
6
7
8
9
10
11
|
# DB作成
su - postgres
-bash-4.2$ psql
postgres=# create database gis owner gis;
# 確認
postgres=# \l
# ログアウト
postgres=# \q
-bash-4.2$ exit
|
PostGIS設定
1
2
3
4
5
6
7
8
|
su - postgres
-bash-4.2$ psql -U gis -W
gis=# CREATE EXTENSION postgis;
gis=# CREATE EXTENSION postgis_topology;
gis=# SELECT postgis_full_version();
POSTGIS="2.2.7 r16522" GEOS="3.6.2-CAPI-1.10.2 4d2925d6" PROJ="Rel. 4.9.3, 15 August 2016" GDAL="GDAL 1.11.4, released 2016/01/25" LIBXML="2.9.1" LIBJSON="0.11" TOPOLOGY RASTER
gis=# \q
-bash-4.2$ exit
|
日本地図データの投入
PostgreSQLに日本地図データをインポートするとディスク容量を30GBほど消費します。
予めディスクの空きを確認ください。
1
2
3
4
5
6
7
|
# 日本地図データのダウンロード
cd /usr/local/src/
wget https://download.geofabrik.de/asia/japan-latest.osm.pbf
# 日本地図データをインポート(2時間ほどかかりました。)
# --slimと--cacheを指定しないとOOMKillで落ちました。
osm2pgsql -m -d gis /usr/local/src/japan-latest.osm.pbf -U gis -W --slim --cache 4096
|
次回予告
PostgreSQLに地図データを投入するところまでいけました。
依存関係のエラーで試行錯誤を繰り返し、ここまで辿りつくのに想像以上に時間がかかりました。
次回はApacheから描画プログラムを呼びブラウザで地図を表示できるところまでやる予定です。
OpenStreetMapを使ってみる2