Buffer功能:轨道站点周边一公里的人口数
2018-11-10 本文已影响0人
狮子城
已知:
图层1:点层lacci,具有一列人口数的值
图层2:点层metro,轨道交通站点
求解:
轨道交通周边1000米内的人口数
思路1:
将lacci点层中到metro点层中任意站点距离小于1000米的点都选出来,然后做统计。
SELECT
a.*,
b.ID
FROM
lacci a,
metro b
WHERE
st_distance (
st_transform ( a.geom, 32651 ),
st_transform ( b.geom, 32651 )) < 1000
ORDER BY
a.ID;
思路2:
将lacci点层中到metro点层中最近的站点找出来,增加一列属性为最近站点的主键编号。再筛选到最近站点的距离小于1000米的点。
SELECT
*
FROM
(
SELECT T.*,
ROW_NUMBER () OVER (
PARTITION BY T.lac,
T.ci
ORDER BY
dis
) rowid (
SELECT a.*,
b.ID AS metro_id,
st_distance (
st_transform ( a.geom, 32651 ),
st_transform ( b.geom, 32651 )) AS dis
FROM
lacci a,
metro b
WHERE
st_distance (
st_transform ( a.geom, 32651 ),
st_transform ( b.geom, 32651 )) < 1000
) T
) M
WHERE
rowid =1