TextQL を Windows で使う
CSV ファイルや TSV ファイルに直接 SQL をかけて結果を受け取れる TextQL というコマンドが Twitter の TL に流れてきたので Windows にインストールしました。PowerShell で使えるようにした作業メモです。
流れてきた紹介記事
TextQL - CVSファイルに対してSQLを実行できるコマンドラインツール | ソフトアンテナブログ
Go Lang の設定
TextQL は Go Lang で書かれているっぽいのでまず Windows で Go Lang を使えるようにします。
The Go Programming Languageのダウンロードページから Windows 用のインストーラ goX.X.X.windows-amd64.msi あたりをダウンロードしてインストールすればOKです。
なお自分は goX.X.X.windows-amd64.zip をダウンロード&展開して環境変数の GOBIN
と GOROOT
、PATH
を設定しました。
GOROOT
が zip ファイルを展開したディレクトリ、GOBIN
は GOROOT
の中の bin をセット。PATH
に GOBIN
のパスを追加して終わり。
> go version
go version go1.10 windows/amd64
とか出れば OK。
gcc の設定
gcc も使うっぽいので Sourceforge から mingw-w64-install.exe をダウンロード。インストーラを起動して途中の Architecture
を間違えなければインストール完了です。
PowerShell を再起動して gcc -v
が実行されれば OK。実行されていなければ C:\Program Files\mingw-w64\x86_64-X.X.X-posix-seh-rt_v5-rev0\mingw64
あたりの中にある bin
までパスを通せば使えるようになるはず。
TextQL のインストール
ここまで来れば簡単。
> go get -u github.com/dinedal/textql/...
とすれば GOBIN
にビルドされた実行ファイルができてきます。
Excel に突っ込んでからフィルタかけたり Access に突っ込んでから SQL かけたりしなくていいので超快適。
Linux で iPhone をマウントして Mapillary アプリの写真を取り出す
Mapillary へ画像をアップロードする前にそれなりの大きさの画面で写真を見たいじゃないですか。Linux で iPhone をマウントする時に毎回ググるのがアレなので自分用にメモを残しておきます。
操作を始める前に iPhone の Mapillary アプリで写真に EXIF 情報を付与しておくとパソコンから Mapillary へアップロードできる。
iPhone のマウント
こちらの gist を見るとやり方が書いてあります。
ざっくり流れを書くと
- libplist (場合によってはいらない)
- libusbmuxd
- libimobiledevice
- usbmuxd
- ifuse
辺りを入れる。ビルドをする場合はビルドに使われるパッケージ類を入れておくこと。
パソコンに iPhone を接続したら認証させる。iPhone 側でコンピューターを信頼するかどうかのダイアログが出てたら信頼しておかないとダメなはず。
$ idevicepair pair
SUCCESS: Paired with device XXXX~
が表示されれば OK。出なかったら適当にトラブルシュートする。
$ ifuse --documents com.mapillary.app /home/zoar/mapillary/
普通にマウントしても見えなかったのでアプリを指定してマウントする。
アンマウントするときは
$ fusermount -u /home/zoar/mapillary/
写真の取り出し
マウントしたディレクトリに移動すると日付時刻ディレクトリの中に写真が入っているので必要なものをコピーする。今回は全部コピーした。
$ cd ~/mapillary/ $ cp -r ./* /pathToDir/
取り出した写真を見ながら不要な画像を削除したりモザイク処理をする。2000枚近くの写真から人の顔とか車のナンバーを認識してモザイク処理してくれるソフトないかしら。
アップロード
Mapillary tools でアップロードする。
iPhone のアプリ側で EXIF 情報を付与しておけば Mapillary のユーザー情報も一緒に入っているので upload.py
でアップロードできる。
普通の写真に位置情報を付けたファイルの場合には upload_with_authentication.py
とかでアップロードする。
あとは公開されるのを待てば OK。
2枚の Mapillary 画像から地物の位置を取得する実験(の途中)
先日参加した Mapillary Meetup 2018 Tokyo : ATND の懇親会で思いついた2枚の Mapillary 画像から地物の位置を特定するやつをどうにかしようと模索中です。
適当に動作するっぽい JavaScrpt までは書けました。続きができる気がしないけど。
右上の地図で濃い緑矢印は画像の方向角、赤いラインは画像間の基線です(これはいらないなぁ…)。
地図上の青いラインと画像上の青いラインは連動していて、画像上のマウスポインタの位置が画像上でどの方向かを見るためのものです。緑ラインも同じ様な動きをしますが、こちらはマウスをクリックした位置に固定して表示されます。
各種数値を正しく取得できれば緑ラインの交点が地物の位置になるはずです。サンプル画像では写真内から道路案内標識の位置を出そうとしていますが、地図上の交点がはるか街区内に突っ込んでいるので正しい位置を出せなかったことがわかります。
画像の持つ画像自体の方向角が正しくなかったり、画角の情報や画角の計算に必要な情報を持っていない画像で試したため(なぜその画像を選んだ…)結果として地物の正しい位置を取得できませんでした。
課題をまとめるために記事を残しておきます。あー、でもこんな記事書いたらなにか出来上がった気になってしまうかもと思いつつ。
やり残していること
さて、実装できるでしょうか。
Mapillary から直接画像の取得
今のはファイルをローカルに保存してデータを取っているので REST API か Mapillary.js を使ってクライアントサイドで完結できるようにしないと使い勝手が悪すぎる。
画角の取得
画角情報が保存されていないと画角とマウスの移動量を正しく連携させられないので、画像の2点と地図上の2点から挟角を設定できるような機能が必要そうです。
画像方向角の調整
画像の方向角は電子コンパスが正しく動作していないと正確な方向角を記録できません。せっかく画像から風景が見えていて、右上に地図を表示できているのでこの画面上で方向角を補正する機能を追加すれば正しい方向角を向くはずです。
ラインの拡縮追従
地図を拡大・縮小した時にラインが取り残されてしまいます…。
交点計算の改善
最小自乗法とかで計算したらかっこよさそう。
使ってるもの
地図表示は leaflet.js でその他のオブジェクトは d3.js でなんとかしています。
これに使うつもりで d3.js を練習してたわけではないのですが、なんか使えましたね。たまたま…。
というか誰か作って(ぇ
d3.js v4 でポリゴンとポイントとボロノイ図を表示する
d3.js で検索すると v3 で書かれたものがほとんどでな上バージョンも明記されていないことも多くて探しにくい…。
結局 GUNMA GIS GEEK の清水さんのコードだけ見ててできたので d3.js + 地図を表現する時にはまず清水さんのブログを探してからにしよう…。
つーか d3.js v5 があるじゃんよ。
何か目的があって書きたかったわけではないですが、オフィシャルな(?)ドキュメントを読む前に少しは書いておかないとドキュメントが何言ってるかわらからないヤツなんです。
青で段階的に着色されたポリゴンは e-Stat) からダウンロードした2015年の国勢調査時の町丁目を QGIS で GeoJSON 化したものです。ポリゴン内の人口が多いほど青が濃くなっていますが、面積が揃っていないので着色だけ見てもよくわからないことになってしまいました。
赤いポイントは 埼玉県オープンデータ からダウンロードした川越市の避難所データで、黒い境界は避難所データをボロノイ分割してできたポリゴンです。
d3.js を僅かに程度覚えてもデザイン力がないとツライことに気づきました…。
ポイントのレンダリングをポリゴンのレンダリングに似せて書いてスマートにしたいなとか思っていますが、とりあえずこんな感じで。
d3.js v4 で画像を拡大・縮小・ドラッグする
ちょっとブラウザ上でマウスホイールを使って画像を拡大・縮小したりドラッグしたかったので試してみました。
ググるといろいろな手法が出てきましたが d3.js v3 の頃のものだっりしますが、 GUNMA GIS GEEK 清水さんのブログの内容は v4 でとてもシンプルだったので、この内容を少し書き換えるだけで簡単にできました。
SVG の中に image
オブジェクトを足してそいつをグリグリさせています。
元の画像が 1024x1024 だったものを 1/3 の大きさにして表示させています。
See the Pen Image File Scaling by Zoar (@Zoar-jp) on CodePen.
Raspberry Pi Zero W 見守りカメラの画像をタブレットで見る
前回の「Raspberry Pi Zero W を見守りカメラ用に設定する」で玄関に動くものを検知したら写真を撮ってファイルサーバーに保存するようにできました。
妻はあまりパソコンを使わない(妻用のマシンもない)ため、妻がよく使う iPad(3rd) で撮影した画像を見られるようにすべく Node.js で簡単なスライドショーを作りました。
続きを読むRaspberry Pi Zero W を見守りカメラ用に設定する
玄関のあたりで動く物があったら撮影をしてくれるように設定します。
以前は Raspberry Pi を使っていましたが起動しなくなってしまったので目立たなくしやすい Pi Zero W を選びました。
今回購入した Raspberry Pi Zero W スターターキット(長い)では付属している 8GB の microSD に OS 導入用の NOOBS が入っているのでそいつを使って Raspbian をインストールします。
続きを読む