QGIS基本功 | 21 QGIS工程文件属性设置(2)——坐标参照系、变换、默认样式、数据源、关系和变量

本文介绍了QGIS工程文件的属性设置,涵盖坐标参照系、变换、默认样式、数据源、关系和变量六个方面。坐标参照系决定地图窗口的投影,影响数据的正确叠加显示;变换涉及不同坐标系间的动态投影,QGIS自动选择最精确方式;默认样式定义新图层的绘制方式;数据源设置影响编辑同步和默认值计算;关系定义了图层间的1:n关联;变量则包含表达式中可访问的全局和工程特定变量。
摘要由CSDN通过智能技术生成

今天继续分享工程文件属性的设置,包括工程坐标参照系、变换、默认样式、数据源、关系和变量六个部分。

 

 01 坐标参照系

 

工程坐标参照系定义了当前地图窗口所使用的坐标系,决定了如何将数据从其底层原始坐标绘制到QGIS地图画布中,并呈现为平面地图。

 

QGIS支持自动动态投影,不管图层自带的坐标系是否与工程坐标系相同,均可自动重投影到当前工程坐标系,使数据可以正确叠加显示,这个过程对用户是完全透明的。因此,工程坐标系是各个图层正确显示的基础,为了使地图减少形变、正确反应现实世界地物的大小和相互之间的位置关系,应选择适合于制图区域的工程坐标系。通常,各个国家和地区均有自己的坐标系选择标准,区域研究的前置任务之一是确定和选择符合该地区标准的坐标参照系。

 

工程坐标系设置通过坐标参照系选择器实现:

 

 

  • 无坐标参照系(或未知/非地球投影)

 

勾选该选项相当于禁用QGIS坐标系处理,将所有图层坐标当成与地理位置无关的直角坐标对待,常用于基于原始坐标猜测图层所采用的坐标系、角色扮演游戏中的游戏地图、建筑物等微观地图。

 

使用无坐标参照系时,图层绘制前不再进行动态重投影,而是直接使用原始坐标数值在屏幕上绘制其位置;椭球体锁定为None/Planimetric;量算距离和面积单位、以及坐标显示使用“未知单位”,所有量算均以未知地图单位进行,不可修改,且量算结果不能转换为其他单位。

 

  • 过滤器

 

根据用户输入的关键字可以对坐标系的EPSG代码、坐标系名称、坐标系标识符进行模糊匹配,快速查找到需要的坐标系。

 

  • 最近使用过的坐标参照系

 

列出最近使用过的坐标参照系,点击任意坐标系可以将其设置为工程坐标参照系。

 

  • 预定义的坐标参照系

 

列出QGIS支持的所有坐标参照系,包括地理坐标系和投影坐标系两个大类。

 

  • 文本框

 

只读坐标系的WKT文本和Proj文本,在Proj引擎对坐标系的处理时使用。

 

  • 预览框

 

当前选中的坐标系有效使用范围。

 

 02 变换

 

QGIS默认使用动态投影,即不同坐标系的数据可以自动重投影到工程坐标系,当从源坐标系到目标坐标系有多种不同的重投影变换方式时,QGIS自动选择最精确方式。然而,有时最精确的方式需要提供额外的参数或者额外操作,此时将根据【变换】中的设置进行处理。

 

存在多个时询问基准面变换(全局设置中定义):

 

勾选后,当源坐标系到目标坐标系存在多种可用的基准面变换时,将弹出对话框让用户选择对工程使用何种基准面变换。如下图:

 

 

QGIS二次开发中,您可以使用以下代码将画布(MapCanvas)的坐标系设置为国家2000坐标系(EPSG:4547): ```cpp #include <qgsproject.h> #include <qgscoordinateutils.h> // 设置画布坐标系为国家2000坐标系 void setCanvasCrsToNational2000() { QgsProject *project = QgsProject::instance(); // 获取国家2000坐标系(EPSG:4547)的坐标参考系统对象 QgsCoordinateReferenceSystem national2000Crs("EPSG:4547"); // 将国家2000坐标系设置为项目的默认坐标参考系统 project->setCrs(national2000Crs); // 获取当前地图窗口的画布对象 QgsMapCanvas *canvas = project->mapCanvas(); // 设置画布的坐标参考系统为国家2000坐标系 canvas->setDestinationCrs(national2000Crs); } int main() { // 初始化QGIS项目 QgsApplication app(argc, argv); QgsApplication::initQgis(); // 设置画布坐标系为国家2000坐标系 setCanvasCrsToNational2000(); // 执行其他的二次开发操作 // 释放QGIS资源 QgsApplication::exitQgis(); return 0; } ``` 上述示例代码中,首先通过`QgsProject::instance()`获取项目实例,并使用`setCrs()`方法将项目的默认坐标参考系统设置为国家2000坐标系。然后通过`QgsMapCanvas`获取画布对象,并使用`setDestinationCrs()`方法将画布的坐标参考系统设置为国家2000坐标系。 请注意,这只是一个简单的示例,您可能需要根据您的实际需求进行适当的修改和扩展。另外,确保在使用QGIS API之前正确初始化和关闭QGIS应用程序(如示例代码中的`QgsApplication::initQgis()`和`QgsApplication::exitQgis()`)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值