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 Mon 14 December 2009 13:00

feraudyh
Participant actif
Date d'inscription: 13 May 2009
Messages: 103

Questions élémentaires concernant MapBaisc.

Je récupère un programme écrit par des étudiants.

Je vois le code suivant:

Code:

select * from buildingtype2
delete from buildingtype2
commit table buildingtype2

Ma premiere question est: est ce que le select * from buildingtype2 peut servir à quelquechose dans ce contexte?
La deuxième question  le commit est il nécéssaire pour confirmer l'éffacement de buildingytype2?

Par ailleurs dans le code je vois ceci:

Code:

Dim  tabname as string
tabname = SelectionInfo(SEL_INFO_SELNAME)        ' selected table
if tabname ="" then                ' check if selection was done
        note "Please select again - no objects were selected"

Ma question est plus difficile: apparemment SelectionInfo se réfère au dernier appel de Select, par effet de bord. Est ce que cet effet de bord est effacé par certains événements? Peut être le select * from buildings a comme but d'influencer le comportement de SelectionInfo.

Hors ligne

 

#2 Mon 14 December 2009 13:11

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Questions élémentaires concernant MapBaisc.

Salut,

Il me semble que le premier code efface le contenu d'une table et non l'effacement de cette table.
La requète SQL pourrait être partielle et non totale.

Code:

select * from buildingtype2 where blabla into selection
delete selection from buildingtype2
commit table buildingtype2

A+
Joël

Hors ligne

 

#3 Mon 14 December 2009 13:16

feraudyh
Participant actif
Date d'inscription: 13 May 2009
Messages: 103

Re: Questions élémentaires concernant MapBaisc.

Merci mais,
 

Code:

Delete from buildingsType2

ne suffit il pas à effacer le contenu de la table?

Hors ligne

 

#4 Mon 14 December 2009 13:18

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Questions élémentaires concernant MapBaisc.

Il manquerais un argument à delete -->(delete quoi?) un delete "all" from table peut être
je ne comprend pas bien ta question pour le 2éme code?

Dernière modification par Spacejo (Mon 14 December 2009 13:19)

Hors ligne

 

#5 Mon 14 December 2009 13:23

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Questions élémentaires concernant MapBaisc.

Oula je dis une bétise --> Tu as raison, je viens d'essayer dans la FMB --> celà efface bien toutes les entités mais la commande laisse les lignes vides.

Hors ligne

 

#6 Mon 14 December 2009 13:26

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: Questions élémentaires concernant MapBaisc.

Bonjour
Dans le premier code, le select * from buildingtype2 ne sert à rien: delete from buildingtype2 suffit à vider la table, vidage qui ne sera définitif qu'après le commit.... Ce delete annule la sélection en cours de la première ligne.
Dans le second code, SelectionInfo donne des renseignements sur la sélection en cours, qu'elle soit faite par requête ou par sélection à la souris...et dans MapInfo il y a toujours UNE SEULE sélection en cours

Hors ligne

 

#7 Mon 14 December 2009 15:05

feraudyh
Participant actif
Date d'inscription: 13 May 2009
Messages: 103

Re: Questions élémentaires concernant MapBaisc.

Merci,
  En ce qui concerne selectionInfo(SEL_INFO_SELNAME) ce n'est pas une sélection avec la souris qui a fait que la valeur de retour de cet appel soit autre chose que la chaine vide "". D'ailleurs j'ai impression que le bouton qui appelle ce code ne sert à rien, mais comme vous n'avez pas une vue d'ensemble ce que je viens de dire ne sont que des plaintes inutiles wink. Je peux quand même vous dire qu'il me semble que ce bouton est censé être appelé après avoir fait une sélection avec la souris.

Hors ligne

 

#8 Tue 15 December 2009 18:26

feraudyh
Participant actif
Date d'inscription: 13 May 2009
Messages: 103

Re: Questions élémentaires concernant MapBaisc.

