QTiles/QMetaTiles Pluginで作成したタイル画像の要らない部分を削除する

QGISでタイル作成したタイル画像で不要なタイル画像を削除する方法をまとめました。
透過のみのタイル画像というよりも、1カラーだけのタイル画像を削除する方法になっています。
厳密に透過画像のみを削除したい場合には、identifyの出力内容を調整する必要があります。

QGISで簡単にタイル画像を作成しようと思って、QTilesやQMetaTilesプラグインでタイルを作成したまでは良かった。

おぉ~!タイル画像が出来てるではないか!!

と、意気揚々で「次はこれ作ってぇ~!」とかお願いしていたら・・・・
やたら時間は掛かるんだけどねw

で、しばらくお願いして放置していたら・・・

「なんかエラーが出て、出来ません。」との連絡が。

なんで?

見てみると、ディスクがパンパン(爆)

よく見ると、タイル画像が重すぎて一杯やないですか!

でも部分的に削除すると言っても・・・・と悩みながらも、透過しているだけのタイル画像は必要ないわなw

どうやって判定しようかなぁ?

ちょうど、そのWindowsマシンには下記のツールが入っていた。

  • ImageMagick
    Linuxで画像弄るなら必須アイテム。Windows版も当然ある。
  • Gow
    Linux風のコマンドを使えるようにするツール。

で、使ったのがこんなコマンド

identify

今回扱った画像には以下の条件がある。

①PNG画像
②1つのタイル画像に含まれる色は、対象物があった場合は2色以上になる。
③対象物が無い場合は透過のみとなるため、1色のみになる。

上記を整理すると、「単色のpng画像は不要」ということになる。

で、どうやってそのリストを作って削除するか・・・・

まずはWindowsでやってみた。
以下のバッチファイルを準備する。

Gowを入れると、xargsやsedなどLinux標準のコマンド類が使える様になります。sedのみを使いました。
xargsを使って渡せば簡単じゃないか!と思われますが、これがWindows側の「|(パイプ)」とxargsの相性が悪く、受け渡す標準出力を溜めこんでします様です。
その為、大量のファイルを扱う場合には、ファイルのパスがバッファに積まてしまいエラーが発生するという問題を解決出来ませんでした。

使い方はこんな感じです。

タイル画像のあるフォルダーの根元に移動してから、この以下のコマンドを実行します。

①で削除対象ファイルの削除用コマンドをrun_del.batファイルへ書き出します。
それを②で実行する。

それだけですw

せっかくここまで読んで頂いたのに済みませんが、時間にメッチャ余裕のある方や、タイルファイル数がそれ程多くない方はこれでも全然OKです。
でも、タイル数が数十万とか数百万とかになってくると、Windowsのコマンドプロンプトは使い物になりません。
Power Shellを使え?とか言わないでください。信用してませんからw

で、仕方が無いのでLinuxにファイルをコピーしてから同じことをLinux上で実施して、結果をダウンロードしてくることにしました。

下手すりゃ、ファイル共有掛けて実行してもそこそこLinuxの方が速いかも知れないのですが・・・・

確実に速かったのでこれにした。

まずは、全てのファイルを圧縮しようと思うのですが、7zを使いました。

とは言え、数百万ファイルのファイルを圧縮するには相当な時間が掛かりますし、纏まったファイルの容量もデカくて取り扱いが不便です。
こまめに分けました。

それぞれのフォルダー毎に圧縮ファイルを作成します。

これでフォルダー単位の圧縮ファイルが作成されます。

圧縮ファイルをLinuxに転送します。

転送したファイルを今度はLinux上で解凍します。

次に、以下のコマンドで透過(1つのカラーだけ)のファイルを削除します。

Windows環境でやる何倍も速く実行できます。

 

 

 

OpenSceneGraphのコンパイル中にエラーが発生した。

エラー内容は以下の通り

調べてみると、どうも/usr/include/jasper/jas_math.hに問題があるらしい。

jas_math.hファイルを一部修正することで解決するらしい。

修正内容は以下の通り。

89行目あたりの以下の部分を修正する。

こちらが修正前

こちらが修正後

 

