Answers:
在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评论
将此脚本添加到您的自定义函数编辑器中:
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名称(例如,打印布局中的投影),请使用以下命令:
将此脚本添加到您的自定义函数编辑器中:
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代码的函数。
笔记:
另请查看https://qgis.org/api/api_break.html,以获取有关qgis 3.x中更改的更多信息。