#1 Tue 29 July 2014 20:42
- white-shadow90
- Participant actif
- Date d'inscription: 9 Oct 2013
- Messages: 91
[MapInfo 11] - Tampon conditionnel
Bonjour à tous.
Je souhaiterais savoir s'il est possible de réaliser un tampon conditionnel. Autrement dit, créer un tampon (à partir d'un centre de gravité) dont le diamètre serait déterminé par un seuil calculé à partir des valeurs contenues dans une table).
Dans le cas qui m'intéresse, je dispose d'une table qui contient le centre de gravité pondéré d'un nuage de points et une autre table qui contient le nuage de points qui correspond à ce centre de gravité pondéré. A chaque point est associée une surface.
Je souhaiterais réaliser trois tampons qui contiendraient respectivement 25, 50 et 75% de la somme du champ "surface" de mon nuage de point.
Est-ce possible par une commande dans la FME, existe-t-il un outil capable de réaliser ce traitement ? Cela permettrait d'éviter de tâtonner, en créant des buffers de x mètres puis de calculer pour chacun des buffers quelle est la part des surfaces qu'ils contiennent.
Merci d'avance pour les réponses.
Hors ligne
#2 Tue 29 July 2014 20:53
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: [MapInfo 11] - Tampon conditionnel
Salut,
En passant par la FMB ce doit être possible.
Volià la commande -->
update selection set obj = buffer(obj, 30, 10, "km")
Où 30 est la résolution, 10 la largeur du buffer.
A+
Joël
Hors ligne
#3 Tue 29 July 2014 21:06
- white-shadow90
- Participant actif
- Date d'inscription: 9 Oct 2013
- Messages: 91
Re: [MapInfo 11] - Tampon conditionnel
Si je ne me trompe, le résultat me donner un buffer non conditionnel, avec une distance au centre de gravité que l'on donne nous même, et non calculée en fonction de la fréquence des surfaces contenues dans la table du nuage de points...
Hors ligne
#4 Tue 29 July 2014 21:13
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: [MapInfo 11] - Tampon conditionnel
La commande peut être dupliquée à loisir avec un générateur de scripts et comme tu peux le constater cette commande s'applique à une sélection donc --> conditionnel
Je n'ai peut être pas saisit la totalité de ton soucis mais avec plus de précisions ma réponse pourrait être plus pertinente.
Dernière modification par Spacejo (Tue 29 July 2014 21:14)
Hors ligne
#5 Tue 29 July 2014 21:22
- white-shadow90
- Participant actif
- Date d'inscription: 9 Oct 2013
- Messages: 91
Re: [MapInfo 11] - Tampon conditionnel
Je vais essayer de clarifier ma demande :
Mon point de départ (sélection) serait le centroïde, et non pas les points du nuage.
A partir du centroïde, je souhaiterais créer des tampons qui contiendraient X points dont la somme du champ surface correspondrait, pour le 1er tampon, à 25% de la somme de toutes le surfaces contenues dans la table du nuage.
Donc ma distance de sélection ne serait pas vraiment une distance métrique mais une fréquence de sélection (25, 50 et 75% de la surface de la table de mon nuage de points).
Dernière modification par white-shadow90 (Tue 29 July 2014 21:23)
Hors ligne
#6 Tue 29 July 2014 21:36
- white-shadow90
- Participant actif
- Date d'inscription: 9 Oct 2013
- Messages: 91
Re: [MapInfo 11] - Tampon conditionnel
La distance de sélection (le 10 dans le code) précédent :
Code:
update selection set obj = buffer(obj, 30, 10, "km")
dépendrait en fait du seuil retenu, à savoir, la part des surfaces voulues
Hors ligne
#7 Wed 30 July 2014 17:04
- Daniel
- Membre
- Lieu: Victoriaville, Québec
- Date d'inscription: 6 Sep 2005
- Messages: 2028
Re: [MapInfo 11] - Tampon conditionnel
Bonjour
Donc, si je comprends bien, vous avez deux tables : Une avec un point, que l'on nomme Centre_gravité et une autre table avec votre nuage de points, que l'on nomme Nuage. Dans la table nuage, vous avez une colonne avec une valeur de surface.
Encore selon ma compréhension, si on fait la somme de la colonne surface de votre table nuage, on divise par 4 pour avoir 25% de ce total, le résultat serait le rayon de votre tampon. Par la suite, vous auriez le nombre de points de Nuage dans ce tampon...
Mon raisonnement est-il correcte?
Daniel
De retour à la géomatique
Hors ligne
#8 Wed 30 July 2014 18:42
- white-shadow90
- Participant actif
- Date d'inscription: 9 Oct 2013
- Messages: 91
Re: [MapInfo 11] - Tampon conditionnel
Bonjour,
C'est bien le résultat escompté, effectivement. Dans l'idée, cela ressemblerait à quelque chose comme :
Code:
update selection set obj = buffer(obj, 30, (select surface from ma_table where surface = 25/100*sum(surface)), "m")
mais je dois faire une erreur de syntaxe dans le SQL...
Dernière modification par white-shadow90 (Wed 30 July 2014 18:50)
Hors ligne
#9 Wed 30 July 2014 20:02
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: [MapInfo 11] - Tampon conditionnel
As tu essayer comme ceci
update selection set obj = buffer(obj, 30, ((select sum(surface)) * 25/100), "m")
Hors ligne
#10 Wed 30 July 2014 20:16
- white-shadow90
- Participant actif
- Date d'inscription: 9 Oct 2013
- Messages: 91
Re: [MapInfo 11] - Tampon conditionnel
Non je n'avais pas essayé, cela me donne le message d'erreur suivant :
Found [)] while searching for [A string constant]. Subquery was invalid or did not return any values. Invalid or missing argument list.
Merci beaucoup de me donner des pistes.
Hors ligne
#11 Wed 30 July 2014 20:40
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: [MapInfo 11] - Tampon conditionnel
J'avais oublier le from TaTable
->
update selection set obj = buffer(obj, 30, ((select sum(surface) from TaTable) * 25/100), "m")
Donc à essayer
Dernière modification par Spacejo (Wed 30 July 2014 20:41)
Hors ligne
#12 Wed 30 July 2014 21:17
- white-shadow90
- Participant actif
- Date d'inscription: 9 Oct 2013
- Messages: 91
Re: [MapInfo 11] - Tampon conditionnel
Il ne me l'accorde toujours pas : "Subquerys are only allowed in Where clause of SQL Select."
Hors ligne