上野家のホームページ
ナーマル,マリン,ココ
[
新規
|
一覧
|
検索
|
最新
|
ヘルプ
]
PC/地図/Locus map用ベクター地図/poi_converter
のソース
資料室
PC
/
地図
/
Locus map用ベクター地図
/
poi_converter
のソース
[
差分
|
バックアップ
|
リロード
]
[ ]
差分
を表示
PC/地図/Locus map用ベクター地図/poi_converter
へ行く。
* poi_converter [#n75cfd7f] [[poi_converter>https://github.com/lieblerj/poi_converter]]は,Mapsforge POI DBファイルをLocus Map用offline POI DBファイルに変換するPythonで動作するコマンドラインツール。~ poi_converterはPython3.xで動作するので,WindowsマシンでもLinuxマシンでも使える。~ ただ注意することとして,Python3のsqlite3は拡張エクステンションがロードできるようにビルドされている必要がある。~ * 使い方 [#x5f89fe5] 以下のように使います。~ > 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}|出力モードの指定&br;create: 新規作成 append: POIの追加| * Windowsマシンにpoi_converterをインストールする [#u0ea6ac0] Windowsマシンに,poi_converterが動作するようにインストールした。~ ** Pythonを標準インストーラーでインストールしている場合 [#d59505c0] Python 3.9を[[公式のインストーラー>https://www.python.org/downloads/windows/]]でインストールしている環境に,[[poi_converter>https://github.com/lieblerj/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がインストールされていた。~ *** sqlite3と変更とspatialiteのインストール [#oef298b0] Python 3.9.13のDLLsディレクトリにインストールされている''sqlite3.dllは,拡張モジュールのロードに対応していないバージョン''になっている。~ このため,困ったことにPythonモジュールの''spatialite''がうまく動作しない。~ 本来ならはPythonをソースコードからビルドしてインストールすればいいのだが,これはちょっと面倒なので他の方法を試した。~ *** SQLiteの入れ替え [#sc6fc303] ここの[[SQLiteのダウンロードサイト>https://www.sqlite.org/download.html]]からWindows用のビルド済みバイナリをダウンロードする。~ 64bit版: [[sqlite-dll-win64-x64-3420000.zip>https://www.sqlite.org/2023/sqlite-dll-win64-x64-3420000.zip]]~ 32bit版: [[sqlite-dll-win32-x86-3420000.zip>https://www.sqlite.org/2023/sqlite-dll-win32-x86-3420000.zip]]~ Python 3.9.13がインストールされているディレクトリにDLLsディレクトリがあるので,そこにある''sqlite3.dll''ファイルを上記のダウンロードしたzipファイルを解凍したものに入れ替えて,''sqlite3.def''もコピーする。~ *** mod_spacialiteのインストール [#u9a70b20] 空間データ処理のためのツールSpecialiteをインストールする。~ [[ここのページ>http://www.gaia-gis.it/gaia-sins/]]にあるMS Windows binariesのcurrent stable versionの64bitまたは32bitボタンをクリックして,以下のファイルをダウンロードする。~ 64bit版: [[mod_spatialite-5.0.1-win-amd64.7z>http://www.gaia-gis.it/gaia-sins/windows-bin-amd64-prev/mod_spatialite-5.0.1-win-amd64.7z]]~ 32bit版: [[mod_spatialite-5.0.1-win-x86.7z>http://www.gaia-gis.it/gaia-sins/windows-bin-x86-prev/mod_spatialite-5.0.1-win-x86.7z]]~ 64bit Windowsの場合は,mod_spatialite-5.0.1-win-amd64.7zを解凍して,任意のディレクトリ(例:C:\WinApl\spatialite)にコピーして,さらにシステム環境変数のPATHにディレクトリを追加する。~ *** pythonモジュールのインストール [#q29516e5] その他必要なPythonのモジュールをインストールした。~ ''spatialite''モジュールをインストールした。~ > pip install spatialite spatialite==0.0.3がインストールされた。~ //''osmium''モジュールをインストールした。~ // > pip install osmium //osmium==3.6.0がインストールされた。 ''osmium''モジュールは,whlファイル(&ref(osmium-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がインストールされた。~ *** poi_converterをインストール [#a4d03244] [[poi_converter>https://github.com/lieblerj/poi_converter]]をインストールする。~ > cd ~/mapdata/poi > git clone https://github.com/lieblerj/poi_converter.git インストールの確認。~ > python poiconverter.py -version poiconverter.py 0.6.1 ** PythonをMSYS2/MinGW-w64でインストールしている場合 [#a469205b] 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" *** spatialiteモジュールのインストール [#be3f5e96] ''spatialite''モジュールをインストールした。~ > pip install spatialite spatialite==0.0.3がインストールされた。~ *** pyosmiumのインストール [#r189f1ec] 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/&ref(osmium-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 *** tqdmモジュールをインストール~ [#p682e7eb] tqdmモジュールをインストールした。~ > pip install tqdm tqdm==4.65.0がインストールされた。~ * Linuxマシンにpoi_converterをインストールする [#e93047f1] CentOS 7.9(2009)に,poi_converterが動作するようにPython3をインストールする。~ 注意することとして,Python3のsqlite3が拡張エクステンションがロードできるようにビルドされている必要がある。しかしCentOSのパッケージに拡張エクステンションがロードできるようなPython3パッケージが見つからなかった。~ ** Python3のインストール [#s73100a4] 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がインストールできた。~ ** sqlite3のビルドとインストール [#mabbd35b] 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 ** spatialiteのインストール [#i432bb46] Pythonモジュールのspatialiteをインストールする。~ *** geosのビルドとインストール [#g4e54182] $ 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 *** libspatialiteのビルドとインストール [#k776c9da] $ 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 *** spatialiteモジュールのインストール [#g53575db] ''spatialite''モジュールをインストールする。~ $ pip3 install spatialite spatialite==0.0.3がインストールされた。 ** osmiumモジュールのインストール [#y9838698] ''osmium''モジュールをインストールする。~ $ pip3 install osmium==3.3.0 ** tqdmモジュールのインストール [#ad828fdb] インストールされてなければ,''tqdm''モジュールをインストールしする。~ $ pip3 install tqdm tqdm==4.64.0がインストールされている。~ ** poi_converterをインストール [#a4d03244] [[poi_converter>https://github.com/lieblerj/poi_converter]]をインストールする。~ $ cd ~/mapdata/poi $ git clone https://github.com/lieblerj/poi_converter.git インストールの確認。 $ python poiconverter.py -version poiconverter.py 0.6.1 * 設定ファイルの変更・追加 [#pda18614] configディレクトリにあるLocus MapのオフラインPOI DBの構造定義ファイルのinit.sqlファイルを,&ref(../init.sql);ファイルに入れ替える。~ それと,同じconfigディレクトリにある変換するPOIを選択するための定義ファイルtagfilter.txtを,&ref(../tagfilter.txt);ファイルに入れ替える。~ これらのファイルは,自分用に多少追加・変更している。~
PC/地図/Locus map用ベクター地図/poi_converter のバックアップソース(No. All)
現: 2023-07-31 (月) 14:47:09
yuji
Counter: 356, today: 1, yesterday: 1
Copyright©2008 Yuji Ueno All Rights Reserved.
ログイン
ユーザ名:
パスワード:
IDとパスワードを記憶
パスワード紛失
メインメニュー
ホーム
でぶlog
資料室
最新ページ一覧
全ページ一覧
ヘルプ
» 関連ページ
» Wikiソース
» 編集履歴
» バックアップ一覧
» 添付ファイル一覧
フォーラム
お問い合わせ