Thêm hệ tọa độ để bố trí trong nhà soạn nhạc QGIS?


10

Tôi muốn biết liệu có cách nào để thêm trường hệ thống tọa độ động vào bố cục của nhà soạn nhạc QGIS không.

Tôi có thể sử dụng một biểu thức để thêm nhiều mục như tên tài liệu, đường dẫn tệp, v.v. nhưng dường như tôi không thể tìm ra cách thêm hệ tọa độ?


1
Nếu bạn đang sử dụng QGIS 3.x ngay bây giờ, bạn có thể muốn di chuyển dấu kiểm chấp nhận màu xanh lá cây của bạn sang câu trả lời của QGIS 3.x.
PolyGeo

Câu trả lời:


7

Câu trả lời này đã được cung cấp và chấp nhận trước khi phát hành QGIS 3.0.

Để lấy ID ủy quyền (tức là " EPSG: 4326 "):

  • Bạn chỉ có thể sử dụng biểu thức [% layer_property( 'your_layer_name_or_id', 'crs' ) %]

Nếu bạn muốn lấy mô tả văn bản của CRS (tức là " WGS84 "):

  • AFAIK, bạn phải tạo một chức năng tùy chỉnh. Để thực hiện việc này, hãy chuyển đến "Chèn biểu thức" và nhập chức năng sau vào tab Trình soạn thảo chức năng.

Mã số:

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()
  • Nhấp vào "Tải"
  • Trong tab Biểu thức, nhập get_crs( 'your_layer_name' )

9

Trả lời cho QGIS 3.x:

Để biết giải pháp dễ dàng hơn mà không cần trăn, hãy xem bình luận của Gustry bên dưới

Thêm tập lệnh này vào chức năng tùy chỉnh của bạn:

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()

nhập mô tả hình ảnh ở đây

và sau đó lấy tên crs trong trình soạn thảo biểu thức với

get_crs(@layer_name)

nhập mô tả hình ảnh ở đây

Đối với tên CRS của dự án của bạn (ví dụ: chiếu trong bố cục in của bạn), hãy sử dụng:

Thêm tập lệnh này vào chức năng tùy chỉnh của bạn:

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()

và sau đó lấy tên crs trong trình soạn thảo biểu thức với:

 get_projectcrs(@project_crs) 

Tất nhiên, bạn cũng có thể nhập ví dụ 'EPSG:4326'bằng tay hoặc sử dụng một chức năng khác @project_crsđể trả về mã EPSG.

Ghi chú:

Ngoài ra, hãy xem https://qgis.org/api/api_break.html để biết thêm thông tin về các thay đổi trong qgis 3.x


Cảm ơn @MrXsquared! Trước đây tôi đã thử chính xác mã đó nhưng không sử dụng @ khi truyền tên của lớp. Tuy nhiên, tôi vẫn không thể làm việc này. Khi tôi thêm bản đồ vào chế độ xem bố cục và chèn nhãn với chức năng đã nói ở trên, 'Xem trước đầu ra' chỉ hiển thị NULL và không có thông tin nào được thêm vào nhãn. Tôi đã kiểm tra mọi thứ nhiều lần, bản đồ có tên (và id) và CRS nhưng không có gì hiển thị. Nó không nên phụ thuộc vào CRS cụ thể được sử dụng, phải không?
TinkerPhil

Tất nhiên điều này sẽ không hoạt động trong chế độ xem bố cục vì điều này đề cập đến một lớp cụ thể. Tôi đã chỉnh sửa câu trả lời của mình và thêm một hàm để trả về các crs đã sử dụng của dự án của bạn . Bạn có thể sử dụng điều này trong bố trí in của bạn để hiển thị tên của phép chiếu được sử dụng.
MrXsquared

2
Đối với câu trả lời của bạn A, không cần phải có biểu thức python. Bạn có thể thực hiện `layer_property (@layer_name, 'crs_description')`.
etrimaille
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.