Dies ist mit QGIS (ich denke, jede Version wird es tun) und einer sehr einfachen SQL-Anweisung im DB-Manager ziemlich einfach zu erreichen. Aber dafür muss sich das in einer Art räumlicher Datenbank befinden (Postgis oder Spatialite). Da es für die meisten Menschen zugänglicher ist, gehe ich von der Verwendung von Spatialite aus, aber die SQL-Anweisungen sind für Postgis identisch.
- Erstellen Sie eine neue Spatialite-Datenbank.
- Importieren Sie Ihre Punkt- und Polygonebenen in die neue Datenbank.
- Öffnen Sie das DB Manager-Plugin, wählen Sie die Datenbank aus und führen Sie eine der folgenden SQL-Anweisungen aus:
Abstand von allen Punkten zu allen Polygongrenzen
SELECT
f.point_id,
g.polygon_id,
st_distance(g.geom, f.geom) AS distance
FROM
points_table AS f,
polygons_table AS g
Abstand zu allen Punkten zu verwandten Polygongrenzen (unter der Annahme, dass ein gemeinsames Feld existiert)
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)
Abstand zu allen Punkten zu verwandten Polygonschwerpunkten :
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)
Beachten Sie, dass Sie dem Ergebnis ein beliebiges Feld aus Ihren Ebenen hinzufügen können:
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)
Oder sogar alle Felder:
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)