Seuraa

Miten vaikutusalueita voidaan laskea kahden paikkatietoaineiston välillä?

PostGISn St_DWithin-funktion avulla voidaan analysoida eri paikkatieto-objektien välisiä etäisyyksiä säteen avulla. Näin voidaan esimerkiksi tehdä kysely siitä, mitkä kunnat osuvat 10 kilometrin säteen vaikutusalueen päähän rautateistä.

Voimme tehdä kyselyn suoraan psql-komentoriviltä tai pgadmin-ohjelman SQL-kyselyikkunan avulla. Seuraava komentoyhdistelmä antaa meille listan niistä kunnista, jotka osuvat kokonaan tai osittain kymmenen kilometrin säteen vaikutusalueelle rautateistä.

SELECT rautatieviiva.gid, hallintoalue.kunta_ni1
  FROM nlsfi.rautatieviiva INNER JOIN nlsfi.hallintoalue
  ON ST_DWithin(rautatieviiva.geom, hallintoalue.geom, 10000);

Ensin tunnistamme aineistojemme sijainnin tietokannassa, jotta osaisimme viitata niihin oletetulla tavalla. Sitten totuttuun tapaan toimitamme SQL-kielellä kyselyn, jossa käytämme taulujemme sijaintitietoja osana st_dwithin-funktiota ja määritämme säteen pituuden arvon sijaintitietosarakkeiden jälkeen.

Huomionarvoista on osoittaa, että osaksi kyselyn tuloksia voisimme lisätä erinäisiä laskennallisia tuloksia, kuten vaikutusalueen kuntien yhteenlasketun väestön (kunhan datamme sisältää tämän saraketiedon).

Ymmärryksen edesauttamiseksi alle on visualisoitu graafisesti, mitä PostGIS käytännössä laski ST_DWithin-komennolla. Kuvassa tehty 10 kilometrin säteellä buffer-vaikutusalue rautateille (PostGISissa ST_Buffer-kommennolla), joka on tässä visualisoitu QGISin avulla.

Huomaamme, kuinka muutamalla komentorivillä PostGISissa saadaan toimitettua kahta paikkatietoaineistoa hyödyntävä paikkatietoanalyysi, joka perinteisessä paikkatietotyöasemaohjelmistossa vaatisi lukuisia kilkkauksia, puhumattakaan laskentatehokkuudesta, jota voimme analysoida laittamalla komentojen läpiviemiseen kuluvaan aikaan -komentoa "/timing" (käytetään sitä psql-komentoriviltä). Tässä harjoituksessa tehtyyn analyysiin kului noin 0,2 sekuntia.

Oliko tämä artikkeli hyödyllinen?
0/0 koki tästä olevan apua
Lisäkysymyksiä? Lähetä pyyntö

Kommentit