Proximity queries (výpočet blízkosti)

Jedným z najčastejšie používaných dopytov na PostGIS a iné priestorové databázy je výpočet vzdialenosti medzi objektami. Ak napríklad hľadáme objekty do vzdialenosti X metrov od nejakej cesty, alebo železnice atď... používame funkciu na filtrovanie s názvom: ST_DWithin()

V následujúcich príkladoch is ukážeme ako kombinovať funkciu ST_DWithin() so štandardnými SQL príkazmi ako: COUNT, JOIN, GROUP BY


Príklady

Koľko hotelov sa nachádza vo vzdialenosti 500 metrov od Židovskej ulice v Bratislave? (vytvorenie tabuľky hotelov, ktoré sa nachádzajú do vzdialenosti 500 metrov od danej ulice)
--------------------------------------------
CREATE TABLE ba.hotely AS
SELECT b.name,b.type,b.geom FROM
ba.ba_budovy AS b
INNER JOIN ba.ba_cesty AS c 
ON ST_DWithin(b.geom, c.geom, 500)
WHERE c.name LIKE 'Židovská'
AND b.type LIKE 'hotel'; 
--------------------------------------------
Koľko bánk sa nachádza vo vzdialenosti jednej míle od Židovskej ulice v Bratislave?
--------------------------------------------
SELECT b.name, COUNT(DISTINCT b.gid) AS total
FROM ba.ba_budovy AS b 
INNER JOIN  ba.ba_cesty AS c
ON ST_DWithin(b.geom, c.geom, 1609)
WHERE c.name LIKE 'Židovská'
AND b.type LIKE 'bank'
GROUP BY b.name;
--------------------------------------------

Cvičenia: