Это довольно просто сделать, используя QGIS (думаю, подойдет любая версия) и очень простой оператор SQL в менеджере БД. Но для этого вы должны быть в какой-то пространственной базе данных (Postgis или пространственный). Поскольку он более доступен для большинства людей, я предполагаю использовать пространственный, но операторы SQL одинаковы для Postgis.
- Создать новую базу данных Spatialite;
- Импортируйте ваши точки и слои полигонов в новую базу данных;
- Откройте плагин менеджера БД, выберите базу данных и выполните один из следующих операторов 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)