Page Top

使い方 anchor.png

以下のように使います。

> python poiconverter.py [-h] [-version] -if {pbf,poi} -om {create,append} input_file output_file          
input_file入力するMapsforge POI DBまたはOpenStreetMapのpbfファイルのファイル名
output_file出力するLocus Map用offline POI DBファイル名
-h, --helpヘルプの表示
-versionバージョン表示
-if {pbf,poi}入力ファイル形式の指定
-om {create,append}出力モードの指定
create: 新規作成 append: POIの追加
Page Top

Windowsマシンにpoi_converterをインストールする anchor.png

Windowsマシンに,poi_converterが動作するようにインストールした。

Page Top

Pythonを標準インストーラーでインストールしている場合 anchor.png

Python 3.9を公式のインストーラーでインストールしている環境に,poi_converterをインストールしてみた。

Python 3がインストールされているかの確認。

> python --version
Python 3.9.13

> pip --version
pip 23.2.1 from C:\Python39\lib\site-packages\pip (python 3.9)

Python 3.9.13がインストールされていた。

Page Top

sqlite3と変更とspatialiteのインストール anchor.png

Python 3.9.13のDLLsディレクトリにインストールされているsqlite3.dllは,拡張モジュールのロードに対応していないバージョンになっている。
このため,困ったことにPythonモジュールのspatialiteがうまく動作しない。

本来ならはPythonをソースコードからビルドしてインストールすればいいのだが,これはちょっと面倒なので他の方法を試した。

Page Top

SQLiteの入れ替え anchor.png

ここのSQLiteのダウンロードサイトからWindows用のビルド済みバイナリをダウンロードする。
64bit版: sqlite-dll-win64-x64-3420000.zip
32bit版: sqlite-dll-win32-x86-3420000.zip

Python 3.9.13がインストールされているディレクトリにDLLsディレクトリがあるので,そこにあるsqlite3.dllファイルを上記のダウンロードしたzipファイルを解凍したものに入れ替えて,sqlite3.defもコピーする。

Page Top

mod_spacialiteのインストール anchor.png

空間データ処理のためのツールSpecialiteをインストールする。

ここのページにあるMS Windows binariesのcurrent stable versionの64bitまたは32bitボタンをクリックして,以下のファイルをダウンロードする。
64bit版: mod_spatialite-5.0.1-win-amd64.7z
32bit版: mod_spatialite-5.0.1-win-x86.7z

64bit Windowsの場合は,mod_spatialite-5.0.1-win-amd64.7zを解凍して,任意のディレクトリ(例:C:\WinApl\spatialite)にコピーして,さらにシステム環境変数のPATHにディレクトリを追加する。

Page Top

pythonモジュールのインストール anchor.png

その他必要なPythonのモジュールをインストールした。

spatialiteモジュールをインストールした。

> pip install spatialite

spatialite==0.0.3がインストールされた。

osmiumモジュールは,whlファイル(fileosmium-3.2.0-cp39-cp39-win_amd64.whl)でインストールした。

> pip install osmium-3.2.0-cp39-cp39-win_amd64.whl

tqdmモジュールをインストールした。

> pip install tqdm

tqdm==4.63.1がインストールされた。

Page Top

poi_converterをインストール anchor.png

poi_converterをインストールする。

> cd ~/mapdata/poi
> git clone https://github.com/lieblerj/poi_converter.git

インストールの確認。

> python poiconverter.py -version
poiconverter.py 0.6.1
Page Top

PythonをMSYS2/MinGW-w64でインストールしている場合 anchor.png

poi_converter自体は上記でインストールされている。

poi_converterが動作する環境は以下のようにして整備する。

Pythonモジュールをビルドする場合に,そのままではMSVCが使われてしまいMinGW-w64のgccは使われない。
これをMinGW-w64のgccをビルドやインストール時に使うように指示する必要がある。

まず,Pythonがインストールされているディレクトリのlib/python3.10/distutilsディレクトリに,distutils.cfgファイルを以下の内容で作成する。