これでコンパイルが通るようになった。

焦った〜(^^;

OpenSceneGraph インストールのyumまとめ!

OpenSceneGraphのインストールで各種パッケージをインストールするのは大変です。
対象OSはCentOS 7です。

一つ一つパッケージを確認しながらインストールしていると、何時間掛かることでしょう?

ということで、私がインストールしたyumコマンドを以下に記録しておきます。

概ね必要そうなライブラリは全てインストールしたつもりです。

Qtやgccなんかは既にインストールしていることを前提としております。

epelリポジトリもインストールしていることを前提としています。

これで大分楽になるはず!

足りないライブラリとかパッケージがあれば、どなたかコメントしてください。

このコマンドを書き換えて楽になりたいです(^^;

インストールの詳細は以前に書いた下記の内容をご確認下さい。

OpenSceneGraphをLinuxへインストールする。

OpenSceneGraphをLinuxへインストールする。(2回目)

 

 

Apple Pencilが繋がらない!

おいおい!Apple Pencilが繋がらない。

iPad ProのLightningポートへ差し込んで・・・・アレ?

じゃあ、充電器から直接充電して再度iPad ProのLightningポートへ差し込んでみるも。。。反応なし。

iPad Proを再起動。
BluetoothもOFF→ONしてみるも反応なし。
航空機モードにして解除してみたが、これもダメ。

もう一度、iPad Proを再起動してもダメだダメだダメだ!!!!!

修理か?修理か?修理か?買い替えか?

どっちが悪い?iPad Pro?Apple Pencil?

判断付かない(ーー;)

ネットワークのリセット・・・面倒やなぁ~
お店に持っていく前の最後の手段やな。。。

「設定」→「一般」→「リセット」→「ネットワーク設定をリセット」
「工場出荷状態に戻します」の様なメッセージが出ても構わずリセット!
心が痛むも背に腹は代えられぬ(-_-メ)

iPad ProにApple Pencilを接続。。。やっぱりダメ?
「設定」→「Bluetooth」を見ると、「自分のデバイス」に「Apple Pencil」がるやないかい!?

後は、そいつをタップして、もう一度iPad Proに接続して。。。

繋がった!!!!!

\(^o^)/

当然、WiFi接続の設定はリセットされているので、再度設定を行うWPA接続を選択して接続する。(他だと安定しない時があるので)

これで完了。

バグやなw

CentOS 7におけるrsyslogの設定

CentOS 7をサーバとして、rsyslogでルータのログを残したいと思います。

/etc/sysconfig/rsyslogを以下の様に編集しました。

続いて、/etc/rsyslog.confを以下の様に編集しました。

15-16行目:UDPでの受信を有効にするために、コメントを外します。
54-55行目:/evar/log/messagesへそのままログが書き込まれない様に設定する。
*.info;mail.none;authpriv.none;cron.none;local1.none /var/log/messages
この行の「local1.none」が影響するのだが、ファシリティの値が何になっているのか確認する必要がある。
ファシリティが解っていないと、情報を指定できない。
今回使用したルータはBuffaloのBHR-4GRVだったので、この値になっている。(http://buffalo.jp/php/lqa.php?id=BUF6516)
76-77行目:ログの出力先を設定する。

取りあえず、rsyslogの設定は完了したので、設定を有効にするためにrsyslogを再起動する。

※なぜか、「rsyslogd」ではなく「rsyslog」(最後に「d」が付かない)であることに注意!
ホンマに再起動しているんか?という感じで返ってくるので、心配な方はrebootしちゃってくださいw

ここまでで、rsyslogの設定は完了なのですが、届かない・・・・(TT)

なんでだろう?

ということで、ファイアウォールで止められていました(^^ゞ
/etc/sysconfig/iptablesに以下の1行を追加してください。

その後、iptablesを再起動します。

これで、ログが残る様になったはずです。

でも。。。。このままだと、ログが延々と同じファイルに書き込まれるのですわ( ;∀;)

ログのローテーションを行うには、、、、多分これで行けるはず!
/etc/logrotate.d/syslogに以下の1行を適当に追加!

どうや!?

しばらくしたら結果が解るだろう?

ということで、後は皆さん信じて待つのみです!

解ってきたPVの上がり方!

このブログを書き始めて、少しづつPVが上がる傾向が解って来た。
#今更ですね。
全く気にしていなかったかというと嘘になりますが、PVが増えると少しは見てくれている人が増えているんだなぁ~と、少しはヤル気に繋がります。

このブログは技術的なメモを記録しているだけで、技術的に特化したトピックスに注力したブログではなく、ある意味では書き散らかしているという感があるので、参考にならないかもしれませんが、概ね4ヶ月後ぐらいに書いたページを閲覧してくれる人が増える傾向にあります。

つまり、書いた直後からPVが増えることは無く、検索エンジンに登録されて閲覧数が増えてくるのは3ヶ月後くらいからという感じになります。

内容によっては鳴かず飛ばずもありますが、概ねその後成長し続けるか衰退するかは5ヶ月目以降の推移に傾向が現れます。

ブログを下記始めの頃は検索エンジンで検索出来るようになったら、いきなり増えてくると思ってしまうかも知れませんが、実際は数か月後に現象が現れるということを覚えておくと良いでしょう。

逆に、私の場合は繁忙期が3月頃に集中するため、2~4頃に記事を書かなくなった経緯がありました。
その反動は、6月頃から現象が現れ始めました。
現在8月の段階で著しい落ち込みが顕在化しています。

コンスタントに記事を書き続けることが、PV安定化の道ですね。
増やすためと考えるよりも、安定化させるために記事を書いていると、少しづつPVが増えることになるのではないでしょうか?

 

Raspberry Pi 3 & CentOS 7でyum updateが出来る様に設定する!

Raspberry Pi 3にCentOSを入れたまでは良かったのですが、yumのアップデートが出来ない!

<<<<<<前回までの記事>>>>>>
Raspberry Pi 3にCentOS 7を入れてみた時にやったこと
Raspberry Pi 3SDメモリの空きを認識させる。
<<<<<<ここまで>>>>>>

アップデートが出来ないと、パッケージをインストールしたりする時に面倒が起こる可能性がありますよね。
それに、セキュリティアップデートが出来ないのも困ってしまいます。
「ラズパイだから攻撃されて壊れたっていいや!?」という訳にも行きません。
ネットワークに侵入を許したことになりますから、何をされるか分かったもんじゃない(-_-メ)

そもそも、バグも修正されないのですから、yum updateを必須だと思っています。

デフォルト状態で何故アップデート出来ないのか?それは、何らかの理由でリンク切れが発生しているためだった様です。

ダウンロードしてインストールを行ったOSイメージに含まれている設定では、リンク先が上手く設定出来ていない様です。多分、イメージを作ったとに変更なったりしたのかも知れませんね。

ということで、実は設定を変更するだけなのです。

対象ファイルを開きます。

CentOS-armhfp-kernel.repoの内容を以下の様に変更します。

この状態で以下のコマンドを実行してみてください。
成功している場合には、少し時間が掛かると思います。
ネット環境にも依りますが、30分以上掛かることを覚悟してください。

パッケージのアップデートが開始されます。

この状態でアップデートが出来ない様でしたら、もう一つのファイルを編集します。

/etc/yum.repo.d/kernel.repoを編集します。

これで再度yum updateコマンドを実行してみてください。

私はこれで上手く動作しました。

ネット上では何人かの方が記載されているので、書かれた時に成功しているという好意的解釈をすると、途中で変更が幾度か行われているのかも知れません。

もし、上手く出来ないという時は、コメント欄に質問してみてください。
答えられれば回答させて頂きたいと思います。

これで一通りの設定が完了しました。
簡単なサーバを構築する下準備までになりますが、ここからはどう使うかによって設定が変わってくると思いますが、ここまでの設定は基本的に共通だと思います。

ここで参考情報です。

1)Raspberry Pi 3用のOSが入ったSDカードが販売されています。
2)出来上がったSDカードはDD for Windowsでパソコン側へイメージファイルとしてバックアップを取ることが出来ます。
3)ご要望がありましたら、ここまでの環境設定を行ったイメージフィルを期間限定でご提供しようと思います。ご要望はコメント欄に記載してください。

 

Raspberry Pi 3 SDメモリの空きを認識させる。

Raspberry Pi 3にCentOSをインストールしたのですが、SDメモリの開いている容量が使えない状態にあります。

先の記事(「Raspberry Pi 3にCentOS 7を入れてみた時にやったこと」)でCentOSの設定を進めていることを前提としています。

SDメモリは32GBのものを準備しています。

それでは拡張設定を行います。

 

こんな感じで、パーティションのサイズを拡張しました。
設定は完了したのですが、最後のメッセージにあります通りfstabを更新する必要があります。

面倒なので、rebootします。

ログインし直して、df -hコマンドで確認してみてください。

/dev/rootのサイズが29Gになっています。
他でも使われているのでこんなもんで成功していると思ってよいでしょう。

ということで、パーティションの拡張は完了です。

Raspberry Pi 3の設定はまだ途中です。
次回は、yum updateが出来る様にしてみようと思います。

次回は、「Raspberry Pi 3 & CentOS 7でyum updateが出来る様に設定する!」です。

 

QGISに地理院地図を追加する。

QGISで地理院地図が表示できるようにしたい!

業務で使用する地図は地理院地図がメインになっている。

そこでQGIS上でも地理院地図と整合性を取る為に、背景地図として地理院地図を表示させたいと思っています。

ねっとで調べてみると、TileLayer Pluginの情報が入手できた。

ということで、TileLayer Pluginをインストールする。
1)QGISのメニューから「プラグイン」→「「プラグインの管理とインストール」画面を表示

