整合本站QGIS相关帖子。
# 序
介绍 QGIS 使用技巧。
# 计算网格顶点坐标
使用 QGIS 创建好 Polygon 网格后,所有网格组成一个巨大的矩形,覆盖整个研究区域。而我感兴趣的只是研究区域上每一个小网格的坐标。该文讲述如何在 QGIS 中创建网格并获取感兴趣网格的顶点坐标。
创建并获取所需网格
使用 Create grid 方法创建覆盖 研究区域_Extent 的网格图层。

在生成的网格图层时选择了 EPSG:3857 投影坐标系,横竖间距选择一公里,点击执行后页面多了网格的临时图层。
由于创建的网格覆盖了整个Extent,而我仅需覆盖研究区域的部分网格。在顶部工具栏中打开 Select by location 工具,输入对应参数,选择底图之上的网格要素。

在顶部工具栏中点击 Invert Feature Selection,以此选中不在研究区域上的网格,进行删除操作。

删除多余网格后,剩下的就是覆盖在研究区域上的网格力。
计算网格顶点坐标
右键点击网格图层,打开属性表里的字段计算器。输入函数以获得顶点坐标。
point_n($geometry, 1) :在多边形中生成点坐标,1为左上角顶点,2为右上角顶点,3为右下角顶点,4为右下角顶点。 x() :获得平面中x坐标的值。 y() 同理。 transform() :进行坐标系转换。# 网格图层的坐标系为EPSG:3857,希望得到左上角顶点在EPSG:4326坐标系下的经度坐标。
x(transform(point_n($geometry, 1), 'EPSG:3857', 'EPSG:4326'))
# 网格图层的坐标系为EPSG:3857,希望得到左上角顶点在EPSG:4326坐标系下的纬度坐标。
y(transform(point_n($geometry, 1), 'EPSG:3857', 'EPSG:4326'))

在字段计算器中连接字符串使用 || 运算符。
x(transform(point_n($geometry, 1), 'EPSG:3857', 'EPSG:4326')) || ',' || y(transform(point_n($geometry, 1), 'EPSG:3857', 'EPSG:4326'))
# QGIS三色旗样式
用图片填充多边形感觉有点麻烦,针对三色旗可以试试 Gradient 样式。
三色旗是旗帜或横幅的设计样式,始于十六世纪被视为共和、自由和革命的象征。最著名的三色旗当属法兰西共和国的国旗??—Le Tricolore。除了🇪🇪,还有🇪🇪🇷🇺🇩🇪🇬🇦🇾🇪🇱🇹🇱🇺🇳🇱🇷🇸🇦🇲🇧🇬🇧🇴🇭🇺🇸🇱等。
在QGIS中实现三色旗样式
在这里以法国为例,首先从GADM下载法国矢量面,使用 QGIS 打开 gadm40_FRA_0.shp 文件。
双击该Shapefile的图标,进入该图层的样式设置界面。顶部样式栏中选择 Single Symbol 样式类,在 Symbol layer type 中选择 Gradient Fill 。

选择颜色带(Color ramp),进行颜色配置。设置 Type 为 Discrete。将 Color 1 和 Color 2 分别设置为第一个颜色和第三个颜色。如下图所示,设置三色旗样式一共需要六个 Gradient Stop ,第一个位置在0.0%,颜色为蓝色;第二个位置在33.2%,颜色与第一个一致;第三个位置在33.3%,颜色为白色;第四个位置在66.5%,颜色与第三个一致;第五个位置在66.6%,颜色为红色;第六个位置在100%,颜色与第五个一致。如此以来,色彩渐变将在0.1%的宽度中进行,其余位置均不进行色彩渐变。

# 输出透明背景图
点击 Project -> New Print Layout 来新建 Layout 以设置输出参数,与 ArcGIS 选择相同的背景色和透明色以实现透明背景不同,在 QGIS 中则需将 Layout 的 Background 的不透明度设置成0,并取消勾选 Map 的 Background 复选框。


参数设置成功后,点击 Layout -> Export as Image 进行图片输出。
结果如下图所示:
