Monthly Archives: 7月 2015

QGIS #016 – レイヤの地物数を取得するスクリプト

 

QGISで、レイヤの地物数を取得するスクリプトは下記のように記述します。

 

 

実行すると選択されているレイヤの地物数がコンソールに表示されます。

QGIS_016_01

 

地物数を取得の場合:

 
 

  • 参考文献

QGIS

 

QGIS #015 – レイヤの編集を保存するスクリプト

 

QGISで、レイヤの編集を保存するスクリプトは下記のように記述します。

 

 

実行すると1番目のレイヤの「sample01」の編集を保存します。

QGIS_015_01

 

レイヤ編集を保存する:

 
 

  • 参考文献

QGIS

 

Soft #007 – SpatiaLite

 

今日は、サーバとしてではなくアプリケーションに組み込んで利用される軽量のデータベース「SQLite」を空間データベースとして扱う拡張機能の「SpatiaLite」を紹介したいと思います。

今までSpatiaLiteは名前を知っている程度でどんなものなのか知りませんでした。サーバーにインストールしなくていい手軽さに興味があって調べてみました。

 

まずSpatiaLiteをダウンロードをします。「MS Windows binaries」の「current stable version」から最新版をダウンロードします。

SpatiaLite

Soft_007_01

 

今回は64bitを選択します。その中の「spatialite_gui-4.3.0-win-amd64.7z」をダウンロードします。

Soft_007_02

 

ダウンロードするファイルの、「7z」という拡張子の圧縮ファイルは特殊なので普通の解凍ソフトでは対応していない場合があります。その場合は下記の「7-Zip」を利用して解凍します。

7-Zip

Soft_007_03

 

解凍すると「spatialite_gui.exe」ができるので実行します。exeを実行なのでインストールは不要です。

Soft_007_04

 

実行するとまず新規にDBを作成します。
DBを作成後、「Load Shapefile」を実行してインポートしたいShapeを選択します。設定はSRID:4326 Encoding:UTF-8を選択しました。

Soft_007_05

 

インポートできたら「Edit table rows」でレコードが確認できます。

Soft_007_06
 

QGISで表示できるか確認してみます。
レイヤの追加 → SpatiaLiteレイヤの追加

Soft_007_07

 

新規 → DB選択 → 接続

Soft_007_08

 

接続するとレイヤ内容が表示されるので選択して追加

Soft_007_09

 

レイヤの地物が表示されました。

Soft_007_10

 

QGISで結構簡単に表示することができました。SpatiaLiteはインストールしなくていいので手軽です。なんだか色々なツールと連携して使えそうな気がしてきました。連携する方法や連携する場合、フロントエンドかバックエンドのどちらで処理すべきか色々と疑問はあるんですがそれについての情報が少ないようです。勉強する必要がありそうです。

 
 

  • 参考文献

SpatiaLite
OSGeo-Live 8.5 Documentation
地図とかの空間情報をSQLiteに格納するSpatiaLiteを使用してみる

 

Walking #008

 

日付 曜日 歩数
2015.07.19 10975
2015.07.20 3817
2015.07.21 10104
2015.07.22 5475
2015.07.23 6361
2015.07.24 4324
2015.07.25 5636
合計
46692

 

QGIS #014 – レイヤを編集可能にするスクリプト

 

QGISで、レイヤを編集可能にするスクリプトは下記のように記述します。

 

 

実行すると1番目のレイヤの「sample01」が編集可能になります。

QGIS_014_01

 

レイヤ編集可能にする:

 
 

  • 参考文献

QGIS

 

QGIS #013 – レイヤを表示・非表示するスクリプト

 

QGISで、レイヤを表示・非表示するスクリプトは下記のように記述します。

 

 

実行すると1番目のレイヤの「sample01」が非表示になります。

QGIS_013_01

 

表示にする場合:

2番目のレイヤが表示になります。

 
 

  • 参考文献

QGIS

 

QGIS #012 – 選択レイヤを切替えるスクリプト

 

QGISで、選択レイヤを切替えるスクリプトは下記のように記述します。

 

 