2)TileLayer Pluginを選択して、右下の「プラグインをインストール」をすればインストールが開始される。

#ここまでは至って簡単な操作で済む。

3)インストールの確認
QGISのメニューから「Web」→「タイルレイヤプラグイン」→「タイルレイヤを追加する」をクリックする。

こんな感じで表示されていればインストールは正常に行われています。

4)タイル情報の入手
以下のサイトからタイルの情報を入手します。

https://gist.github.com/minorua/7654132/download#

右側に表示されている「Download Gist」からファイルをダウンロードします。

解凍すると以下のファイルがあります。

GSIMaps.tsv
GSIMapsDisaster.tsv

この2本のファイルを適当なフォルダーへコピーします。
デフォルトの保存先に保存したり、プラグインの入っているフォルダーへコピーすると、プラグインを再インストールした時にこれらのファイルが消えてしまいます。
それを避けるためにも、適当なフォルダーを作成して保存しておく方が良いと思います。

ということで、今回は以下のフォルダーへコピーしました。

C:\Tools\TileLayerPlugin_AddLayer

5)タイルレイヤを追加する。

改めて、QGISのメニューから「Web」→「タイルレイヤプラグイン」→「タイルレイヤを追加する」をクリックし、以下の画面を表示します。

 左下の設定ボタンをクリックすると「タイルレイヤプラグイン設定」画面が表示されます。

