Pages: 1
- Sujet précédent - Dans une meme couche, separer les points des lignes et des surfaces - Sujet suivant
#1 Wed 09 March 2005 14:15
- Bertrand Dorner
- Invité
Dans une meme couche, separer les points des lignes et des surfaces
Bonjour,
Apres avoir (trop ?) rapidement consulte les archives, je n'ai pas
trouve de message sur un sujet qui avait, me semble-t-il, deja ete
traite, a savoir : comment, dans une table comprenant des surfaces, des
lignes et des points, ne selectionner, autrement que par une saisie a
l'ecran toujours aleatoire, que les points, puis les lignes, puis les
surfaces, pour les enregistrer dans des tables separees ?
Merci d'avance.
Bertrand DORNER
administrateur SIG
DDAF du Haut-Rhin
#2 Wed 09 March 2005 14:16
- RAVENET Eric
- Invité
Re: Dans une meme couche, separer les points des lignes et des surfaces
Bonjour,
Je crois que la solution est a rechercher du cote de la commande ObjectInfo mais je ne connais pas la syntaxe adaptee. Je crois que des details sont disponibles dans le document sur l'utilisation du SQL dans la fenetre MapBasic co-realise par Jacques PARIS.
Cordialement
#3 Wed 09 March 2005 14:16
- Laurent Frilleux
- Invité
Re: Dans une meme couche, separer les points des lignes et des surfaces
Bonjour
vous pouvez utiliser 2 methodes
la premiere tres simple consiste a ne selectionner que les objets dont la
surface est >0 vous obtenez ainsi des polygones.
ensuite vous faites la meme avec les longueurs et vous obtenez vos lignes et
il ne reste que les points.
La seconde plus complete passe effectivement par la str(obj)= region ;
polyline ; line ; point ; ellipse ; text ; frame ; arcs ; rectangle
et rounded rectangle
Bonne journee
Laurent FRILLEUX
Cartographie et formation SIG
STRATEGIS S.A.
#4 Wed 09 March 2005 16:28
- ROBIN Thomas
- Invité
Re: Dans une meme couche, separer les points des lignes et des surfaces
Bonjour,
Si vous disposez de MapBasic, inspirez vous de ce code source pour
sélectionner vos objets et enregistrer automatiquement les nouvelles
tables.
Ceci devrait parfaitement fonctionner.
En fait on passe en revue les types de ponctuels et le programe demande où
enregistrer les nouvelles tables.
Vous pourrez passer en revue tous les type d'objets ( region ; polyline ;
line ; point ; ellipse ; text ; frame ; arcs ; rectangle et
rounded rectangle ) en alimentant le code.
Bien cordialement
ROBIN THOMAS
Code :
include
C:Program FilesMapInfoMapBasicMAPBASIC.DEF
declare sub main
declare sub separe_type
declare sub enregistrement_rq
Sub main
Create menu POLY LIGNE SURF as
GO calling separe_type
alter menu bar add POLY LIGNE SURF
end sub
sub separe_type
dim requete_surf as string
dim requete_ponct as string
dim requete_lin as string
requete_surf = Select * from poly_ligne_point where
str(poly_ligne_point.obj)= & chr(34) & region &
chr(34) & into REQ_EN_COURS
run command requete_surf
call enregistrement_rq
requete_ponct = Select * from poly_ligne_point where
str(poly_ligne_point.obj)= & chr(34) & point &
chr(34) & into REQ_EN_COURS
run command requete_ponct
call enregistrement_rq
requete_lin = Select * from poly_ligne_point where
str(poly_ligne_point.obj)= & chr(34) & polyline &
chr(34) & into REQ_EN_COURS
run command requete_lin
call enregistrement_rq
end sub
sub enregistrement_rq
Dim question As Logical
Dim record_query as string
question = false
question = Ask( Voulez vous enregistrez la sélection en cours ? ,
OUI , NON )
If question = true then
record_query = filesaveasdlg( C: , QUERY , TAB ,
ENREGISTREMENT DE LA SELECTION EN COURS )
if record_query then
commit table REQ_EN_COURS as record_query
else
exit sub
end if
ELSE
note BEN ZUT ALORS !!!
end if
end sub
#5 Wed 09 March 2005 16:28
- ROBIN Thomas
- Invité
Re: Dans une meme couche, separer les points des lignes et des surfaces
je recherche actuellement la solution permettant d'enregistrer trois tables
avec les trois type de données (surf, point, ligne) Je ne dispose pas de map basic comme programme indépendant
Cordialement
Ok dans ce cas voici la solution que j'ai trouvé. (OUF .... )
Rajoutez un champ de type entier à votre table TYPE_OBJ grâce à Table
/ Gestion table / Modifier structure
Puis faites Table / Mettre à jour colonne ... choisissez le champ
TYPE_OBJ et dans le champ EXPRESSION vous tapez :
ObjectInfo(obj, 1)
Ainsi vous obtiendrez des valeurs numériques en fonction du type de
l'objet.
Il ne restera plus qu'à sélectionner les objets dont le champ
TYPE_OBJ à la valeur désirée puis d'enregistrer la sélection.
Pour info voici les différnets types d'objet et la valeur renvoyée par
cette fonction.
Bien cordialement et bon courage
THOMAS ROBIN
Define OBJ_TYPE_ARC 1
Define OBJ_TYPE_ELLIPSE 2
Define OBJ_TYPE_LINE 3
Define OBJ_TYPE_PLINE 4
Define OBJ_TYPE_POINT 5
Define OBJ_TYPE_FRAME 6
Define OBJ_TYPE_REGION 7
Define OBJ_TYPE_RECT 8
Define OBJ_TYPE_ROUNDRECT 9
Define OBJ_TYPE_TEXT 10
Define OBJ_TYPE_MPOINT 11
Define OBJ_TYPE_COLLECTION 12
THOMAS ROBIN
CNASEA GUYANE
Responsable Info / SIG / SGBD
4 rue Louis Blanc
97300 CAYENNE
#6 Wed 09 March 2005 16:29
- Frédéric Renversez
- Invité
Re: Dans une meme couche, separer les points des lignes et des surfaces
Bonjour,
Et pour les gens qui ne peuvent ou ne veulent pas modifier la structure de leur couche, il suffit de taper l'expression suivante dans la clause criteres
d'une requete sql :
Str(ObjectInfo(Obj, 1)) = 7 par exemple pour les regions.
Il faut caster en chaine sinon on se prend une erreur de type dans l'expression
pas tres aimable.
Frederic Renversez
Ingenieur Developpement / SIG
I2G
www.i2g.fr
#7 Wed 09 March 2005 18:27
- Matthieu FONDIN
- Invité
Re: Dans une meme couche, separer les points des lignes et des surfaces
Bonjour a tous,
Je tenais a signaler l'existence d'un mbx nomme filtre , telechargeable sur le site de Claritas / Axciom :
http://www.claritas.fr/asp/faq/faq.asp
Il suffit alors de lancer une recherche avec filtre en mot-cle (fiche 218 du 15/11/2002).
Cet outil permet d'operer des selections selon les valeurs, les types d'objets ainsi que leurs styles (couleurs).
Une fois la selection faite, il est possible de l'enregistrer en tant que table a part entiere.
Cordialement,
Matthieu FONDIN
Cartographe / SIG
Agence d'Urbanisme Adour-Pyrenees, Bayonne
#8 Thu 10 March 2005 16:46
- Masaia
- Invité
Re: Dans une meme couche, separer les points des lignes et des surfaces
Bonjour,
Ce n'est pas les solutions qui manquent, mais en voici une autre tres simple en deux etapes:
1- Exporter le fichier en forma ESRI Shape.
2- Importer les fichiers Shape. Chaque type d'objet a son fichier.
De: Marc-Andre Saia
Pages: 1
- Sujet précédent - Dans une meme couche, separer les points des lignes et des surfaces - Sujet suivant