Điều này khá đơn giản để đạt được bằng cách sử dụng QGIS (tôi nghĩ rằng bất kỳ phiên bản nào cũng được) và một câu lệnh SQL rất đơn giản trong trình quản lý DB. Nhưng đó là của bạn phải trong một số loại cơ sở dữ liệu không gian (Postgis hoặc spatialite). Vì hầu hết mọi người đều dễ tiếp cận hơn, tôi sẽ giả sử sử dụng spatialite, nhưng các câu lệnh SQL giống với Postgis.
- Tạo một cơ sở dữ liệu Spatialite mới;
- Nhập các lớp điểm và đa giác của bạn vào cơ sở dữ liệu mới;
- Mở plugin trình quản lý DB, chọn cơ sở dữ liệu và chạy một trong các câu lệnh SQL sau:
Khoảng cách từ tất cả các điểm đến tất cả các ranh giới đa giác
SELECT
f.point_id,
g.polygon_id,
st_distance(g.geom, f.geom) AS distance
FROM
points_table AS f,
polygons_table AS g
Khoảng cách đến tất cả các điểm đến ranh giới đa giác liên quan (giả sử rằng có một trường chung tồn tại)
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)
Khoảng cách đến tất cả các điểm đến các đa giác có liên quan :
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)
Lưu ý rằng bạn có thể thêm bất kỳ trường nào từ các lớp của bạn vào kết quả:
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)
Hoặc thậm chí tất cả các lĩnh vực:
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)