# setup.cfg
#----------------------------------------------
# This is a customized (global) distutils.cfg
# https://docs.python.org/3/install/index.html
#----------------------------------------------
# other locations (windows):
#   local       setup.cfg
#   system      prefix\Lib\distutils\distutils.cfg
#   personal    %HOME%\pydistutils.cfg
#----------------------------------------------

[global]
verbose=1

[build]
compiler=mingw32
force=1

[build_ext]
compiler=mingw32
force=1

その上で,以下のいづれかで対応する。

  • 環境変数SETUPTOOLS_USE_DISTUTILS=stdlibと設定すると,distutilsフラグが設定される。
    こうすると,Pythonがインストールされているdisutilsディレクトリにあるdisutils.cfgを使用するようになる。
    $ export SETUPTOOLS_USE_DISTUTILS=stdlib
  • ユーザー側の設定ファイルを使用する
    通常のWindows Pythonの場合は,%USERPROFIL%\pydistutils.cfgになる。
    LinuxやMSYS/MinGW-w64のPythonの場合は,~/.pydistutils.cfgファイルになる。
    ただこの方法だと,MSYS2/MinGW-w64でないPythonを併用している場合は問題となるかもしれない。
  • ./site-packages/_distutils/distutils.cfgをプロジェクトディレクトリにコピーして,ファイル名をsetup.cfgに変更する。
    これはプロジェクト毎にディレクトリを作成してビルドする場合に便利だと思う。
  • 任意のcfgファイルを,環境変数DIST_EXTRA_CONFIGで指定する。
    $ export DIST_EXTRA_CONFIG=/mingw64/lib/python3.10/distutils/distutils.cfg
  • たぶんコマンドで指定する方法でも指定できると思う。
    $ python -m build -C--global-option=--no-user-cfg -C--global-option=--verbose -C--build-option="build --compiler=mingw32 --force"
Page Top

spatialiteモジュールのインストール anchor.png

spatialiteモジュールをインストールした。

> pip install spatialite

spatialite==0.0.3がインストールされた。

Page Top

pyosmiumのインストール anchor.png

pyosmiumはソースコードからwhlファイルをビルドして,その後pipでインストールした。

pyosmiumのソースコードを取得する。

$ git clone https://github.com/osmcode/pyosmium.git
$ cd pyosmium

setup.pyファイルを以下のように編集する。

87行目あたりを,
       cmake_args = ['-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=' + extdir,
                     '-DPYTHON_EXECUTABLE=' + sys.executable]
        ↓
       cmake_args = ['-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=' + extdir,
                     '-DPYTHON_EXECUTABLE=D:\\MinGW64\\mingw64\\bin\\python.exe']
93-100行目をコメントする。~

に変更した。

whlファイルをビルドする。

$ export "CPPFLAGS=-I/mingw64/include"
$ export "LDFLAGS=-L/mingw64/lib"
$ python -m build -w
 :
 :
Successfully built osmium-3.6.1-cp310-cp310-mingw_x86_64.whl

うまくwhlファイルがdist/fileosmium-3.6.1-cp310-cp310-mingw_x86_64.whlが作成されれば,pyosmiumのビルドはうまくいっている。

作成したwhlファイルでpyosmium==3.6.1をインストールする。

$ cd dist
$ pip install osmium-3.6.1-cp310-cp310-mingw_x86_64.whl
Page Top

tqdmモジュールをインストール~ anchor.png

tqdmモジュールをインストールした。

> pip install tqdm

tqdm==4.65.0がインストールされた。

Page Top

Linuxマシンにpoi_converterをインストールする anchor.png

CentOS 7.9(2009)に,poi_converterが動作するようにPython3をインストールする。

注意することとして,Python3のsqlite3が拡張エクステンションがロードできるようにビルドされている必要がある。しかしCentOSのパッケージに拡張エクステンションがロードできるようなPython3パッケージが見つからなかった。

