免責事項
最近、OSMデータに基づいてタイルを生成するタスクが発生しました。 私は検索し、
いくつかの 記事を読みましたが、* nix-systemsはどこでも紹介され、Windowsを実行しているサーバーがありました。 最終的に、多かれ少なかれわかりやすいチュートリアルが見つかりましたが、それは少し時代遅れであり、どこでも詳細ではないので、いじくり回さなければなりませんでした。 成功した結論の後、私は私の経験が役に立つと思いました。
興味のある方は、猫の下でお願いします。
入門
インストールは、ソフトウェアなしで、クリーンなWindows 7および8.1で行われました。 次のものが必要です。
- PostgreSQL(9.4.4を使用)-OSMダンプからの地理情報を保存するためのデータベース。
- PostGIS(2.1を使用)-地理情報を操作するためのデータベース拡張。
- Osm2pgsql-OSMデータダンプをデータベースにインポートするためのユーティリティ。
- Mapnik(2.2.0を使用)-タイルを生成するためのユーティリティ。
また、追加のツールが必要になりますが、それなしでは機能しません。
- PostGISのGiSTインデックスのパッチ
- Python 2.x(2.7.10を使用)-タイルを生成するためのスクリプトが記述されています。
- PROJ.4-地図投影ライブラリ。
- SVNクライアント(TortoiseSVNを使用)-OSMからタイルを生成するためのスクリプトをダウンロードするには、以下を参照してください。
- OSM生成スクリプト(リビジョン31519を使用)
- OSM情報:海岸線など。
1. PostgreSQLをインストールして構成する
配布は
オフサイトから取得できます。 インストールは非常に簡単ですが、いくつかのポイントがあります。
最初に、データベースが保存されているディレクトリを変更する必要があります(OSMデータが惑星全体で使用される場合、テラバイトまで必要になる場合があります)。 デフォルト(バージョン9.4の場合)は、
C:\Program Files\PostgreSQL\9.4\data
第二に、おそらくクラスターのロケールを変更する必要があります。 私の場合、
Russian, Russia
。 インストール中に、PostgreSQLサーバーのパスワードも求められますが、それも必要です。覚えておいてください。
PostgreSQL自体をインストールした後、データベースの拡張機能をインストールするためのインストールウィザードであるStackBuilderが起動します。 次の2つの拡張機能を選択する必要があります。SpatialExtensions-> PostGIS and Database Drivers-> JDBC。 デフォルトでは、インストール中のすべての設定。 PostGISのインストール中に、システム変数を作成する要求と、さらにいくつかの質問があります、同意します。 その後、PostgreSQLサービスを再起動する必要があります。
次に、
bin
PostgreSQLディレクトリを
PATH
に追加します。 追加後、設定を適用するには、ログアウトしてから再度ログインする(logoff-login)必要があります。
インストールが正しいことを確認します。インストール段階で入力したパスワードを覚えておく必要があります。 プログラムでpgAdmin IIIを見つけて実行します。 サーバーのリストには、単一の
localhost:5432
、接続されています。 失敗した場合、おそらくサービスは実行されていません。
ジオデータベーステンプレートを作成します。
CREATE DATABASE template_postgis_20 WITH ENCODING='UTF8' OWNER=postgres CONNECTION LIMIT=-1 LC_COLLATE = 'Russian_Russia.1251' LC_CTYPE = 'Russian_Russia.1251' TABLESPACE=pg_default;
テンプレートに2つの拡張を追加します:
postgis_topology
と
postgis_topology
。 私たちはこの拠点から切り離されています。
template_postgis_20
template_postgis_20
基づいて
gis
データベースを作成します。
CREATE DATABASE gis WITH OWNER = postgres ENCODING = 'UTF8' TEMPLATE = template_postgis_20 TABLESPACE = pg_default LC_COLLATE = 'Russian_Russia.1251' LC_CTYPE = 'Russian_Russia.1251' CONNECTION LIMIT = -1;
ここから PostGIS GiSTのパッチを入手
してください 。 コマンドラインからのパッチ:
C:\Users\red>psql -U postgres -d gis -f legacy-postgis-gist.sql CREATE OPERATOR CLASS
データベースの準備ができました。
2. Osm2pgsqlのインストールと構成
githubから最新リリースを取得して自分で収集するか
、ここから完成したアーティファクト
を取得でき
ます 。
osm2pgsql
で便利にダウンロード、解凍、名前変更します。 このディレクトリを
PATH
変数に追加します。 ログオフログイン。 すべてが機能することを確認します。
C:\Users\red>osm2pgsql -h
ヘルプを発行する必要があります。 githubのリポジトリから最後の
default.style
を取得します。
すべてがOSMデータをインポートする準備ができています。
圧縮された形の惑星の地図の重さは約40 GBです。 たとえば、モスクワの地図は、たとえば
ここから取得でき
ます 。 ダウンロード。
インポートするには、コマンドラインを実行します。
C:\Users\red>osm2pgsql -d gis -U postgres -W -H localhost -P 5432 -s -SC:\osm2pgsql\default.style RU-MOW.osm.pbf
-s
、つまり slim-一時データがデータベースに保存されるモード。 これにより、プロセスが遅くなり、ディスク使用量が増加しますが、RAM使用量は減少します。
すべてが正しい場合、パスワード要求が行われ、データベースへのダンプのインポートが開始されます。 最初の行には、あらゆる種類の警告がありますが、心配する必要はありません。すべてが正常です。 インポートが完了すると、次のようなものになります。
Osm2pgsql took 160s overall
データベース内のジオデータ。
3. Python 2.xをインストールします
ここから x86ディストリビューションをダウンロードします(WindowsのMapnikバイナリにはx86のみがあるため)。 1つを除いて、デフォルト設定を設定します。「python.exeをPATHに追加する」ことに注意するか、インストール後に手動で行ってください。 ログオフログイン。
インストールを確認します。
C:\Users\red>python Python 2.7.10 (default, May 23 2015, 09:40:32) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>>
Pythonの準備ができました。
4. Mapnikをインストールして構成する
繰り返しますが、2つのオプションがあります:
githubからソースコードを
自分で収集するか、
ここで既製のバイナリを取得し
ます 。
Windows 32 bit Package
を探してい
Windows 32 bit Package
。ダウンロードして、
C:\mapnik-v2.2.0
ます。
かなり詳細な
wikiインストールマニュアルがあります。 要するに、今度はマップディレクトリの
lib
と
bin
を
PATH
に追加します。 新しいシステム変数
PYTHONPATH
を作成し、
C:\mapnik-v2.2.0\python\2.7\site-packages
へのパスを割り当て
C:\mapnik-v2.2.0\python\2.7\site-packages
。これらは2つです。 この
vcredistを入れて、それは3です。 ログオフログイン。
インストールを確認します。
C:\Users\red>python Python 2.7.10 (default, May 23 2015, 09:40:32) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>>import mapnik >>>
可能性のあるエラーは、wikiで解析されます。 しかし、これに加えて、
lib
と
bin
への
PATH
の先頭に転送することを試みる価値があります。
そして、テストタイルを生成します。
C:\Users\red>cd C:\mapnik-v2.2.0\demo\python C:\mapnik-v2.2.0\demo\python>python rundemo.py Pycairo not available... will render Cairo formats using alternative method 12 maps have been rendered in the current directory: - demo.png - demo256.png - demo64_binary_transparency.png - demo128_colors_hextree_no_alpha.png - demo_high.jpg - demo_low.jpg - demo.tif - demo.pdf - demo.ps - demo.svg - demo_cairo_rgb.png - demo_cairo_argb.png Have a look!
ほとんどすべて。
githubに移動し、
PROJ.4ライブラリを見つけ、バイナリを見つけます:
Prebuilt Win32 executables, DLL including NAD27 grid shift files
。 ダウンロード、解凍(
c:\proj
)。
PATH
に
bin
へのパス
PATH
追加し、新しい変数
PROJ_LIB
に
nad
へのパス
PATH
追加します。 ログオフログイン。
もう少し。
スクリプトをダウンロードして、公式の
svnリポジトリからタイルを生成し、
c:\mapnik
入れ
ます 。
さらに、海岸線とスクリプトが機能するために必要なすべてのもの。 これには
get-coastlines.sh
スクリプトがありますが、bashで書かれており、Windowsでは動作しません。 しかし、それは非常にシンプルで短いため、すべてのステップをペンで繰り返します。
ダウンロード:
すべてのアーカイブを
c:\mapnik\world_boundaries
ディレクトリに
c:\mapnik\world_boundaries
ます。
最後の準備。
mapnik\inc
移動し、
settings.xml.inc.template
ファイルの名前を
settings.xml.inc.template
に変更し
settings.xml.inc
。
fontset-settings.xml.inc
fontset-settings.xml.inc.template
ファイル。
datasource-settings.xml.inc.template
ファイルを編集し
datasource-settings.xml.inc
:
<Parameter name="type">postgis</Parameter> <Parameter name="password">password</Parameter> <Parameter name="host">localhost</Parameter> <Parameter name="port">5432</Parameter> <Parameter name="user">postgres</Parameter> <Parameter name="dbname">gis</Parameter> <Parameter name="estimate_extent">false</Parameter>
generate_tiles.py
スクリプトを少し修正しましょう:
193行目のブロック:
if __name__ == "__main__": home = os.environ['HOME'] try: mapfile = os.environ['MAPNIK_MAP_FILE'] except KeyError: mapfile = home + "/svn.openstreetmap.org/applications/rendering/mapnik/osm-local.xml" try: tile_dir = os.environ['MAPNIK_TILE_DIR'] except KeyError: tile_dir = home + "/osm/tiles/" if not tile_dir.endswith('/'): tile_dir = tile_dir + '/'
に置き換える
if __name__ == "__main__": try: mapfile = os.environ['MAPNIK_MAP_FILE'] except KeyError: print('MAPNIK_MAP_FILE env var not found! Use default.') mapfile = 'C:/mapnik/osm.xml'
タイルが生成される境界(四角形の地理座標)を指定します。
前の213行目
bbox = (-180.0,-90.0, 180.0,90.0) render_tiles(bbox, mapfile, tile_dir, 0, 5, "World")
書く(私たちの場合、モスクワ)
bbox = (37.32, 55.57, 37.88, 55.92) render_tiles(bbox, mapfile, tile_dir, 17, 17, "Moscow") exit()
ヒントとコツ境界座標は、データの取得元であるosmファイルから取得されます(最初にあります)。 データファイルは非常に大きくなる可能性があるため、通常のテキストエディターで開くことはできません。EmEditor(有料)などのエディターを使用するか、自分でgrepをインストールすることをお勧めします。
パスを指定し、タイルの生成を開始します。
C:\mapnik>generate_tiles.py
プロセスは行かなければなりません。
数分から数週間かかります(全世界の場合で、最も強力な車ではありません)。
参照資料
0.
softwaresimian.com/2012/12/02/openstreetmap-osm-install-on-windows-part-i-the-database1.
switch2osm.org/serving-tiles/manually-building-a-tile-server2.wiki.openstreetmap.org/wiki/PostGIS/Installation3.wiki.openstreetmap.org/wiki/Osm2pgsql4.wiki.openstreetmap.org/wiki/Creating_your_own_tiles5.
habrahabr.ru/post/1446756.
habrahabr.ru/post/2032127.データのロシア化:
habrahabr.ru/post/259141