Jest to dość proste do osiągnięcia przy użyciu QGIS (myślę, że każda wersja to zrobi) i bardzo prostej instrukcji SQL w menedżerze DB. Ale do tego twoja musi znajdować się w jakiejś przestrzennej bazie danych (Postgis lub spatialite). Ponieważ jest on bardziej dostępny dla większości ludzi, założę się, że używa spatialite, ale instrukcje SQL są takie same dla Postgis.
- Utwórz nową bazę danych Spatialite;
- Zaimportuj warstwy punktów i wielokątów do nowej bazy danych;
- Otwórz wtyczkę menedżera DB, wybierz bazę danych i uruchom jedną z następujących instrukcji SQL:
Odległość od wszystkich punktów do granic wszystkich wielokątów
SELECT
f.point_id,
g.polygon_id,
st_distance(g.geom, f.geom) AS distance
FROM
points_table AS f,
polygons_table AS g
Odległość do wszystkich punktów do powiązanych granic wielokątów (przy założeniu istnienia wspólnego pola)
SELECT
f.point_id,
g.polygon_id,
st_distance(g.geom, f.geom) AS distance
FROM
points_table AS f JOIN
polygons_table AS g ON (g.common_field = f.common_field)
Odległość do wszystkich punktów do powiązanych centroidów wielokątów :
SELECT
f.point_id,
g.polygon_id,
st_distance(f.geom, st_centroid(g.geom)) AS distance
FROM
points_table AS f JOIN
polygons_table AS g ON (g.common_field = f.common_field)
Zauważ, że możesz dodać dowolne pole ze swoich warstw do wyniku:
SELECT
f.point_id,
f.point_number,
g.polygon_id,
g.parcel_name,
st_distance(f.geom, st_centroid(g.geom)) AS distance
FROM
points_table AS f JOIN
polygons_table AS g ON (g.common_field = f.common_field)
Lub nawet wszystkie pola:
SELECT
f.*,
g.*,
st_distance(f.geom, st_centroid(g.geom)) AS distance
FROM
points_table AS f JOIN
polygons_table AS g ON (g.common_field = f.common_field)