QGISのフィールド計算機の言語について

522 views
Skip to first unread message

sakuya_izayoi

unread,
Aug 20, 2018, 9:42:27 PM8/20/18
to QGIS初心者質問グループ
こちらizayoiです。
お世話になります。
QGISのフィールド計算機の言語は何で書かれているのかお分かりになられる方はお見えになりますか?
関数の構文を調べる時に参考になるものをと思っているのですが、
python・・・Pythonはif文が使えるため、if文を使えない時点でフィールド計算機はpythonでない。
ruby・・・同上

使っている言語が分かれば色々と調べやすくなるのですが、情報をお持ちの方、お願いいたします。



TJ

unread,
Aug 20, 2018, 10:12:41 PM8/20/18
to QGIS初心者質問グループ
個人感覚ですが、文法的にPythonに近いですが、計算機独自の構文がたくさんあるため、どの言語かと定義できないと思います。使用時、言語を気にせず、関数を選択して表示されたサンプルコードを参考するのが一番だと思います。

sakuya_izayoi

unread,
Aug 20, 2018, 10:24:44 PM8/20/18
to QGIS初心者質問グループ
TJさま
ありがとうございます。サンプルコードを見ながらが一番ですかね。
Pythonにはちかいなぁと思いつつ、Python込みのオリジナル言語なのでしょうか?
Message has been deleted

TJ

unread,
Aug 20, 2018, 11:27:03 PM8/20/18
to QGIS初心者質問グループ
フィールド演算画面に「式」と「関数エディタ」の2つのタブがあります。
初期では、「式」の方はQGIS組み込み関数が表示され、それを使えるような形です。組み込み関数の場合、QGIS独自の構文になっています。ご質問にあったifの例から言うと、ヘルプを見ると次のような形で使われます。
if( 1+1=2, 'Yes', 'No' ) → 'Yes'
組み込み関数は内部的にPythonで書いてあるのか、C++で書いてあるのかわかりませんが、Pythonで書いた関数と思えば理解しやすいと思います。この「式」のタブでは使用できるのが関数のみのため、Pythonのif文はここでは使えないわけです。

一方、「関数エディタ」のタブでは、Pythonによる独自の関数を作れます。このタブに切り替えした場合、if文も含め、Pythonの文法そのまま使えます。
IfTestという関数を作成する例の手順は以下のようになります。
1.【新しいファイル】ボタンを押す
2.IfTesterというファイル名を付ける(名前は任意で結構、日本語を避けたほうがいい)
3. 独自な関数を定義
from qgis.core import *
from qgis.gui import *


@qgsfunction(args='auto', group='Custom')
def IfTest(value1, value2, feature, parent):
   
if len(value1) > len(value2):
 
return 1
 
else:
 
return 2


4.読み込みボタンを押す
5.「式」タブに切り替えする
6.IfTestで検索するとIfTest関数が利用できるようになるのが分かると思います。
  IfTest(フィールド1,フィールド2)のような使い方になります。

関数の作成方法について、【新しいファイル】を作成した後QGISでは自動的に例が表示されます。それを参考して作成すればいいと思います。

ですので、以上のように、フィールド演算はどの言語が利用されていると言うと、やっぱりPythonだと思います。(私当初の回答を訂正致します)

adachi

unread,
Aug 21, 2018, 8:33:25 PM8/21/18
to QGIS初心者質問グループ
izayoi様、皆様

海外でもおなじ疑問が呈されていたようですが


結論としては

・Pythonを使用してカスタム関数を作ることができるが、言語として最も近いのはSQL

ということだそうです。
Pythonは少し触ったことがありますが、その他言語はど素人なので自分では判断できず、単なる情報提供になってしまって申し訳ないですが…

sakuya_izayoi

unread,
Aug 22, 2018, 11:05:56 AM8/22/18
to QGIS初心者質問グループ
TJさま
お返事遅れすみません。
関数定義の方ではpythonがいけるのですね。うん、こちら側を始めて知りました。そうすると、pythonをしっかり勉強すれば、フィールド計算機をもっと活用できるって事ですね。

adachiさま
情報提供感謝です。

Reply all
Reply to author
Forward
0 new messages