Це досить просто для досягнення QGIS (я думаю, що це зробить будь-яка версія) та дуже простого оператора SQL у менеджері БД. Але для цього ваше має бути у певній просторовій базі даних (Postgis або просторіт). Оскільки це більш доступно для більшості людей, я припускаю, що використовую просторіт, але оператори SQL є однаковими для Postgis.
- Створити нову базу даних просторових даних;
- Імпортуйте свої точкові та багатокутні шари в нову базу даних;
- Відкрийте плагін менеджера БД, виберіть базу даних та запустіть одне з наступних операторів SQL:
Відстань від усіх точок до всіх меж полігонів
SELECT
f.point_id,
g.polygon_id,
st_distance(g.geom, f.geom) AS distance
FROM
points_table AS f,
polygons_table AS g
Відстань до всіх точок до споріднених меж багатокутників (якщо припустити, що існує загальне поле)
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)
Відстань до всіх точок до споріднених багатокутників центроїдів :
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)
Зауважте, що ви можете додати до результату будь-яке поле зі своїх шарів:
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)
Або навіть усі поля:
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)