先程保存したパスを指定します。

C:\Tools\TileLayerPlugin_AddLayer

おぉ〜!表示された!!

試しに「標準地図」を表示してみると。。。。あれ?表示されない????

マウスのホイールボタンをグリグリ・・・ズームレベルを変えてみると、表示されました。

 初期表示はなんか少しアクションが必要な様です。

また、タイルレイヤによってはサポートされているズームレベルが限定されているので、エラーが表示される場合があります。

重ね合わせたい適当なレイヤを表示させた後で、このツールで地理院地図を表示させてみると、すんなり表示出来たりします。

以下は、一時メッシュを表示させた状態です。

この状態で先程と同じように、「標準地図」を表示させてみると、

すんなり表示されました。レイヤの順番を入れ替えて

タイルのスタイル変更で透過率を適当に入れて、ラベルを表示させて、ズームアップしてみると・・・・

こんな感じに。

白地図に重ねてみるとこんな感じですね。

自前で作成したタイル画像や、今回追加した地理院地図以外のタイルレイヤを追加したい場合には、ダウンロードしたGSIMaps.tsvやGSIMapsDisaster.tsvを参考に新たなファイルを作成することで独自にタイルレイヤを追加することが可能です。

 

以上

 

 

Raspberry Pi 3にCentOS 7を入れてみた時にやったこと

