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'))
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments