「QGIS」カテゴリーアーカイブ

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環境でやる何倍も速く実行できます。

 

 

 

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を参考に新たなファイルを作成することで独自にタイルレイヤを追加することが可能です。

 

以上

 

 

QGISインストール(OSGeo4W)

 

QGISインストールしておいて〜と言おうと思って、QGISのインストール方法を探そうとしたら、古いバージョンのインストール方法ばかりが検索上位に出てきて・・・(TT)
更に、OSGeo4Wを使ったインストール方法はなかなか出て来ないみたい。

ということで、誰かにお願いする時様に自分のブログに残しておかなければ・・・と言うよりも、なぜ今まで書いてなかったんだ!?ということもあり、今から記録に残します。

対象は
Windows 64bit環境。(Windows Serverへインストールさせるつもり) 現在は、2016-02-04時点での方法になります。

1.インストール準備

まずは、インストールする為の準備です。
下記のURLをブラウザで開いて、対象のインストーラーをダウンロードします。

https://trac.osgeo.org/osgeo4w/wiki/OSGeo4W_jp

img_579eee687c6f6

 

面倒だったら、一応、以下のURLから直接ダウンロードできるはず。

64ビット版はこちら→http://download.osgeo.org/osgeo4w/osgeo4w-setup-x86_64.exe

32ビット版はこちら→http://download.osgeo.org/osgeo4w/osgeo4w-setup-x86.exe

2.インストール開始

インストーラーを起動する。

 

img_56b2d0dcd7b37

 

文字が欠けているかも知れませんが、「エクスプレス デスクトップインストール」(デフォルト)を選択して「次へ」でインストール作業を進めます。

img_56b2d15863b5c

QGISを使いたいだけなら、「QGIS」だけチェックすれば良いと思うんだけど、GDALとかやっぱ使うので、デフォルトのままインストールしちゃいますw

後は、画面の指示に従って操作して待つだけ。

インストール完了しているはずなので、

img_56b2d3fe2c5c6

QGIS Desktopを起動するとQGISが起動します。

インストール直後はプラグインなどが入っていない状態なのでもっとシンプルな画面になっていると思いますが、こんな感じの画面が起動します。

img_56b2d45e17591

<サイト内参考情報>
QGISに地理院地図を追加する。
地域メッシュをQGISで作成する。

 

地域メッシュをQGISで作成する。

地域メッシュをダウンロードして使おうと思ったのですが、1/8地域メッシュが見つからなかったので、作成することにしました。

一から作ると意外と面倒なのですが、QGIS用に作ってくれている方が居たみたいです。

QGISのプラグインに「JapanMesh」なるプラグインを発見!!早速入れていました。

使い方はReadme.txtを見ると書いてあります。

まず、1次メッシュを作成します。

次に、2次メッシュを作りたい場所の1次メッシュを選択して、2次メッシュを作成します。

後は、この繰り返しです。

欲しかったメッシュは1/8メッシュだったのですが、求めていたコード体系と異なっていたので、変換ロジックを作って変換しました。

この時行ったロジックでは以下のコード体系(3次メッシュ以降)を変換しています。

元)

333 334 343 344 433 434 443 444
331 332 341 342 431 432 431 432
313 314 323 324 413 414 423 424
311 312 321 322 411 412 421 422
133 134 143 144 233 234 243 244
131 132 141 142 231 232 241 242
113 114 123 124 213 214 223 224
111 112 121 122 211 212 221 222

 

変換後)

0700 0701 0702 0703 0704 0705 0706 0707
0600 0601 0602 0603 0604 0605 0606 0607
0500 0501 0502 0503 0504 0505 0506 0507
0400 0401 0402 0403 0404 0405 0406 0407
0300 0301 0302 0303 0304 0305 0306 0307
0200 0201 0202 0203 0204 0205 0206 0207
0100 0101 0102 0103 0104 0105 0106 0107
0000 0001 0002 0003 0004 0005 0006 0007

 

変換に用いたロジックは以下です。

floor("m6code"/1000)*10000+(floor((("m6code"%1000)-100)/200)*2^2+floor((("m6code"%100)-10)/20)*2+floor((("m6code"%10)-1)/2))*100+(floor((("m6code"%1000)-100)/100)%2)*2^2+(floor((("m6code"%100)-10)/10)%2)*2+(floor((("m6code"%10)-1))%2)

それと、このプラグインはデフォルトで2000メッシュまでしかサポートしていません。
JapanMesh.pyの中に「2000」と記述されているので、ちょっと増やしてあげると便利です。

変更するプログラムファイルの保管場所を説明します。

対象ファイル:C:\Users\<ユーザ名>\.qgis2\python\plugins\JapanMesh\JapanMesh.py

ファイルの保管場所は、「プラグイン」→「プラグインの管理とインストール」→「JapanMesh」にインストールされているバージョンと保存場所が記載されています。
該当するフォルダーを開いて対象ファイルを変更すればOKです。

ちなみに、リミッターが2000メッシュまでとされているのですが、拡張して50mメッシュの4.8万程度を10mメッシュに分割したところ、すごく重たかったです。1時間くらい掛かるかな?根気よく待つべし!
大量のメッシュを作成したい場合には、細分化して実行するか、もしくは他の方法を考えた方が良いかも知れません。
お手軽ではありますが、時間が掛かります。

RT MapServer Exporterを使いたい!

MapServerのmapファイルを作成するのに、QGISを使っていると、mapファイルを勝手に作ってくれるツールが欲しくなる。
でも、単純にプラグインをインストールして「RT MapServer Exporter」を起動しようとすると、以下の様なエラーに出くわす(^^ゞ
ちなみに、今回使用しているQGISは2.4の64Bit版です。

Traceback (most recent call last):
File
“C:\Users\xsc/.qgis2/python/plugins\rt_mapserver_exporter\plugin.py”, line 65, in run
from .mapfileexportdlg import MapfileExportDlg
File “E:/osgis/QGIS/apps/qgis/./python\qgis\utils.py”, line 453, in _import
<つづく>

なんでやねん!?と色々と調べるも・・・
結局答えはここに書かれていた。
https://plugins.qgis.org/plugins/rt_mapserver_exporter/
<以下抜粋>
It needs python-mapscript istalled in your machine. This is available as a Debian (therefore Ubuntu) package, and as a part of OSGeo4W on Windows.

ここでは、python-mapscriptが必要で、インストールしてあることが必要らしい。
なんじゃそりゃ?
ということで、プラグインにそんなんあるんかな?と探してみるも存在しない。
OSGeo4Wでインストールしていたので、Setupを起動して・・・

StartUp
StartUp

アドバンスインストールを行う。

RT_MapServerExp2

後は適当にデフォルトの設定を進める。
もちろん、インターネット接続する。

 

 

RT_MapServerExp3

フォルダー名は、インストール時の設定がそのまま反映されているはず。

RT_MapServerExp4

RT_MapServerExp5 RT_MapServerExp6

もくもくと進めると、時折、以下の画面で固まる時があった。

サーバーとの接続が上手く行かない時が頻繁にあるようだ?
私のネットワーク設定が影響しているのか不明であるが・・・そんなもんなのかな?とも思える。誰かコメントして頂けるとありがたい。

RT_MapServerExp7

 

10秒程待っても進まないときは、多分待っても無駄なので、キャンセルして最初からやり直した方が早い。
私の場合は、数回チャレンジすることもしばしばである。

 

RT_MapServerExp7

 

で、肝の部分です。
上記の3項目にチェックを入れて、インストールの対象にする。
これで、後はひたすら「次へ」を押して進めればインストールしてくれる。
で、お気付きの方もいらっしゃると思いますが・・・・
python-mapscriptではなくmapscript-python。。。になってるんですよね。Linuxだと正しい名前なのかな?とWindowsだからなのかは知らん!!

ということで、これを入れてから、プラグインの追加を行えば上手く動作させることが出来た。

ちなみみ、使い方については、解りません(^^ゞ

プラグインを追加すると、Web(W)というメニューが追加されるので、RT MapServer Exporter」を起動すると、以下の画面が表示されます。

RT_MapServerExp9

ここからは、誰かがきちんと書いてくれているサイトを探した方が良いと思うけど・・・

Map file Mapファイルの保存先(多分日本語はやめた方が良い)
Name 多分レイヤ名になってくるのかな?
Image type Webで使用するので、デフォルトpngでお好みに応じて。
Width / Height 私の場合は、Web使用するのであまり意味はないと思う。
Shape path Shapeファイルのフルパスを入力。
後で、Mapファイルが出来てから、相対パスに変更した方が良いと思います。
Online resource URL これっているのか?と思いますが。。。。そのまんまで(^^ゞ
Image path 出力先
Image URL URLでの出力先
Temporary path テンポラリ領域なのだが。。。必要なのかな?
External graphic regexp  解らん!

取りあえず、適当に書いて、Mapファイルを出力して中身を良くて見てみると、いっぱいダメな部分があるので、適当に書き換える。

感覚としては、Layerのセクションだけは、QGISの設定を反映してくれているみたいなので使えるけど、他は適当に使えるベースの様な物を準備しておいて、切り貼りする方が良さそうな気がした。

誰か詳しく説明してくれている場所があったら教えてくださいm(__)m
って、サイト立ち上げたばかりで、だれも見てくれていないだろうに・・・・