#1 Thu 11 February 2010 15:29
- Frédérique
- Participant actif
- Date d'inscription: 13 Jul 2007
- Messages: 51
Détecter et supprimer des doublons de lignes.
Bonjour,
J'ai une couche d'entités administratives polygonales. J'en dérive des polylignes pour des besoins ultérieurs.
Le résultat de cette opération est que, logiquement, je me retrouve avec des doublons : une frontière administrative appartient à 2 entités, chaque entité a donc son segment de frontière.
Une difficulté supplémentaire se présente : je peux avoir un segment étant à la fois une limite d'Etat, une limite de Province et une limite de commune par exemple. De part la "duplication" expliquée ci-dessus, j'aurai 6 segments différents pour cette même "ligne". Mon objectif n'est pas de garder un seul et unique segment mais bien de tenir compte des attributs et de conserver alors :
- une ligne pour l Etat
- une ligne pour la Province
- une ligne pour la commune
J'aimerais faire ça de manière automatique car j'ai un gros set de données. Je travaille en Python mais je suis ouverte à d'autres propositions.
Merci d'avance pour vos bons conseils,
Frédérique
Hors ligne
#2 Thu 11 February 2010 20:12
- carteq
- Participant assidu
- Date d'inscription: 8 Mar 2008
- Messages: 829
Re: Détecter et supprimer des doublons de lignes.
Peux-tu joindre un petit échantillon de données ? Ce serait pratique de pouvoir tester.
Hors ligne
#3 Thu 11 February 2010 23:00
- sekar
- Participant occasionnel
- Lieu: Alma, Québec
- Date d'inscription: 1 Dec 2006
- Messages: 39
Re: Détecter et supprimer des doublons de lignes.
Salut Frédérique
As-tu un champ qui défini le type de limite? Si oui, dans ta table attributaire polylignes, concatene le dans un nouveau champ avec un champ ID provenant de ta couche polygonale de base.
ensuite, si tu ne l'as pas déjà va sur http://www.ian-ko.com/ clique sur l'onglet FREE et choisi easy calculate. C'est un ensemble de Formule toutes prêtes pour le "calculer les valeurs" des champs d'une table.
Dans ta table attributaire polylignes fait un nouveau champ [duplicate] de type Integer et fait un calculate value en chargeant la commande de easy calculate nommée field_Mark_Duplicates_2.cal et remplace [type]
par le nom de ton champ concatené.
L'opération te marquera des 1 pour toutes les lignes rencontrées une première fois et 2, 3, 4 etc. chaque fois qu'un duplicat sera rencontré. Grace as ton champs qui concatene le type de limite (État, Province ou commune)
ces lignes faisant parties de plusieurs types de limites seront différenciées.
Tu n'auras ensuite qu'a ouvrir une session d'édition et sélectionner [duplicate] <> 1 et supprimer la sélection.
séb
Ministère des ressources naturelles et de la faune
801 avenue du pont Taché nord
Alma, Québec, Canada
Hors ligne
#4 Fri 12 February 2010 10:51
- Frédérique
- Participant actif
- Date d'inscription: 13 Jul 2007
- Messages: 51
Re: Détecter et supprimer des doublons de lignes.
Bonjour,
Tout d'abord, merci à tous les deux pour vos réponses rapides...et votre aide.
J'ai testé la solution apportée par Sekar. Ca ne marche pas si bien, voilà pourquoi j'ai mis un PrintScreen en attachment (cela donnera aussi ) carteq un aperçu de la structure de mes données). Pourrais-tu y jeter un oeil afin de voir si tout est fait "comme il faut"? Merci.
Le champ CONCATENATOR (format string) provenant de la combinaison des attributs FID et Objet_Carto.
Le champ DUPLICATE (format LONG INTEGER) attendant le résultat du code, dans lequel [type] a bien été remplacé par [concatenator]
Le script semble ne pas tourner à cause du message d'erreur que vous pouvez visualiser dans la capture d'écran. Comment puis-je résoudre cela?
Merci d'avance pour votre input, bonne journée dans votre belle région du Québec...où j'ai passé mes vacances d'été!
Frédérique
Hors ligne
#5 Fri 12 February 2010 12:22
- yah
- Participant occasionnel
- Date d'inscription: 12 Jan 2007
- Messages: 20
Re: Détecter et supprimer des doublons de lignes.
Bonjour Frederique,
juste une question, as tu une license Arcinfo ou non ?
Si oui, c'est assez simple:
tu concatènes ttes tes communes (polygones) dans une seule classe d'entités: communes. (outil MERGE Data managment tools, General)
idem pour tes provinces, départements.....
Dans ArcCatalog, bouton droit sur ta classe nouvelle et EXPORT... to Coverage (couverture ArcInfo).
Cette couverture crée et ouverte te montre toutes communes sous plusieurs aspcets (on va dire comme ça..): polygones, arcs... C'est les arcs qui t'interessent: il n'y a pas de doublons. Ton pb est résolu: tu en fais un shape ou autres pour ne pas t'encombrer de la couverture Arc et voili....
yah
Hors ligne
#6 Fri 12 February 2010 20:14
- carteq
- Participant assidu
- Date d'inscription: 8 Mar 2008
- Messages: 829
Re: Détecter et supprimer des doublons de lignes.
Peut-être aussi qu'elle pourrait concaténer pour obtenir des valeurs uniques (avec des doublons évidemment) et utiliser le SQL avec Select Distinct pour atteindre le but ?
Désolé, Frédérique, mais sans échantillon, je ne peux en faire plus.
Dernière modification par carteq (Fri 12 February 2010 20:15)
Hors ligne
#7 Mon 15 February 2010 16:41
- sekar
- Participant occasionnel
- Lieu: Alma, Québec
- Date d'inscription: 1 Dec 2006
- Messages: 39
Re: Détecter et supprimer des doublons de lignes.
Bonjour Frédérique
Je viens de tester ma méthode et pour moi tout fonctionne bien (Ouf!!). Je suis en 9.2 avec Arc Editor.
Voici un printscreen de mon Calculate value sur le champs duplicate.
Salut
Dernière modification par sekar (Mon 15 February 2010 16:46)
Ministère des ressources naturelles et de la faune
801 avenue du pont Taché nord
Alma, Québec, Canada
Hors ligne