Page Top

Python3のインストール anchor.png

CentOS7.9(2009)でPython 3.9.12をソースからビルドしてインストールした。
これは,拡張エクステンションモジュールがロードできるsqlite3を含むPython3が必要なため。

Python 3.9.12のソースコードを取得して,ビルドしてインストールする。

$ mkdir python
$ wget https://www.python.org/ftp/python/3.9.12/Python-3.9.12.tgz
$ tar xfz Python-3.9.12.tgz
$ cd Python-3.9.12
$ ./configure --enable-loadable-sqlite-extensions
$ make
$ sudo make install

インストール後,シンボリックリンクを張っておく。

$ sudo ln -s /usr/local/bin/python3.9 /usr/bin/python3
$ sudo ln -s /usr/local/bin/pip3 /usr/bin/pip3

動作を確認してみる。

$ python3 --version
Python 3.9.12

$ pip3 --version
pip 23.1.2 from /usr/local/lib/python3.9/site-packages/pip (python 3.9)

これでPython 3.9.12がインストールできた。

Page Top

sqlite3のビルドとインストール anchor.png

sqlite3をビルドして,インストールする。

$ mkdir sqlite3
$ wget https://www.sqlite.org/2022/sqlite-autoconf-3380200.tar.gz
$ tar xvfz sqlite-autoconf-3380200.tar.gz
$ cd sqlite-autoconf-3380200
$ ./configure
$ make
$ sudo make install

確認してみる。

$ sqlite3 --version
3.38.2 2022-03-26 13:51:10 d33c709cc0af66bc5b6dc6216eba9f1f0b40960b9ae83694c986fbf4c1d6f08f
Page Top

spatialiteのインストール anchor.png

Pythonモジュールのspatialiteをインストールする。

Page Top

geosのビルドとインストール anchor.png

$ cd geos
$ wget http://download.osgeo.org/geos/geos-3.9.4.tar.bz2
$ tar xfj geos-3.9.4.tar.bz2
$ cd geos-3.9.4
$ ./configure
$ make 
$ sudo make install
Page Top

libspatialiteのビルドとインストール anchor.png

$ wget https://www.gaia-gis.it/gaia-sins/libspatialite-sources/libspatialite-4.3.0.tar.gz
$ tar xfa libspatialite-4.3.0.tar.gz
$ cd libspatialite-4.3.0
$ ./configure
$ make
$ sudo make install
Page Top

spatialiteモジュールのインストール anchor.png

spatialiteモジュールをインストールする。

$ pip3 install spatialite

spatialite==0.0.3がインストールされた。

Page Top

osmiumモジュールのインストール anchor.png

osmiumモジュールをインストールする。

$ pip3 install osmium==3.3.0
Page Top

tqdmモジュールのインストール anchor.png

インストールされてなければ,tqdmモジュールをインストールしする。

$ pip3 install tqdm

tqdm==4.64.0がインストールされている。

Page Top

poi_converterをインストール anchor.png

poi_converterをインストールする。

$ cd ~/mapdata/poi
$ git clone https://github.com/lieblerj/poi_converter.git

インストールの確認。

$ python poiconverter.py -version
poiconverter.py 0.6.1
Page Top

設定ファイルの変更・追加 anchor.png

configディレクトリにあるLocus MapのオフラインPOI DBの構造定義ファイルのinit.sqlファイルを,fileinit.sqlファイルに入れ替える。

それと,同じconfigディレクトリにある変換するPOIを選択するための定義ファイルtagfilter.txtを,filetagfilter.txtファイルに入れ替える。

これらのファイルは,自分用に多少追加・変更している。


新しくコメントをつける

題名
ゲスト名
投稿本文
より詳細なコメント入力フォームへ

トップ   凍結 差分 バックアップ 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
Counter: 111, today: 1, yesterday: 0
最終更新: 2023-07-31 (月) 15:47:09 (JST) (272d) by yuji