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

GEODATA DAYS 2024

#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 .... smile )

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

 

Pied de page des forums

Powered by FluxBB