smellman's Broken Diary

クソみたいなもんです

2023/09/26の日記 - PyPiの2FA対応 / PMTiles作成作業

生活と仕事

5:20ごろ起床してそのまま仕事を。

昨日ハマっていた点が分かった。py3dtilesに読み込ませる点群がlontigude, latitude, altitudeの並びじゃなくて、latitude, longitude, altitudeの並びだった。あれ、XYZってなんだよ、YXZじゃねーかこれ。

無事点群が出た所で、着替えて珈琲貴族エジンバラへ。

朝飯をくいつつ、ライブラリの公開に向けてソースコードにドキュメントを追加する作業をひたすらやった。

PRが出せる状態になったので、出した所、CIでエラーが。py3dtiles==6.0.0がPython 3.11に対応していないという状態だった。

CIを回すpythonのバージョンで3.11を削って、あとrequiments.txtに追加し忘れたライブラリを追加したりしてなんとか正常にCIが回る状態まで持っていって、なんとかリリースまでこぎ着けた。

しかし、エジンバラに来ると本当に仕事が捗る。

帰宅してからお客さんのエラーの調査を。ファイルをもらってみたら、Excelで西暦に見えるんだけどCSVファイル直で見たら和暦だったorz

あと、PyPiにアップロードすると2FA有効にしろってメールが来るので対応した。

blog.pypi.org

まず、PyPiのサイトで2FAをアカウントの設定で有効にしてから、プロジェクト単位でAPIキーを発行してそれを.pypircに記載すればOK。こんな感じになった。

[distutils]
index-servers =
    pypi
    testpypi
    hoge-test
    hoge

[pypi]
username = spamham
password = foobar

[testpypi]
username = spamham
password = foobar

[hoge-test]
repository = https://test.pypi.org/legacy/
username = __token__
password = pypi-API_TOKEN

[hoge]
repository = https://upload.pypi.org/legacy/
username = __token__
password = pypi-API_TOKEN

ここでindex-serversにhogeとかhoge-testとかを追加しないとtwineでエラーになるので注意。

あとはtwineで--repositoryをつけてアップロードすればOK。

$ twine upload --repository hoge-test dist/*

お昼までクラブハウスをやっていて、12:30からミーティング5つこなしつつ、ミーティングの隙間にOpenStreetMap Japanのチャットで依頼を受けたPMTilesの作成作業を。

GeoPackagesからのPMTiles作成だったんだけど、一発変換もできるけど、属性ごとにレイヤー分けた方がJOSMでトレースするときにわかりやすいかもと思ったので、愚直にGeoJSON作る感じにした。ファイルも小さかったし。

ogr2ogr -where "道路種別='一級 '" -t_srs EPSG:4326 -f GeoJSON layer-1.geojson ../original.gpkg layer
ogr2ogr -where "道路種別='二級 '" -t_srs EPSG:4326 -f GeoJSON layer-2.geojson ../original.gpkg layer
ogr2ogr -where "道路種別='その他'" -t_srs EPSG:4326 -f GeoJSON layer-other.geojson ../original.gpkg layer
tippecanoe -o layer-1.mbtiles -l "一級" layer-1.geojson -pk -pf
tippecanoe -o layer-2.mbtiles -l "二級" layer-2.geojson -pk -pf
tippecanoe -o layer-other.mbtiles -l "その他" layer-other.geojson -pk -pf
tile-join -o all.mbtiles layer-1.mbtiles layer-2.mbtiles layer-other.mbtiles
pmtiles convert all.mbtiles all.pmtiles

ちなみに上のスクリプトはまだ非公開データなのでファイル名などは変えています。

ogr2ogrの-whereで日本語がちゃんと使えたのがいい感じでした。

あと、JOSMでpmtiles対応がちゃんとできるかについてはさすがにplanet読み込ませるのはアレだと思ったので、yuisekiが作ったosm-regional-pmtiles-builderを使って北区のpmtiles作ってファイルサーバにアップして検証した。

github.com

go-pmtilesがhomebrewでも入れられるのめっちゃ感動した(そこかよ

16:30ごろ退勤。

17:00ごろに夕飯(ペヤング)を作ってたらGARMINの時計がアラーム鳴る前にハングアップした!!!!!!ってか、定期的にハングアップするの勘弁してほしい。

今日はこのへんで。