#1 Tue 05 June 2012 17:24
- Samy-DT
- Participant assidu
- Date d'inscription: 5 Apr 2011
- Messages: 211
Sélections BD TOPO par commune
Bonjour à tous,
Je souhaite regrouper les tables de ma BD Topo (sous MI 8.5) par communes. Certaines tables possèdent dans leur table attributaire un code Insee ou même un nom de commune. Dans ce cas là, la sélection est facile.
En revanche, j'ai des tables où il n'y a aucune information sur la commune (ex. tronçons cours d'eau), voire même rien du tout dans la table (lignes ISO).
Je n'ai pas un panel très développé d'automatismes en SIG, alors au début je me suis dit qu'il allait falloir créer un fichier excel "code-Insee" à joindre à toutes mes tables, mais le problème c'est le champ commun. Cela va être trop long à faire sur toutes mes tables.
N'avez-vous pas d'autre solutions ?
A bientôt,
Samy.
Hors ligne
#2 Sat 09 June 2012 00:10
- tholot
- Participant actif
- Lieu: viré
- Date d'inscription: 5 May 2009
- Messages: 55
Re: Sélections BD TOPO par commune
Bonjour,
De manière schématique et vite fait si j'ai bien tout compris :
Méthode pour une table :
La table communes de la bdtopo (théme administratif) contient les codes insee associés aux polygones représentant chacune des communes de votre territoire d'étude.
Ouvrez la en plus de la table que vous souhaitez "tronçonnez" par commune.
Si vous souhaitez conserver les tronçons de la BDtopo, faites une requête :
sélection SQL
Select * from tablehydro,tablecommune where tablecommune.obj contains tablehydro.obj (en théorie les tronçons hydro sont plus petits que les polygones des communes.
Attention toutefois certaine couche, type hydro et route sont les strictes frontières communales, vous risquez donc d'obtenir des tronçons qui seront aux limites communales réparties de manière aléatoire sur une ou l'autre des communes dont ils sont frontières avec un risque fort de discontinuité d'un même ensemble physique ex la rd12 bien que limitrophe entre commune A et commune B se trouvera en partie morcellée sur la commune A et la commune B
et ainsi de suite pour chaque couche, vous aurez ainsi un code INSEE pour chaque tronçon et pourrez donc faire une requête distinguant les tronçons par leur appartenance à un code insee distinct
cordialement,
Si vous savez disposez de Mapbasic il faut ensuite faire une boucle sur la table commune pour réaliser l'opération pour toutes les communes et couches bdtopo dont vous avez besoin.
cordialement,
Yann
Hors ligne
#3 Mon 11 June 2012 09:47
- Samy-DT
- Participant assidu
- Date d'inscription: 5 Apr 2011
- Messages: 211
Re: Sélections BD TOPO par commune
Bonjour Yann et merci pour votre réponse.
J'ai tenté votre méthode en écrivant la requête suivante dans la sélection SQL : SELECT * FROM TRONCON_COURS_EAU,COMMUNE WHERE COMMUNE.Obj Contains TRONCON_COURS_EAU.Obj
En validant, j'ai un message d'erreur "Variable ou champ SELECT non défini".
Quelle erreur ai-je faîte ?
A bientôt,
Samy.
Hors ligne
#4 Mon 11 June 2012 10:10
- Samy-DT
- Participant assidu
- Date d'inscription: 5 Apr 2011
- Messages: 211
Re: Sélections BD TOPO par commune
Je rectifie légèrement le message précédent : cette requête fonctionne dans MapBasic mais pas dans la sélection SQL.
Ceci dit, pour les couches type route et hydro qui "débordent" sur les communes adjacentes, j'ai dans l'idée de créer un polygone par-dessus mes limites communales puis de créer une requête demandant d'exclure ou d'effacer tout ce qui est à l'extérieur de ce polygone.
Cependant, je ne sais pas du tout comment procéder à cette exclusion.
Auriez-vous une idée ?
Samy
Hors ligne
#5 Tue 19 June 2012 00:23
- tholot
- Participant actif
- Lieu: viré
- Date d'inscription: 5 May 2009
- Messages: 55
Re: Sélections BD TOPO par commune
Bonjour,
la fenêtre de sélection SQL de Mapinfo est un assistant permettant l'écriture de requête sans connaître le language SQL qu'utilise Mapinfo.
Pour obtenir le résultat voulu modifier la structure de tablehydro (et idem pour toutes les autres tables) et ajouter un champ CODE_INSEE de type text de 5 caractères, puis :
Si vous voulez reproduire la requête dans la sélection SQL de Mapinfo :
mettez * dans la partie "colonne"
Mettez les 2 tables considérées dans la section table (tablehydro,tablecommune)
Mettez tablehydro.obj within tablecommune.obj dans la partie "critère"
vous pouvez sélectionner les noms de colonnes tables et opérateurs dans les menus déroulant de la partie droite de la boite de dialogue
Vous obtenez une Queryx Utiliser la commande table\mettre à jour colonne
-table à mettre à jour : Queryx obtenue
-Utiliser une colonne de la table : choisissez la table des communes
bouton jointure : l'objet de la table queryx est à l'interieur de l'objet de la table commune
Colonne à mettre à jour : CODE_INSEE de la table queryx
Calculer : Valeur
De : CODE_INSEE (en supposant que votre table communale contienne un champ code insee renseigné..)
Enregistrer votre table hydro avec les codes insee.
Partie 2 exclure la partie des tronçons qui débordent :
Rendre la couche tronçon hydro modifiable
Selectionner tous les tronçons "réputés" appartenir à une commune donnée :
Selection SQL
colonne : *
table : tablehydro
critère CODE_INSEE="05321"
obtenez une query
sans perdre la sélection cliquer sur le bandeau de la fenêtre Carte
Sélectionner Menu Objets\Définir cible
sur la carte sélectionner le polygone de la commune considérée.
Enfin menu Decouper\Supprimer extérieur
Vous pouvez bien sur enregistrer la table des tronçons par commune au préalable pour n'effectuer que les découpages sur celle ci.
Yann
Hors ligne
#6 Wed 20 June 2012 15:13
- Samy-DT
- Participant assidu
- Date d'inscription: 5 Apr 2011
- Messages: 211
Re: Sélections BD TOPO par commune
Merci beaucoup Yann,
J'ai pu faire mes découpages avec succès.
A bientôt,
Samy.
Hors ligne
#7 Fri 22 June 2012 07:32
- tholot
- Participant actif
- Lieu: viré
- Date d'inscription: 5 May 2009
- Messages: 55
Re: Sélections BD TOPO par commune
De rien,
bon courage pour vos projets.
cordialement
Yann
Hors ligne