QGIS 近くの地物属性を取得する。

この記事は備忘録のためのメモです。
説明が煩雑になっていますが、お許しください。

家(ポイント)から最も近いコンビニを探したい。
ルート検索と絡めると更に複雑になるので、取り敢えずは直線距離で探してみようと思います。

今回はクラスメートの家(複数ポイント)からそれぞれ最も直線距離で近くにあるコンビニの名前と住所を持ってこようと思います。

QGISのツールボックス→ベクタ一般→属性の最近防結合を開きます。

入力レイヤに家レイヤを指定します。
第2の入力レイヤにコンビニレイヤを指定します。
第2の入力レイヤからコピーする属性を指定します。
出力レイヤを指定します。
実行すると、最も近いコンビニの情報が家レイヤの属性データとして追加されます。

QGIS 次の地物の属性データを取り出す。(フィールド計算機)

すぐに忘れるので備忘録です。
QGISでフィールド計算機を使った計算を行う際に、カレント地物(feature)の属性情報(attribute)は直接使えますが、次の地物の属性情報を使おうとしたい時があります。
a[$id+1]とかしたいのですが、受け付けてくれませんw

計算式を示します。

attribute(get_feature_by_id(@layer,$id+1),’name’)

※nameには、属性名が入ります。

以下にそれぞれの関数のコーリングシーケンスを記載します。

【attirute】
 ・現在の地物の属性値を取り出す場合
  attribute(attribute_name)
  return : 属性値

 ・指定された地物の属性情報を取り出す場合
  attribute(feature,attribute_name)
  return:属性値

【get_feature_by_id】
 get_feature_by_id(layer,feature_id)
 return:layerでとIDで指定された地物(feature)

この辺りは、QGISの日本語翻訳とシステム上で使われる言葉(英語)が入り混じって解り難くなってしまっているところかも知れませんね。

サンプルでは、get_feature_by_idで@layerを指定しています。カレントレイヤが指定されます。
次に、$id+1でカレントID+1つまり次のIDを指定しています。
これで、次に地物のfeatureが返されます。

attribute関数で指定するfeatureの特定が成されます。
さらに、欲しい属性名をしていします。
「”(ダブルコーテーション)」ではなく、「’(シングルコーテーション)」で括ることで、文字列で属性名を指定しています。
「”」だと、属性そのものを指定してしまうというところに注意が必要です。

