smellman's Broken Diary

クソみたいなもんです

入学

本日付で東京電機大学に入学しました。
母校です。
CySecという社会人向けコースを受けることになります。
初っぱなからzoomで講義らしく不安がありますが頑張ろうと思います。
ところで、同期にmizchi の嫁さんがいるのがわかり爆笑しました。
お互い頑張りましょう。

さて、大学ノートを仕入れなければ...

入学

本日付で東京電機大学に入学しました。
母校です。
CySecという社会人向けコースを受けることになります。
初っぱなからzoomで講義らしく不安がありますが頑張ろうと思います。
ところで、同期にmizchi の嫁さんがいるのがわかり爆笑しました。
お互い頑張りましょう。

さて、大学ノートを仕入れなければ...

さくらのナレッジに寄稿しました。

さくらのナレッジにOpenStreetMap Foundation Japanのタイルサーバの構築事案について寄稿しました。

knowledge.sakura.ad.jp

実はansibleスクリプトの方を公開しようと思ったのですが、ユーザ周りを外すのが面倒だったので、現在公開している範囲でやっています。

統計なんかを取るためのものとかも入っているのですが、例のOSSではなくなったアレなので正直そこらへんをガラッと変えたいなーとか思っています。
個人的にはPrometheusが良さそうなので入れ替えられたらまたここら辺で公開するかもっす。

というわけで宣伝でした。

40歳になりました。

40歳になりました。

前厄です。

誕生日プレゼントとしてM1 MacBook AirAkai Professional APC Key 25を購入しました。

ところで、今日もきつい睡眠障害があって、危うく過呼吸でぶっ倒れるところでした。
本当に睡眠が自由にできないのは厳しい。
睡眠薬を飲み続ける生活はまだしばらく続きそうです。

そんなわけで、これで40台というわけで治安の悪そうなFacebookグループに入ってみるぞ!

Raspberry Pi 4 環境作り

以下の環境をゲットしたので、Ubuntu 20.10をセットアップしてみた。

USBブートをするための設定

Raspberry OSをmicro SDに焼いて一旦micro SDカードで起動します。

そのあとsudo raspi-config を実行してシステムのアップデートをします。

そして、再起動をしてから再度sudo raspi-configを実行してブートの順番をUSBを優先するようにします。

注意点としては一回再起動をしないとブートの順番を入れ替えるのに失敗するのと、SDカードが刺さってるとそっちが優先されちゃうので気をつけてください。

ちなみに、デフォルトでUSBブートできるかは試してないです。

このあと一旦電源をオフにします。

USB SSDの準備

これは単純にbalenaEtherでイメージを焼いてあげればOKです。

Ubuntu 20.10の起動と設定

Raspberry Pi本体にUSB SSDをぶっ刺して起動すればあとは普通にUbuntuがブートするので、初期設定をしてあげればOKです。

再起動後に一旦Gnomeでログインをしてから、ターミナルでお約束の設定をします。

sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get autoremove
LANG=C xdg-user-dirs-gtk-update

最後のコマンドはデフォルトで作成されるファイル名を英語に変更するものです。これは好みで実行してください。

この後一旦再起動します。

後はGnomeが重たいので、好みのWindow Managerをインストールします。

個人的にはOpenboxを使いたかったのですが、Debian sidに比べるとバグが多いため、enlightenmentをインストールしました。

sudo apt-get install enlightenment

後はGnomeのセッションからログアウトして、ユーザを選択した後のパスワードを入れるタイミングで、右下のボタンから使いたいWindow Managerを選択すれば完了です。

後は自分好みでカスタマイズをします。

  • CapsLockをCtrl扱いするようにする
  • ibus-skkを入れて日本語入力でskkを使えるようにする(ibus-setupをする前に一旦Window Managerのセッションからログアウトしておく必要があります)
  • htopを入れて負荷を見てニヤニヤする

ちなみにこの文章もRaspberry Pi上のFirefoxで書いています。

実感としてはまだ日本語入力がちょっと重たいという印象はありますが、まぁもうちょっと常用して調査をしていこうと思います。

基盤地図情報をまとめてGeoPackagesにする

PackDLMap.zipを展開した中身を一つのGeoPackagesに変換するというスクリプトを書きました。

ogr2ogrコマンドが動く必要があります。

まずはPackDLMap.zipの中身の展開をして、その中身のzipを全て展開します。

そのあと、以下のスクリプトを実行します。

#!/bin/bash

targets=`echo PackDLMap/*/FG-GML*.xml`
output=kiban.gpkg
rm $output
first=1
for target in $targets
do
  filename=`basename $target`
  layer=`echo $filename | awk -F'-' '{print $4}'`
  if [[ first -eq 1 ]];
  then
    ogr2ogr -f "GPKG" $output $target -nln $layer
    first=0
  else
    ogr2ogr -f "GPKG" $output $target -nln $layer -update -append
    hoge=0
  fi
done

これであとはQGIS見たりするとよいと思います。

PS. タイトル間違ってた

QGISでGoogle Spreadsheetのデータを取り込む

QGISではGoogle Spreadsheetのデータを直接取り込むことができる。ただし、いろいろ制約はある。

Google SpreadSheet側の作業

Google SpreadSheetにてWebに公開を選択し、以下の項目を選択する。

  • 対象のシートを選択
  • 形式をカンマ区切り形式(.csv)を選択

この段階で出てきたURLをコピーする。今回は例として https://docs.google.com/spreadsheets/d/e/hogehoge/pub?gid=0&single=true&output=csv というURLが生成されたとします。

QGIS側での取り込み

QGISレイヤ->レイヤの追加->ベクタレイヤを追加を選択します。

ベクタレイヤ追加のダイアログで以下の項目を入力します。

  • ソースタイプはファイルを選択 
  • ベクタデータセットCSV:"/vsicurl/URL"という形式で入力
    • CSV:"/vsicurl/https://docs.google.com/spreadsheets/d/e/hogehoge/pub?gid=0&single=true&output=csv"
  • オプションの項目が増えるので、以下を入力
    • X_POSSIBLE_NAMES: CSV形式のX座標(経度)の項目
    • Y_POSSIBLE_NAMES: CSV形式のY座標(緯度)の項目

追加を押すとQGISのレイヤーに追加されます。なお、レイヤー名はわかりやすい名前に変更しておいてください。 また、変な位置に描画される可能性があるので、レイヤーを右クリックして、レイヤのCRSをEPSG:4326に設定します。

QGISで再読み込み

QGISで再読み込みをする場合は、Pythonコンソールから作業が必要です。

プラグイン->Pythonコンソールを起動。

レイヤの一覧で更新するレイヤーを選んで以下を入力。

import gdal
gdal.VSICurlClearCache()
iface.activeLayer().dataProvider().reloadData()

解説

QGISは多くの機能がgdal/ogrのフロントエンドとして動くため、gdal/ogrが提供しているVirtual File System機能を用いたファイルアクセスが可能です。

/vsicurl/はHTTPクライアントのVirtual File Systemを提供しており、それを介してアクセスすることでQGISでアクセスが可能です。

ただし、QGISのベクタデータのソースタイプのプロトコルが実質同じ機能を提供しているはずであるが、こちらはCSVの指定ができないためエラーとなってしまう。

メモ

元ネタはhackmdなんだけど、はてな記法に移そうとしたら挫折しました。