Esto es bastante simple de lograr usando QGIS (creo que cualquier versión funcionará) y una declaración SQL muy simple en el administrador de bases de datos. Pero para eso debe estar en algún tipo de base de datos espacial (Postgis o spatialite). Dado que es más accesible para la mayoría de las personas, supondré que uso spaceialite, pero las declaraciones SQL son las mismas para Postgis.
- Cree una nueva base de datos Spatialite;
- Importe sus capas de puntos y polígonos en la nueva base de datos;
- Abra el complemento del administrador de base de datos, seleccione la base de datos y ejecute una de las siguientes instrucciones SQL:
Distancia de todos los puntos a todos los límites de polígonos
SELECT
f.point_id,
g.polygon_id,
st_distance(g.geom, f.geom) AS distance
FROM
points_table AS f,
polygons_table AS g
Distancia a todos los puntos a los límites de polígonos relacionados (suponiendo que exista un campo común)
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)
Distancia a todos los puntos a centroides de polígonos relacionados :
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)
Tenga en cuenta que puede agregar cualquier campo de sus capas al resultado:
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)
O incluso todos los campos:
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)