MapInfo

Evolution logicielle

MapBasic

MapBasic est un langage de programmation utilisé pour la création d'outils et de fonctionnalités pour la suite logicielle (SIG) MapInfo. MapBasic est basé sur la famille de langages de programmation BASIC.

Map Basic offre un environnement de développement comprenant un éditeur de texte, pour saisir les programmes, uncompilateur pour créer une application exécutable, un éditeur de lien pour créer une application complexe en ladécomposant en différents modules «objets», et, enfin une aide en ligne.Les programmes exécutables produits par Map Basic ne peuvent que s’exécuter que sur les ordinateurs disposantd’un moteur Map Info. Il existe des relations très fortes entre les versions de MapInfo et les versions de MapBasicutilisées.

Pour télécharger l'ide pour MapBasic.

Les huit principes de conception du BASIC étaient :

Un exemple de programme en MapBasic que j'ai réalisé.

Les bases du langage

Avec MapBasic, développer rapidement et facilement des applications personnalisées qui peuvent être aussi simples que d'ajouter un élément de menu à MapInfo Professional, ou aussi complexes que la refonte entière de l'interface utilisateur et l'extension des fonctionnalités de MapInfo Professional. MapBasic permet rapidement et facilement :

Les boucles

La boucle bornée
For Variable = Borne Initiale to Borne Finale [Step valeur d’incrément]

liste d’instruction....

Next

On peut sortir d’une boucle bornée quelle que soit la valeur de la variable de contrôle avec l’instruction ExitFor
La boucle tant que
While Condition

liste d’instruction....

Wend

La boucle Tant que n’est exécutée que si la condition initiale est vraie.

On peut sortir d’une boucle Tant que, quelle que soit l’état de la condition de contrôle avec l’instruction Goto label

La boucle jusqu’à ce que
Do

liste d’instruction....

Loop Until Condition

La boucle Jusqu’à ce que est toujours exécutée au moins une fois même si la condition initiale est fausse.
La boucle infinie
Do

liste d’instruction....

Loop

La boucle Infinie n’est interrompue que grâce à un débranchement provoqué par un Goto ou un ExitDo
Le test
If Condition1 Then

liste d’instruction....

[Elseif Condition2 Then

liste d’instruction.... ]

[Elseif Conditionx Then

liste d’instruction.... ]

[Else Condition

liste d’instruction.... ]

End If
Le test à choix multiple (CASE)
Do Case Expression

Case Valeur [,Valeur]

liste d’instruction....

[Case...]

[Case Else

liste d’instruction.... ]

End Case

Manipuler les tables

Ouvrir une table existante
Open Table nom du fichier [As Nom de la table ] [Hide] [Readonly] [Interactive]
Fermer une table existante
Close Table Nom de la table [Interactive]
Créer une nouvelle table
Lors de la création d’une table, on précise les noms des champs. Ceux ci doivent faire moins de 32 caractères. Ilspeuvent comporter des lettres des nombres et des underscore[_]. Un nom de champ ne peut pas commencer par unnombre

Create Table Nom de la table (colonne type_de_la_colonne[, ...])

[File TableSpec ] [{Type Native/Type DBF[Charset Set de Caractères]}]

[Version Version]
Modifier une table existante
Alter Table Nom de la table (

[Add Nom_de_la_colonne type_de_la_colonne[, ...]

[Modify Nom_de_la_colonne type_de_la_colonne[, ...]

[Drop Nom_de_la_colonne [, ...]]

[Rename Ancien_Nom_de_la_colonne Nouveau_Nom_de_la_colonne[, ...]]

[Order Nom_de_la_colonne, Nom_de_la_colonne[, ...]])

Créer et mettre à jour une colonne d’une table existante à partir d’une autre table
Add Column Nom de la table (colonne[Type de la colonne])

{Values const[,const]/ From Table_Source

Set to expression

[where {colonne de destination= colonne source/whithin/Contains/Intersects}]

[dynamic]}
Créer un index sur une table existante
Create Index On Nom de la table (colonne)
Détruire un index sur une table existante
Delete Index Nom de la table (colonne)
Rendre une table existante cartographiable
Create Map For Nom de la table (colonne) [CoordSys...]

Si on omet de préciser la clause Coordsys, la table créée sera dans le système terrestre Latitude / longitude. Dans cecas le Bound aussi est fixé par défaut. Il est assez étendu pour couvrir la terre entière. Dans ce cas les coordonnéessont précises au millionième de degré, soit à peu prés 10 centimètres.
Insérer de nouvelles lignes dans une table
Insert into Nom de la table [(liste colonnes)] {Values(liste valeurs)]/ Select liste colonnes From Table}
Modifier des lignes dans une table
Update Nom de la table Set colonne = expression[,colonne = expression ]

[Where RowId = Rang de la ligne]

Compacter une table
Pack Table Nom de la table [Graphic/Data]

!Pack détruit physiquement les enregistrements qui sont préalablement détruits logiquement par un Delete. Ilfaut faire suivre Pack de Graphic ou Data (ou les deux). Par défaut Pack ne tasse rien et ne produit pas d’erreurd’exécution. Pour tasser une table elle doit préalablement avoir été sauvegardée par un Commit
Sauvegarder une table sur le disque
Commit Table Nom de la table [As FileSpec ] [{Type Native/Type DBF[Charset Set de Caractères]}]

[CoordSys ... ] [Version Version]
Annuler les changements intervenus sur une table depuis la dernière sauvegarde sur disque
RollBack Table Nom de la table
Détruire tout le contenu d’une table existante ( la table subsiste mais vide)
Delete From Nom de la table

Cette instruction permet aussi de vider uniquement une colonne et peut être contrainte par une clausewhere. Exemple : Delete Obj from Tron_Route where Rowid = 10, détruit la géométrie de l’objet de latable Tron_route qui est au rang 10
Détruire une table
Drop Table Nom de la table !! très puissant à utiliser avec beaucoup de précautions!!