Bu QGIS (herhangi bir sürüm yapacağını düşünüyorum) ve DB yöneticisinde çok basit bir SQL deyimi kullanarak elde etmek oldukça basittir. Ancak bunun için bir çeşit uzamsal veri tabanında (Postgis veya uzamsal) olmalıdır. Çoğu insan için daha erişilebilir olduğundan, spatialite kullandığımı varsayacağım, ancak SQL deyimleri Postgis için aynıdır.
- Yeni bir Spatialite veritabanı oluşturun;
- Nokta ve çokgen katmanlarınızı yeni veritabanına aktarın;
- DB yöneticisi eklentisini açın, veritabanını seçin ve aşağıdaki SQL ifadelerinden birini çalıştırın:
Tüm noktalardan tüm çokgen sınırlarına mesafe
SELECT
f.point_id,
g.polygon_id,
st_distance(g.geom, f.geom) AS distance
FROM
points_table AS f,
polygons_table AS g
İlgili çokgen sınırlarına tüm noktalara uzaklık (ortak bir alan olduğu varsayılarak)
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)
İlgili çokgenler sentroidlerine tüm noktalara mesafe :
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)
Katmanlarınızdan sonuca herhangi bir alan ekleyebileceğinize dikkat edin:
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)
Veya tüm alanlar:
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)