我有一个包含手机信号塔信息的数据集,如下所示。lat 和 lon 字段是塔的位置。
目标是获取蜂窝塔覆盖的扇区的面积(几何形状),从 start_angle 到 end_angle。正如您在下一张图片中看到的那样,以数据集的第一行为例,我可以从 start_angle 275 和 end_angle 35 获取行,但我希望缓冲区的其余部分消失。
使用的查询:
第一个查询用于创建和旋转 start_angle 和 end_angle 的线以及 0 度的线。
WITH vertices AS
(SELECT
id,
start_angle,
end_angle,
(ST_DumpPoints(geom)).path[1] AS v_id,
(ST_DumpPoints(geom)).geom AS vertex
FROM celulas
), teste as
(SELECT
id,
v_id,
ST_SetSRID(ST_Translate(ST_Rotate(ST_MakeLine(ST_MakePoint( 1.0,0.0),
ST_MakePoint(-1.0,0.0)),
radians(start_angle * -1)), ST_X(vertex), ST_Y(Vertex)),
ST_SRID(vertex)) AS startline,
ST_SetSRID(ST_Translate(ST_Rotate(ST_MakeLine(ST_MakePoint( 1.0,0.0),
ST_MakePoint(-1.0,0.0)),
radians(end_angle * -1)), ST_X(vertex), ST_Y(Vertex)),
ST_SRID(vertex)) AS endline,
ST_SetSRID(ST_Translate(ST_Rotate(ST_MakeLine(ST_MakePoint( 1.0,0.0),
ST_MakePoint(-1.0,0.0)),
radians(0)), ST_X(vertex), ST_Y(Vertex)),
ST_SRID(vertex)) AS midline
FROM vertices
)
我还使用下一个查询来合并所有几何图形:半径缓冲区和线条
select St_intersection(st_split(buffer, midline), st_split(buffer, angulo))
from angulo

