IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Doublon d'entrées dans fichier kml


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 320
    Par défaut Doublon d'entrées dans fichier kml
    Bonjour,

    Voici le contexte :
    Je suis sur un projet SIG avec QGIS, en partant de tuiles png de 256 x 256 (1024 x 512 tuiles = 524288 tuiles ) regroupée en grosse tuile de 32(x256) x 32(x256) ce qui me donne 512 tuiles pour une map entière et j'effectue les étapes suivantes :
    origine_couleur.png => origine_blanc_noir.png=> géoréférencement + projection sur origine_blanc_noir.png => polygonisation de origine_blanc_noir géoréférencé.tiff => Réparation de la tuile polygonisée.shp => conversion de la tuile issue de la réparation polygone en ligne.shp => export kml

    Pour tout ça pas de soucis ça tourne comme une horloge mais je viens de m'apercevoir que certains de mes kml contiennent plusieurs fois les entrées d'autres pas du tout ... ce qui fait qu'ils sont beaucoup plus lourd que ce qu'ils devraient. Je pense que c'est à l'étape en gras que cela se passe

    Existe t il un moyen, par script shell (je suis sous macOS), de supprimer les entrées en doublon (et des fois plus...) de chaque fichier kml (512) ?
    A la main, je vais y passer des jours entiers et je suis pas à l'abri d'erreurs ...

    Merci de vos lumières

    Voici un exemple de kml à traiter
    => gbl_32_288.kml

  2. #2
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 414
    Par défaut
    Bonjour,

    Va falloir être plus précis, car textuellement, les seules lignes en doublons sont:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    sort gbl_32_288.kml | uniq -d
    	<ExtendedData><SchemaData schemaUrl="#gbl_32_288">
      </Placemark>
      <Placemark>
    	</SchemaData></ExtendedData>
    		<SimpleData name="DN">0</SimpleData>
    		<SimpleData name="DN">1</SimpleData>
    	<Style><LineStyle><color>ff0000ff</color></LineStyle><PolyStyle><fill>0</fill></PolyStyle></Style>

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 320
    Par défaut
    Bonjour,
    Merci pour votre réponse
    Bien évidemment j'ai donné un kml qui n'en a pas ...
    Celui ci en retourne (j'ai testé sous terminal, et merci pour la commande je ne connaissais pas, très pratique )
    => gbl_0_96.kml

  4. #4
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 414
    Par défaut
    Si je prend un cas de doublons dans ton fichier, je vois que cela ressemble à un bloc de ce type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    grep -B5 -A1 '<LineString><coordinates>-168.806304931641,53.0241394042969 -168.802185058594,53.0241394042969' gbl_0_96.kml 
      <Placemark>
    	<Style><LineStyle><color>ff0000ff</color></LineStyle><PolyStyle><fill>0</fill></PolyStyle></Style>
    	<ExtendedData><SchemaData schemaUrl="#gbl_0_96">
    		<SimpleData name="DN">0</SimpleData>
    	</SchemaData></ExtendedData>
          <LineString><coordinates>-168.806304931641,53.0241394042969 -168.802185058594,53.0241394042969 -168.802185058594,53.0227661132812 -168.806304931641,53.0227661132812 -168.806304931641,53.0241394042969</coordinates></LineString>
      </Placemark>
    --
      <Placemark>
    	<Style><LineStyle><color>ff0000ff</color></LineStyle><PolyStyle><fill>0</fill></PolyStyle></Style>
    	<ExtendedData><SchemaData schemaUrl="#gbl_0_96">
    		<SimpleData name="DN">0</SimpleData>
    	</SchemaData></ExtendedData>
          <LineString><coordinates>-168.806304931641,53.0241394042969 -168.802185058594,53.0241394042969 -168.802185058594,53.0227661132812 -168.806304931641,53.0227661132812 -168.806304931641,53.0241394042969</coordinates></LineString>
      </Placemark>
    --
      <Placemark>
    	<Style><LineStyle><color>ff0000ff</color></LineStyle><PolyStyle><fill>0</fill></PolyStyle></Style>
    	<ExtendedData><SchemaData schemaUrl="#gbl_0_96">
    		<SimpleData name="DN">0</SimpleData>
    	</SchemaData></ExtendedData>
          <LineString><coordinates>-168.806304931641,53.0241394042969 -168.802185058594,53.0241394042969 -168.802185058594,53.0227661132812 -168.806304931641,53.0227661132812 -168.806304931641,53.0241394042969</coordinates></LineString>
      </Placemark>
    Est-ce toujours le cas ?
    C'est bien toujours un bloc Placemark complet que l'on doit supprimer et uniquement si le bloc complet est un doublon (pas uniquement une ligne dans ce bloc) ?

    PS: c'est faisable en shell, si c'est bien ça, mais le plus simple serait de le faire avec un langage de script tel que python qui possède des modules de traitement xml.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 320
    Par défaut
    Oui tout à fait ce sont bien les blocs complets que je souhaite supprimer.
    On dirait que dans le traitement de la réparation des polygones, il y a une forme de calque qui s'écrivent les uns par dessus les autres au lieu d'ajouter ce qui manque au premier, ce qui fait que les blocs sont au minimum doublés voir triplés dans le fichier de sortie .shp pour les tuiles complexes.

    Je n'ai pas de préférence particulière pour le langage du script qui m'aidera à épurer les 512 kml
    (même si je dois lancer le script 512 fois à la main, ça sera un moindre mal que de chercher manuellement dans les 512 fichiers) et python 3 est installé sur ma machine (QGIS fonctionne avec python)

    Merci en tout cas de m'aider, c'est sympa

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 320
    Par défaut
    Je cherche sur le net une piste me permettant d'avancer sur le sujet...
    Il existe une multitude d'exemples pour supprimer les lignes en double en revanche je trouve rien (je dois pas chercher au bon endroit) concernant les blocs
    Je suis preneur d'infos sur la ou les méthodes à étudier, merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Inserer une entrée dans fichier XML
    Par sequoia dans le forum Général Python
    Réponses: 4
    Dernier message: 15/02/2016, 21h19
  2. Doublons de lignes dans fichier: travail complexe!
    Par jason_bou dans le forum Général Python
    Réponses: 6
    Dernier message: 14/03/2010, 18h25
  3. Réponses: 6
    Dernier message: 17/07/2007, 17h32
  4. Entré de données dans fichier excel avec Form VB6
    Par avyrex dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 17/05/2007, 15h08
  5. [IO et JAR] Fichier d'entrée dans le JAR ?
    Par L. Sierra dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 25/09/2006, 18h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo