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
上一篇 下一篇

猜你喜欢

热点阅读