実行すると選択レイヤが1番目の「sample01」になります。

QGIS_012_01

 

選択レイヤを変更する場合:

2番目のレイヤが選択レイヤになります。

 
 

  • 参考文献

QGIS

 

QGIS #011 – 選択されているレイヤ名を変更するスクリプト

 

QGISで、選択されているレイヤ名を変更するスクリプトは下記のように記述します。

 

 

実行すると現在選択されている「sample01」のレイヤ名が「サンプル01」に変更されます。

QGIS_011_01

 

違うレイヤ名に変更したい場合:

 
 

  • 参考文献

QGIS

 

QGIS #010 – 選択されているレイヤ名を取得するスクリプト

 

QGISで、選択されているレイヤ名を取得するスクリプトは下記のように記述します。

 

 

実行すると現在選択されている「sample01」のレイヤ名を取得します。
コンソールに「sample01 レイヤが選択されています。」と表示されます。

QGIS_010_02

 
 

  • 参考文献

QGIS

 

QGIS #009 – Pythonコンソール

 

QGISで自動化などのスクリプト処理をするには、以前紹介した「QGIS #006 – プラグイン作成」がありますが、その場でおこなうようなもっと手軽にスクリプト処理をするには「Pythonコンソール」を利用します。

 

プラグイン → Pythonコンソール
QGIS_009_01

 

実行すると「Pythonコンソール」が表示されます。ここにPythonのコードを記述していきます。ちなみに左のアイコンは上から、「コンソールのクリア」・「クラスのインポート」・「コマンドの実行」・「エディタの表示」・「設定」・「ヘルプ」になっています。
QGIS_009_02

 

下記内容でコンソールでスクリプトを実行してみます。

 

実行すると現在のプロジェクトに読み込んでいるレイヤ数がコンソールに表示されます。
QGIS_009_04

 

次に左のアイコンの「エディタの表示」を実行すると、右側にエディタが表示されます。エディタにコードを記述するとPythonのファイルとして保存することができます。
QGIS_009_03

 

エディッタに先ほどと同じコードを保存して「スクリプト実行」を実行します。
実行すると現在のプロジェクトに読み込んでいるレイヤ数がコンソールに表示されます。
QGIS_009_05

 

このように、コンソールとエディタを使うことによりスクリプト処理が実行できるようになります。プラグインと使い分けて利用すると作業が効率化できそうです。

 
 

  • 参考文献

QGIS

 

Walking #007

 

日付 曜日 歩数
2015.07.12 13090
2015.07.13 12604
2015.07.14 4663
2015.07.15 5467
2015.07.16 4877
2015.07.17 7994
2015.07.18 7345
合計
56040

 

QGIS #008 – プラグインでダイアログ作成

 

プラグインで複数条件の処理を指定するためにはダイアログを作成する必要があります。ダイアログを作成するには下記の6ファイルが必要になります。

QGIS_008_10

 

QGISのプラグインでダイアログを作成するためには下記方法でおこないます。

 

①ダイアログの作成

まず、QGISでダイアログを作成するためには「Qt」を利用します。以前紹介した「Python #001 – PortablePython」を利用して「Qt」を起動します。

 

PortablePythonの中の「QtDesigner-Portable」を実行します。

QGIS_008_01
 

QtDesignerを利用してボタンやラベルを任意に配置します。今回はプロジェクト内にあるレイヤ数を表示するプラグインを作成します。

QGIS_008_02

 

任意のダイアログを作成したら名前を付けて保存。拡張子が「.ui」のファイルを作成します。今回はファイル名を「Dialog01.ui」とします。

QGIS_008_03
 

②ダイアログの変換

Qtで作成した「Dialog01.ui」を「Dialog01.py」に変換します。

「PortablePython」で変換しようと試したところ変換に必要な「pyuic4.bat」がフォルダ内に存在しない。。。色々と調べてなんとか「pyuic4.bat」を作成する方法を見つけました。

まず、「pyuic4.bat」を下記内容で「Dialog01.ui」と同じディレクトリに作成します。
※ドライブ名が違う場合は書き換えてください。今回はGドライブとしました。

 

次に、コマンドプロンプトを実行 → 「Dialog01.ui」があるディレクトリまで移動 → 「pyuic4 Dialog01.py -o Dialog01.ui」を実行。「Dialog01.py」が作成されます。

QGIS_008_06

 

しかし、プラグイン作成に非常に参考になる「QGISプログラミング入門」を読んでいたところもっと簡単に変換できることが判明しました。最初から確認しておけばよかった。。。QGISをインストールした際に「OSGeo4W」も入れていると下記方法でも変換可能です。

まず、すべてのプログラム → QGISフォルダ → OSGeo4Wを実行

QGIS_008_04

 

次に、「Dialog01.ui」があるディレクトリまで移動 → 「pyuic4 -o Dialog01.py Dialog01.ui」を実行。「Dialog01.py」が作成されます。

QGIS_008_05

 
 

③プラグインの作成

ここでは主に「dialog.py」を新規作成するのと、「sample.py」の一部を変更します。変換された「Dialog01.py」の記述は変更しないでそのまま利用します。

 

 
 

 

ダイアログを読み込む

 

ダイアログを表示

 
 

 
 

 
 

 

Qt,QGISの機能を読み込む

 

ダイアログを読み込む

 

クラスを宣言

 

QGISのインターフェイスを読み込む

 

実行ボタンをクリックでdef PushButton(self):を実行

 

実行ボタンを押した時

 

ラベルにプロジェクトのレイヤ数を表示

 
 

プラグインを「プラグイン管理」で利用可にすると下記のようにプラグインを実行できるようになります。

QGIS_008_07

 

プラグインを実行するとダイアログが表示されます。

QGIS_008_08

 

実行ボタンを押すと、プロジェクト内の全レイヤ数がラベルに表示されます。

QGIS_008_09

 

ダイアログ設定が含まれてくると、全体の繋がりや仕組みがいまいちピンとこない部分があります。QtとPythonについて詳しく勉強する必要がありそうです。

 

  • 参考文献

QGIS
QGISプログラミング入門

 

Leaflet #020 – 現在位置の表示2

 

以前に「Leaflet #009 – 現在位置の表示」でHTML5の「Geolocation API」を利用して現在位置を表示する方法を記載しました。今回はLeafletのAPIを利用して現在位置を表示する方法を記載します。

 

 

 

 

index.htmlを実行すると下記のようにブラウザで表示されます。
※「この地図は、国土地理院長の承認を得て、同院発行の電子地形図(タイル)を複製したものである。 (承認番号 平27情複、 第224号)」

leaflet_020_01

 

現在位置のAPIを設定:

 

現在位置の取得可能の場合:
function onLocationFound(e)~の後に処理を記述します。

現在位置にマーカーとポップアップを表示します。
「e.latlng」で現在の緯度経度を取得します。

 

現在位置の取得不可能の場合:
function onLocationError(e)~の後に処理を記述します。

アラートを表示させます。

 
 

 

Walking #006

 

日付 曜日 歩数
2015.07.05 11462
2015.07.06 4559
2015.07.07 11889
2015.07.08 4784
2015.07.09 5218
2015.07.10 12203
2015.07.11 10543
合計
60658

 

QGIS #007 – プラグインでダイアログ表示

 

QGIS #006 – プラグイン作成」を応用してプラグインでダイアログを表示する方法を記載します。

 

QGISのプラグインでダイアログを表示するためには下記方法でおこないます。

 

__init__.py

 
 

sample.py

 

トリガーの設定

 

プラグインの実行時の処理

 

プラグイン実行でメッセージボックスを表示
第2引数に題名、第3引数にコメントを記述

 
 

metadata.txt

 
 

プラグインを「プラグイン管理」で利用可にすると下記のようにプラグインを実行できるようになります。
QGIS_007_01

 

プラグインを実行するとダイアログが表示されます。
QGIS_007_02

 

  • 参考文献

QGIS
QGISプログラミング入門