Pages: 1
- Sujet précédent - Croisement d'une base de données et d'une couche polygone - Sujet suivant
#1 Mon 11 February 2019 18:36
- Arthur Vander Linden
- Juste Inscrit !
- Date d'inscription: 11 Feb 2019
- Messages: 3
Croisement d'une base de données et d'une couche polygone
Bonjour à tous,
Je me tourne vers vous aujourd'hui car je suis en panne sèche d'inspiration, de stratégies à mettre en place pour réaliser cette tâche complexe.
Mise en situation :
J'ai en ma possession une base de donnée reprenant environs 6.000.000 de points étendu sur tout un territoire, correspondant à autant d'observation de plante et d'animaux sur le terrain. A chacun de ses points sont liés tout un tas d'information (environ 40 colonnes) dans la table des attributs qui sont importantes à conserver pour le résultat final (dont les coordonnées géographique, des codes d'identification de l'espèces, les dates, etc.)
De l'autre côté, j'ai un couche qui reprend 45.000 polygones autour desquels j'ai réalisé 3 différents buffer (tampons) : buffer 500 m, buffer 1000 m et buffer 2000 m. Ces polygones représentent des zones dans lesquelles je souhaite savoir qu'elles ont été les observations réalisées.
Résultat recherché :
Je cherche à intégrer les 6.000.000 d'observations dans les polygones. Ces 6.000.000 d'observations sont séparés en 3 couches shapefile. Une couche correspondant aux observations que je souhaite inclure dans le buffer 500, une autre pour le buffer 1000 et une autre pour le buffer 2000.
Le résultat final serait de pouvoir, pour chacun des 45 000 polygones, pour dire par exemple pour le polygone n°4859:
- Dans une zone de 500m autour (buffer 500), on a observé les points n° 3, 85, 4569, 29394, 38888 et 983338
- Dans une zone de 1000m (buffer 2000) autour, on a observé etc, etc, etc
- IDEM zone 2000m (buffer 2000)
Ci-dessous, un exemple illustré avec 3 polygones du buffer 2000 et environ 400 points.
https://ibb.co/rt3yPXt
Avez-vous une idée de la stratégie à appliquer, comment est-ce que je pourrais réaliser ceci ?
Merci d'avance pour vos éventuelles réponses, Arthur
Hors ligne
#2 Mon 11 February 2019 19:45
- carteq
- Participant assidu
- Date d'inscription: 8 Mar 2008
- Messages: 829
Re: Croisement d'une base de données et d'une couche polygone
Vous gérez 6 millions de points en shapefile ?
C'est le genre de problème qui se gère bien en SQL.
Voulez-vous avoir une ligne dans la table d'attribut pour chaque point contenu pour le polygone 4859 (on aurait donc de multiples occurrences du polygone 4859) ? Ou une ligne pour le 4859 avec un champ qui contient la liste des points contenus ?
Dernière modification par carteq (Mon 11 February 2019 19:46)
Hors ligne
#3 Tue 12 February 2019 09:48
- ChristopheV
- Membre
- Lieu: Ajaccio
- Date d'inscription: 7 Sep 2005
- Messages: 3199
- Site web
Re: Croisement d'une base de données et d'une couche polygone
Bonjour,
Je rejoins l'avis de carteq sur le shapefile, le couple postgresql/postgis c'est tout de même bien mieux pour gérer ce genre de choses.
Ensuite je pense qu'il y a un petit soucis de modélisation du justement à l'utilisation du format shp (40 colonnes attributaires ça m'interpelle ).
Je vous conseille donc d'étudier votre problème sous l'angle des bases de données relationnelles à cartouche spatiale. Cela vous ouvrira de nombreuses possibilités.
Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close
Hors ligne
#4 Tue 12 February 2019 14:27
- mame1985
- Participant assidu
- Lieu: Montréal
- Date d'inscription: 16 Oct 2010
- Messages: 444
Re: Croisement d'une base de données et d'une couche polygone
Bonjour
Tu peux utiliser la selection by location.
Mame
Hors ligne
#5 Wed 13 February 2019 15:16
- Arthur Vander Linden
- Juste Inscrit !
- Date d'inscription: 11 Feb 2019
- Messages: 3
Re: Croisement d'une base de données et d'une couche polygone
Merci pour vos réponses, je vais essayer de prendre en main l'outil que vous m'avez proposé.
Pour l'instant, j'ai utilisé l'outil intersecte entre les polygones et les points et le résultat n'est pas mauvais. J'ai trois couches pour mes trois buffers, avec dans chacune des couches une ligne pour chaque points, points qui se sont démultiplié vu le chevauchement des polygones.
Comme j'ai au préalable attribué un ID spécifique pour chaque polygones, et un ID spécifique pour chaque type d'observation, je peux maintenant utiliser les données et connaître pour points le(s) polygones associés.
Un nouveau problème se pose à moi :
J'ai maintenant pour chaque ligne, deux coordonnées XY : les coordonnées des centroïdes du polygone associé et celles du point. J'aimerai, pour chacune des lignes, réaliser un calcul de la la distance entre le XY de l'observation et le XY du centroïde du polygone associé.
Une partie de ma table attributaire se présente donc comme suit :
FID - ID observation - X obs - Y obs - ID polygone - X pol - Y pol
Donc 4 colonnes contenant deux jeux de coordonnées.
Merci d'avance pour vos retours !
Arthur
Hors ligne
#6 Wed 13 February 2019 16:51
- carteq
- Participant assidu
- Date d'inscription: 8 Mar 2008
- Messages: 829
Re: Croisement d'une base de données et d'une couche polygone
La formule de l'hypothénuse dans la calculatrice de champs peut-être ?
Code:
sqr( exp(X_obs - X_pol),2)+ exp(Y_obs - Y_pol),2) )
Hors ligne
#7 Wed 13 February 2019 19:16
- Arthur Vander Linden
- Juste Inscrit !
- Date d'inscription: 11 Feb 2019
- Messages: 3
Re: Croisement d'une base de données et d'une couche polygone
Ca semble évident, vu comme ça ! Un grand merci, ça fonctionne parfaitement
Merci pour votre aide !
Dernière modification par Arthur Vander Linden (Wed 13 February 2019 21:10)
Hors ligne
Pages: 1
- Sujet précédent - Croisement d'une base de données et d'une couche polygone - Sujet suivant