Raspberry Pi 3 Model Bをamazonで購入しました。
https://www.amazon.co.jp/gp/product/B01CSFZ4JG/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1

使える様になるまでの手順をまとめておきたいと思います。

準備

 

製品はケースに搭載された状態で送られてきます。
プライム会員だったので、夕方ぐらいに注文して翌日午前中には届きました(^^♪

必要な物を確認してみました。
①USBキーボード
②USBマウス
③HDMIケーブル
④HDMI対応ディスプレイ
⑤電源ケーブル(Micro USB Bコネクタ)
⑥電源 DC 5V 2A以上で良さそう。
2.5Aと書かれている日本語サイトもあったのですが、下記に記した公式ホームページを見る限り2Aになっていました。
ご家庭で余ったACアダプタを探せば一つぐらいは見つかるのではないかと思いますw
⑦Micro SDカード(8GB以上)
古いガラケーのMicro SDメモリを・・・と思ったのですが、容量が少なすぎました(^^ゞ

詳しくは公式ホームページを参照してみてください。
https://www.raspberrypi.org/learning/hardware-guide/

私は結局のところ⑦のMicro SDカードを購入しました。
8GBだと心許無いので16GBの製品にしました。

ディスプレイは取りあえずテレビでも大丈夫!一時的に使用するなら、パソコンのディスプレイでも良いと思います。

ハードウェアの準備はこれで終わりです。

次に準備したSDカードへOSをインストールしてあげる必要があります。
OSをインストールするには、Windows/Linux/Macなどが入ったパソコンが必要となります。
また、Micro SDカードを扱える環境が必要です。

OSとしてNOOBSやRASPBIANを用いるのが一般的なのだそうです。
でも、色々と理由がありまして、CentOSを入れることにしました。

CentOS 7をインストールしましたが、一応は正常に起動しています。
すこぶる速く起動してくれます。
小規模なWebサーバレベルであれば、十分なスペックではないかと思います。
一度評価してみようと思います。

インストール方法

CentOS 7をインストールします。

Raspberry PiにOSをインストールするには、まずパソコンなどでMicro SDメモリ(以下「SDメモリ」と称す)へOSを書き込んであげる必要があります。
SDメモリへOSを書き込むためには、「DD for Windows」というツールを使用します。
それと当然ですが、書き込むOS本体もダウンロードします。

こちらのサイトからDD for Windowsをダウンロードします。
http://www.si-linux.co.jp/techinfo/index.php?DD%20for%20Windows#s74c46f6

DD for Windows自体はインストールする必要はなく、適当なフォルダーで解凍したらそのまま使えます。ただし、管理者モードで起動する必要があります。(後でも書きますので、今はダウンロードしたファイルを適当なフォルダーへ解凍するまでにしてください。)

次に、CentOS 7の本体をダウンロードします。
こちらのサイトからダウンロードします。
https://buildlogs.centos.org/centos/7/isos/armhfp/

以下のファイルをダウンロードしました。
CentOS-Userland-7-armv7hl-Minimal-1611-test-RaspberryPi3.img.xz
(ここから直接ダウンロードすることも可能ですが、最新版が出ているかも知れませんので、サイトで確認してください。)

ダウンロードした.xzファイルは7zipを使えば簡単に解凍することが出来ます。
他の解凍ツールは試していません。

ここまで準備が出来たら、パソコンにSDメモリを差し込みます!

ここからが本番です。

DD for Windowsを右クリック→「管理者として実行」を選択し起動します。

対象ディスクとしてSDメモリを指定します。
「ファイル選択」をクリックして、先程ダウンロードしたCentOSの.imgファイルを指定します。
「ファイル選択」で表示される画面では、「*.ddi」ファイルしかデフォルトでは表示してくれない状態になっています。
「All files(*.*)」にして対象ファイルを指定してください。

後は、「書込」をクリックすればSDメモリへOSが書き込まれます。

私は、16GBと32GBのSDメモリへ実装してみたのですが、書き込むファイルサイズに対してSDメモリの容量が多いとメッセージが表示されますが構わず続行します。

書き込みが完了すると、SDメモリの空き部分をドライブと認識しようとするメッセージがWindows側で表示されますが、ドライブとは認識させずに全て「いいえ」で逃げてください。
これを「はい」で対応すると、せっかく書き込んだOSがまともに起動しない状態が発生する場合がある様です。

SDメモリをWindowsからUSBメモリを抜く手順と同じく安全に取り出して下さい。

取り出したSDメモリをraspberry Pi 3に差し込みます。

キーボードやマウス(最初は要らない)とHDMIケーブルでディスプレイを接続します。

最後にマイクロUSBで電源供給を行えば起動します。

起動した瞬間は、なんとなくごちゃごちゃしていて、ログインプロンプトが解り難いかも知れません。
「Enter」キーを押して出し直しても構いませんので、以下のIDとパスワードでログインします。

ID:root
パスワード:centos

以上でインストールが出来ました。

・・・・・・でもこれだけではまだインストールしただけです。
ネットワークもDHCPで自動割当てされる状態です。
SDメモリの空き部分が使える状態にありません。
yum updateも出来ません。
Webサーバにするなら、Apacheもインストールされていません。
Apacheインストールすると、ファイアウォールが影響して使えません。
だらだら・・・・

ということで、これらの問題解決をこれから行います。
やることがそれなりに多いので、基本的な設定方法は以下に記し、それ以外の項目は別記事で記載します。

基本設定をゴニョゴニョ

キーボード設定

キーボードの初期設定を行います。
CentOS 7を入れた状態はミニマムインストールと同じような状態にあると思われます。
キーボードの設定も十分に行われていません。
そのままでも違和感なく使えているのですが、念のため設定を行います。

こんな感じです。

ネットワーク設定

デフォルト状態では、DHCPで動的にIPアドレスが振られる設定になっています。
クライアント端末みたいな感じで使う場合には問題は無いのですが、固定IPしたいと思います。

固定IPにするには、設定ファイルを変更して・・・・というのは面倒です。
かといって、今の段階ではデスクトップ環境も入っておらず、GUIで設定することも出来ないのでは?という状況。

でも大丈夫!

nmtuiというツールを使います。
既に機能は備わっていますので、コマンドラインからnmtuiを実行します。

コマンドを実行するとこんな画面が起動します。

「接続の編集」を選択します。

既にeth0が存在します。「eth0」を選択してTABキーを使って「編集」まで移動したら、Enterを押して編集モードへ移行します。

IPv4が「自動」になっているので、「手動」に変更して編集を続けます。

「アドレス」には、xxx.xxx.xxx.xxx/24の様な形式で、IPアドレスとサブネットマスクを同時に設定します。
例えば、192.168.0.123/24と設定した場合、IPアドレス=192.168.0.123でサブネットマスクは255.255.255.0ということになります。

ゲートウェイとDNSにもアドレスを設定します。

「OK」を選択して、後は画面を見ながら終了します。

最後に設定を更新するためネットワークマネージャを以下のコマンドを実行して再起動します。

ifconfig -aコマンドなどを使用して、eth0に指定したアドレスが正しく設定されているか確認してください。

ダメだったら、一度再起動してみると良いと思います。

ここまで完了しましたら、一度外部のパソコンなどからTeraTermなどでSSHを使用した接続を行ってみると良いでしょう。
接続出来ない場合には何らかの設定に間違いがあると思います。
ネットワーク管理者などと相談して、確認を行ってみてください。
また、詳しい状況などコメント欄に記載して頂ければ、フォローできるかも知れませんので、お気軽にお声掛けください。
ただ、リアルタイムでの回答には対応しておりませんのでご了承ください。

SDメモリの拡張

ここまでの状態では、SDメモリの空き容量が使えない状態にあります。
パーティションを拡張して空いている領域も使える様にします。

実際の方法については、以下の記事に記載しましたのでそちらを参照してください。

Raspberry Pi 3SDメモリの空きを認識させる。