skip to content
Logo 三七の小站

QGIS [坐标方位][最短距离]自动生成

/ 2 min read

1. 坐标自动生成

在属性表中添加字段 (字段计算器) 表达式如下:

concat(to_string(round($x, 2)), ',', to_string(round($y, 2)))

2. 多点到元素的最短距离 及 相对元素的方位

CASE
WHEN degrees ( azimuth ( make_point (x(start_point($geometry)), y(start_point($geometry))), make_point (x(end_point($geometry)), y(end_point($geometry))))) > 22.5 AND degrees ( azimuth ( make_point (x(start_point($geometry)), y(start_point($geometry))), make_point (x(end_point($geometry)), y(end_point($geometry))))) <= 67.5 THEN '西南'
WHEN degrees ( azimuth ( make_point (x(start_point($geometry)), y(start_point($geometry))), make_point (x(end_point($geometry)), y(end_point($geometry))))) > 67.5 AND degrees ( azimuth ( make_point (x(start_point($geometry)), y(start_point($geometry))), make_point (x(end_point($geometry)), y(end_point($geometry))))) <= 112.5 THEN '西'
WHEN degrees ( azimuth ( make_point (x(start_point($geometry)), y(start_point($geometry))), make_point (x(end_point($geometry)), y(end_point($geometry))))) > 112.5 AND degrees ( azimuth ( make_point (x(start_point($geometry)), y(start_point($geometry))), make_point (x(end_point($geometry)), y(end_point($geometry))))) <= 157.5 THEN '西北'
WHEN degrees ( azimuth ( make_point (x(start_point($geometry)), y(start_point($geometry))), make_point (x(end_point($geometry)), y(end_point($geometry))))) > 157.5 AND degrees ( azimuth ( make_point (x(start_point($geometry)), y(start_point($geometry))), make_point (x(end_point($geometry)), y(end_point($geometry))))) <= 202.5 THEN ''
WHEN degrees ( azimuth ( make_point (x(start_point($geometry)), y(start_point($geometry))), make_point (x(end_point($geometry)), y(end_point($geometry))))) > 202.5 AND degrees ( azimuth ( make_point (x(start_point($geometry)), y(start_point($geometry))), make_point (x(end_point($geometry)), y(end_point($geometry))))) <= 247.5 THEN '东北'
WHEN degrees ( azimuth ( make_point (x(start_point($geometry)), y(start_point($geometry))), make_point (x(end_point($geometry)), y(end_point($geometry))))) > 247.5 AND degrees ( azimuth ( make_point (x(start_point($geometry)), y(start_point($geometry))), make_point (x(end_point($geometry)), y(end_point($geometry))))) <= 292.5 THEN ''
WHEN degrees ( azimuth ( make_point (x(start_point($geometry)), y(start_point($geometry))), make_point (x(end_point($geometry)), y(end_point($geometry))))) > 292.5 AND degrees ( azimuth ( make_point (x(start_point($geometry)), y(start_point($geometry))), make_point (x(end_point($geometry)), y(end_point($geometry))))) <= 337.5 THEN '东南'
ELSE ''
END