回答:
この回答は、QGIS 3.0のリリース前に提供および承認されました。
機関ID(つまり " EPSG:4326 ")を取得するには:
[% layer_property( 'your_layer_name_or_id', 'crs' ) %]
CRSのテキストによる説明を取得したい場合(つまり、 " WGS84 "):
コード:
from qgis.core import *
from qgis.gui import *
@qgsfunction(args='auto', group='Custom')
def get_crs(layer_name, feature, parent):
return QgsMapLayerRegistry.instance().mapLayersByName(layer_name)[0].crs().description()
get_crs( 'your_layer_name' )
QGIS 3.xの回答:
Pythonなしで簡単に解決するには、以下のgustryのコメントを参照してください
このスクリプトをカスタムfunctioneditorに追加します。
from qgis.core import *
from qgis.gui import *
@qgsfunction(args='auto', group='Custom')
def get_crs(layer_name, feature, parent):
return QgsProject.instance().mapLayersByName(layer_name)[0].crs().description()
そして式エディタでCRS名を取得します
get_crs(@layer_name)
プロジェクトのCRS名(たとえば、印刷レイアウトでの投影)には、次を使用します。
このスクリプトをカスタムfunctioneditorに追加します。
from qgis.core import *
from qgis.gui import *
@qgsfunction(args='auto', group='Custom')
def get_projectcrs(project_crs, feature, parent):
return QgsCoordinateReferenceSystem(project_crs).description()
次に、式エディターで次のコマンドを使用してcrs名を取得します。
get_projectcrs(@project_crs)
もちろん、たとえば'EPSG:4326'
手動で入力したり@project_crs
、EPSGコードを返す以外の関数を使用したりすることもできます。
ノート:
qgis 3.xでの変更の詳細については、https://qgis.org/api/api_break.htmlも参照してください。