Bonjour,
Je me lance dans les bases de données spatiales et donc je dois faire des requetes SQL spatiales.
Je manipule le SQL régulièrement pour faire du data-management mais je ne pensais pas que la dimension "spatiale" me perdrait aussi vite.
Alors... je vous explique mon pb: J'ai une couche de coordonnées géographiques (environ 9000 points) -qu'on appelera "couche1"- et une couche de polygones (environ 2500 polygones), qu'on appelera "couche 2".
Je veux récupérer la distance entre chaque point de la couche1 et le polygone(couche 2) le plus proche.
Idéalement je voudrais afficher une colonne dans une nouvelle table avec l'identifiant de ma couche 1, l'identifiant de ma couche 2 le plus proche des coordonnées de ma couche 1 et la distance entre les 2.
Voici ma requete:
NB: J'ai fait au préalable un st_transform sur les geom de mes 2 couches pour avoir la mm projection (WGS 84: 4326)
Le souci c'est que (i) ca tourne pendant des heures et ca c'est pas possible parce qu'il faut que je le fasse au moins 50 fois et (ii) je ne peux pas afficher mon identifiant couche2 (Enfin quand je le fais il refuse de tourner si je le mets pas dans "group by" et du coup j'ai les distances pour les 2500 polygones pour chaque point de ma couche1).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 create table public.MERGE as SELECT a.id_couche1,min(ST_Distance(a.geom2_couche1, b.geom2_couche2,TRUE)) as distance FROM public."COUCHE1" as a,public."COUCHE2" as b group BY a.id_couche1;
Avez-vous des astuces/solutions/corrections qui pourraient m'aider?
Merci beaucoup.
Partager