Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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 wink
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 wink
->

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

 

Pied de page des forums

Powered by FluxBB