Pemettez moi de vous poser une autre question.
J'ai une certaine nombre de régions représenté par des polygones dans une table.
Je veux calculer le rapport entre la surface des zones intérieures à moins de 6 metres des bords des régions
et la surface totale des régions.
Comment exprimer ceci en mapbasic?
Je sait que cela utilise un buffer négatif.

Dernière modification par feraudyh (Tue 15 December 2009 18:29)

Hors ligne

 

#9 Tue 15 December 2009 19:29

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: Questions élémentaires concernant MapBaisc.

Il suffit d'indiquer un chiffre négatif (ici -6) comme largeur pour avoir un buffer "plus petit" que le polygone d'origine...

Hors ligne

 

#10 Tue 15 December 2009 21:08

feraudyh
Participant actif
Date d'inscription: 13 May 2009
Messages: 103

Re: Questions élémentaires concernant MapBaisc.

Merci Maurice,
  Le fait que j'utilise un buffer négatif, je sais dans la mesure où je l'ai lu dans un livre. Ce que je cherche c'est une ou deux lignes de MapBasic qui exprime ceci, pour récupérer la valeur dans une variable MapBasic.
Il faut savoir que j'ai très peu pratiqué MapInfo et que je ne m'en sers que passagèrement,
bien qu'on m'a payé une licence. Postgis par contre je connais assez bien et je saurais résoudre le problème en Postgis comme
Select ST_Area(ST_Buffer(the_geom, -6))/ST_Area(the_geom) from matable.
Mais je ne sais pas si ce genre de syntaxe fonctionne en MapBasic.

Hors ligne

 

#11 Sat 19 December 2009 17:52

feraudyh
Participant actif
Date d'inscription: 13 May 2009
Messages: 103

Re: Questions élémentaires concernant MapBaisc.

Au fait, j'ai résolu mon probleme concernant la surface des buffers. Ce qui m'a induit en erreur c'est qu'en PostGis il faut tout mettre dans la requete SQL tandisqu'en MapinFo on peut faire comme ceci:

Code:

dim spass as float
spass = 0
Select * from Matable into sel
fetch first from sel
while not eot(sel)
spass = spass+ Area(Buffer(sel.obj,20,-6,"m"),"sq m")
fetch next from sel
wend

Dernière modification par feraudyh (Sat 19 December 2009 17:53)

Hors ligne

 

#12 Sat 19 December 2009 18:05

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: Questions élémentaires concernant MapBaisc.

Merci pour le suivi
ps: on apprend mieux en cherchant (surtout quand on trouve ! smile)

Hors ligne

 

#13 Sat 19 December 2009 18:13

Pierre Dolez
Participant assidu
Lieu: Proville
Date d'inscription: 14 Aug 2008
Messages: 519
Site web

Re: Questions élémentaires concernant MapBaisc.

Bonjour,

On voit des bouts de codes dans toute sorte de langages.
La logique est naturellement toujours la même, mais les syntaxe diffèrent comme par plaisir.
Je me demande si ce ne serai pas une bonne idée de faire dans le wiki une sorte de comparatif.
Il ne s'agirait en aucun cas de jugement de valeur, mais pour quelques opérations fréquentes, le faire dans toutes les langues.
J'exclue de ces comparaisons les langages qui se résument à des macro instructions sur plus d'une cinquantaine de caractères.

Dans mon esprit, le but principal est d'éviter des recherches de "faute", comme c'est le cas dans ce sujet, alors qu'il ne s'agit généralement que de problèmes de syntaxe relatifs à des particularités de tel ou tel langage. Ces fautes sont d'autant plus difficiles à trouver qu'il s'agit d'interprétation et non de compilation.

Cordialement.

Hors ligne

 

#14 Sat 19 December 2009 18:40

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: Questions élémentaires concernant MapBaisc.

Pierre Dolez a écrit:

...Je me demande si ce ne serai pas une bonne idée de faire dans le wiki une sorte de comparatif...


Bonne idée.
Et c'est celui qui dit qu'y est ... tongue

Hors ligne

 

Pied de page des forums

Powered by FluxBB