意外と、この辺りの記載が無くて、調べるのに一苦労しました。
たまにしかやらないから、いつも忘れてしまうんですよね(^^ゞ

次からはこのメモが役に立ってくれることを期待しますw

QGIS 複数の線を複数の線で分割する

タイトルが解り難い!
複数のPloylineを複数のPolylineで分割したいと思ったのですが、QGISのプロセシングツール→ベクタオーバーレイ→線で分割でやろうと思ったら、出来ないなぁ?なんでだろう?

問題の説明をします。

赤のレイヤと青のレイヤがあり、青のレイヤにある線分を赤の線分で分割しようとしました。

意外と忘れてしまうのですが、シングルパートになっていると上手くできないことがあります。
2線分までは対応しているのですが、3線分以上だと分割してくれないみたいです。(実際には同じ方法で分割出来るのですが、少し問題があります。)

結論は、赤のレイヤをマルチパートレイヤに変換します。
これで後は同じように線を分割することが出来ます。

分割対象(青)のレイヤはマルチパートにしなくても良いと思います。

Rocky Linux 8 NAS接続

メッチャ忙しいから、メッチャシンプルに!
こんな感じです。

dnf install samba-client

dnf install cifs-utils

mount -t cifs //<ドメイン>/<dir> /mnt/xxxx

パスワードが必要な場合は

mount -t cifs //<ドメイン>/<dir> /mnt/xxxx -o password=xxxxx

/etc/fstabに以下を追加

リブートして接続されていれば完成です!

外部のSMTPサーバを使ってメールをコマンドで発行するには

SMTPサーバの設定をやってからメールを配信する仕組みを作る手法については、何どもやっているのですが、意外とSMTPサーバの構築は必要なくてメール配信だけコマンドラインでやりたいってのが無かったので、ここにメモしておきます。

Rocky Linux 8/CentOS 8の環境下で行います。

色々なサイトを見ていると、「mailコマンドが標準で使えるよ/インストールされている」とか「sendmailが入ってるから・・・」とか、どれならコマンド叩いたら・・・と思ってmailコマンド叩くと無いって怒られるw

最近はセキュリティ絡みで、外部と連携する機能は標準でインストールされない様になっているんですかね?

ということで、必要なパッケージをインストールします。

これで準備は完了です。
mailxだけ入れて、mailコマンド叩くと、sendmailが無いって怒られるんですよw
だから入れました。

ということで、コマンド叩いてみます。

設定はそれぞれの環境で異なりますが、概ねこんな感じです。
あとは、自分にテストメール送ってみて、届いていたら完成です。

Rocky Linuxへの移行

本記事は2021年9月1日現在の移行手順を記しています。
必ずしも最新の情報では無いことをご留意ください。
また、CentOSやRocky Linuxがそうであるように、OSSは自己責任です。
本記事の内容に不備があったとしても、何らの責任も保障もありません。
必ずバックアップを行ってから作業を行うことを強くお勧めします。

さて、2020年12月にCentOS 8の保守期間を2021年末で打ち切るという暴挙発言があってから、移行先に苦慮しておりました。
いくつかの選択肢があることはここで示しませんが、その一つとしてRocky Linuxを使用することとしました。

既にRocky Linuxへの移行手順については、いくつものサイトで記載されていますが、個人的なコメントも付け加えながら記録しようと思います。

まず、準備した環境はVMware上で動作する仮想マシンです。
CentOS 8 がインストールされています。
比較的単純な構成となっており、複雑な環境でどうなるかはこれからいくつかの環境を移行する中で生じる課題として、今後、気が向いた時にでも追記していこうかと思います。

では、移行手順を記します。

確認

まず、本家サイトを確認します。

https://rockylinux.org/

https://rockylinux.org/ja/

ドキュメントを確認し、Convert CentOS (and Others) to Rocky Linuxの内容を確認してみます。

ざっくりと最初の方で記載されていることは、ハードウェアとかVPSなどの実装環境とそこで動作しているCentOSやAlma linux,RHEL,OracleLinuxのバージョンが8.4に対応していることが求められています。

あと、root権限が必要になりそうですね。sudoでも可能なようです。

更に読み進むと、migrate2rockyをダウンロードして使用することが記載されています。
migrate2rockyは、下記のコマンドでダウンロードできます。
(後でこちらも記載します。)

この後の記載では、ブラウザでダウンロードする方法が記載されているのですが、まあコマンドラインで良いでしょう。どの道、コマンドラインで全て操作するのですから。。。

コマンド実行すれば出来上がりっぽい?
ということで、作業開始します。

手順

OSを最新状態にする。

まず、OSを最新の状態にアップデートします。

アップデートを行った後に、再起動を行うことをお勧めします。
※私の環境ではMySQL/MariadDBの設定を少し弄っていたために、MySQL/MariadDBが起動出来無くなっていました。こちらを参考に修正を行い復旧しました。

移行ツールのダウンロード

インターネットに接続されてる環境であれば、先に示したmigrate2rockyを直接ダウンロードすれば良いです。

本家では、/home/へアップロードする様に記載されていますが、他のサイトではどこでも良さそうですね。
説明が面倒なので、/home/で作業を進めます。

その他にもGitを使う方法やwgetを使う方法なども記載されています。
今回は、面倒な事をする気はないので、上記の方法で進めます。

インストール

これで準備は完了したようなので、インストール作業を進めます。

まず、移行ツールに実行権限を与えます。

そして実行しますが。。。。長い。。。

こんな感じで成功したようです。

最後にリブートするように指示されています。
その前に、、、、ちょっとだけ確認してみます。

当然ですが、既に、/etc/centos-releaseは存在せず、rocky-releaseに置き換わっていますね。
ということで、リブートします。

これで終わりです。

最後に

今回移行を行った環境は比較的シンプルな構成でした。
ダウンロードされたモジュールの総容量は約1.3GB程度と予想されます。
実際に掛かった時間は計測していませんが、体感で1時間程度ではないでしょうか?

アップデートと更新に係る時間がほとんどでしたら、既に最新の状態にされていた環境であれば30分程度で移行が完了するのではないかと思います。

作業自体は、非常にシンプルです。

作業後に少しだけ触ってみましたが、変わった印象も違和感もありませんでした。

MySQL/MariaDBを/rootや/home以下へ設定している環境をアップデートした時にMySQL/MariaDBが起動出来なくなってしまう!?

私の環境で発生した問題です。
CentOS 8.x/Rocky Linux 8.xにMySQL/MariaDBをインストールし、データベースを/home以下へ保存していました。
容量とパーティションの関係でそうなったのですが、これがOS/MySQL/MariaDBアップデート時に悲劇を招きました。

無事アップデートを終えたかに見えた状態でOSを再起動してみると、データベースが起動していない!?
試しにサービスの起動を以下のコマンドで試みるも、起動してくれない。

/etc/my.cnf.d/に変更が行われているのではないかと疑ってみたが、どうやら関係はない。

結果はコレだった!!

/usr/lib/systemd/system/mariadb.service
もしくは
/usr/lib/systemd/system/mysql.service

この中で、バージョン情報などが変更されているのだが、以下の設定がデフォルトに戻っていた。

この設定は、/rootや/home以下にデータベースを保存する設定をした際に変更した経緯がある。
アップデートによりファイルが更新されて、デフォルトに戻されていたのだ!

設定のバックアップファイルなどは残っておらず、結論として当該ファイルの内容は完全に初期化され、過去の設定は残っていなかった。

設定を以下の様に変更した。

その後、以下のコマンドで設定を再読込みしサービスを起動したら正常に起動することが出来た。

この問題をどう回避するべきなのだろう?
通常は発生しないがバグなのだろうか?仕様なのだろうか?
アップデート前に、sosreportなどで設定をバックアップしておくべきなのだろうか?
でも、バックアップを確認するのも大変ですよね。困った事象です。
お気をつけ下さい。。。。
と言いつつ、ここを見ている人は、既に嵌った人ですよね。
ご愁傷さまでしたm(__)m

VMware Workstation Pro アンインストール

ちょっと不具合がありまして、VMware Workstation Proをアンインストールしようとした時のメモです。

こちらの記事を参考にしました。

https://docs.vmware.com/jp/VMware-Workstation-Player-for-Linux/16.0/com.vmware.player.linux.using.doc/GUID-0F7D2C5C-2B5C-4857-9166-A0B3B0C72B5F.html

こちらの記事では、VMware Workstation Playerのアンインストールコマンドがあり、プロダクトを指定する必要があることが判りました。

でも、正式なプロダクト名が分からないので、ヘルプを表示します。

プロダクトリストを出すオプションを指定してコマンドを実行します。

赤で示した部分がプロダクト名なので、以下のコマンドでアンインストールを行います。
バックアップとかは事前に確認してくださいね。

ということで完了です。

CentOS 8 でdnfが使えなくなった!?

この内容は、2021年12月末に行われたCentOS 8のEOLによる影響が出たために、その対応について記しています。
その他のdnf障害とはことなる対応となりますので、ご注意ください。

現象について

2022年2月に入ってから、CentOS 8.xでdnfコマンドを利用しようとしたところ、以下のメッセージが表示されました。

数日前には正常に動いていたのですが、突然使えなくなっていました。
キャッシュをクリアして。。。とか試みたのですが改善されません。

調べてみると、CentOS 8のEOLが影響しているっぽい。
A)の内容にも記載されていますが、EOLに伴ってサイトが退避されたようです。

A) https://forums.centos.org/viewtopic.php?f=54&t=78708
B) https://stackoverflow.com/questions/70930615/no-urls-in-mirrorlist-with-yum-on-centos-due-to-appstream

CentOS Streamへの移行まで書き記されていて、ドキっとします。
私はRocky LinuxやAlma Linuxへの移行は考えていますが、 CentOS Streamへの移行は考えていないので、必要なところだけ抜き出したメモをここに記そうと考えました。

対策

対策としては、リポジトリの設定を書き換える必要があることが判明しました。

以下のコマンドを実行して、リポジトリの設定を書き換えます。

その後、dnf listコマンドは正常に動作できるようになり、updateも問題なく行うことができました。

暫くは、EOLの影響がどこまで広がるのか心配です。

早めにRocky やAlmaへ移行しようと思います。