Code Monkey home page Code Monkey logo

export-xlsx-py's Introduction

Isogeo - XLSX Exporter

PyPI PyPI - Python Version

Build Status Azure DevOps coverage

Documentation Status Code style: black

Python package to export Isogeo metadata into Excel workshbook using the Python SDK and Openpyxl.

Usage in a nutshell

  1. Install:

    pip install isogeo-export-xl
  2. Authenticate

    # import
    from isogeo_pysdk import Isogeo
    # API client
    isogeo = Isogeo(
        auth_mode="group",
        client_id=ISOGEO_API_GROUP_CLIENT_ID,
        client_secret=ISOGEO_API_GROUP_CLIENT_SECRET,
        auto_refresh_url="{}/oauth/token".format(ISOGEO_ID_URL),
        platform=ISOGEO_PLATFORM,
    )
    
    # getting a token
    isogeo.connect()
  3. Make a search:

    search = isogeo.search(include="all",)
    # close session
    isogeo.close()
  4. Export:

    # import
    from isogeotoxlsx import Isogeo2xlsx
    # instanciate the final workbook
    out_workbook = Isogeo2xlsx(
        lang=isogeo.lang,
        url_base_edit=isogeo.app_url,
        url_base_view=isogeo.oc_url
    )
    # add needed worksheets
    out_workbook.set_worksheets(auto=search.tags.keys())
    
    # parse search results
    for md in map(Metadata.clean_attributes, search.results):
        out_workbook.store_metadatas(md)
    
    # save file
    out_workbook.save("./isogeo_export_to_xlsx.xlsx")

export-xlsx-py's People

Contributors

guts avatar simonsampere avatar

Watchers

 avatar  avatar

export-xlsx-py's Issues

Improve columns management in Excel

Stakes:

  • 1 metadata attribute = 1 column: depends on the metadata type (different worksheet)
  • 1 column = 1 title: needs to be translated
  • 1 column = 1 dimension (width and height)
  • 1 column = format

In the older versions, columns names and row were managed with big dictionaries stored into the isogeo2xlsx.py file.

With c05f3e720b70274c84c56143140aaa5f3000a7d4 columns/attributes were moved to independant modules.

It could be improved with storing the columns titles and dimensions into these modules.

Ajouter un onglet dédié à INSPIRE

S'active via une case à cocher dans l'interface.

  • proportion de métadonnées valides INSPIRE
  • proportion de métadonnées disposant d'un service WMS
  • proportion de métadonnées disposant d'un service WFS

Le rendu de l'analyse des dates de création et modification est incohérent

Constat

Problème relevé par le CD 94.

Pour reproduire, il faut exporter un partage dans lequel des métadonnées n'ont jamais été éditées. Leur date de modification est donc la même que la date de création, ce qui crée une incohérence entre les listes à analyser.

Dans le fichier journal on a d'ailleurs ce message :

2019-11-19 14:35:02,028 || WARNING || stats - 138 || line_dates || Dates lists should have the same length. Creation: 553 | Modification: 547

Diagnostic

Le problème vient du fait qu'une date de modification n'est pas stockée dans la liste destinée à l'analyse si elle est égale à la date de création :

# add modification date (not datetime) for later stats, only if different from the creation date
if md._modified != md._created:
self.stats.li_dates_md_modified.append(
utils.hlpr_datetimes(md._modified).date()
)

C'est pour éviter de compter un événement de modification alors que la date est juste automatiquement créée lors de la création de la métadonnées par la BDD.

Ajouter un module de lecture des fichiers Excel

Idée

En plus de la capacité à exporter les métadonnées en fichier Excel, il serait bien utile, compte-tenu des besoins exprimés lors des divers et non moins intéressants échanges avec les clients finaux, de pouvoir ajouter un module de lecture des fichiers Excel exportés.

Besoins

Importer des métadonnées depuis un support Excel formaté pour Isogeo par exemple pour :

  • édition "hors-ligne" sur fichier Excel
  • modification par lot de certains champs
  • import des éléments centralisés : carnet d'adresses, licences, spécifications, etc.

Solution

  1. Ajouter un onglet à l'export contenant le carnet d'adresses (contacts)
  2. Créer un module de lecture du fichier Excel se basant sur la même structure (cf. matrix)

Mon beau schéma, roi des tableaux :

image

Difficultés

  • Les tableaux Excel générés avec le module isogeo2xlsx.py ne contiennent pas l'intégralité des champs de métadonnées retournés par le package isogeo-pysdk.
  • Pour certains des champs de métadonnées qui apparaissent dans le tableau, la valeur retournée par le package isogeo-pysdk a été traitée pour en rendre l'affichage user friendly.

Une conclusion résulte de ces deux constats : il n'est pas possible, en partant d'un tableau excel généré avec le module isogeo2xlsx.py d'aboutir à un résultat exactement équivalent à la réponse de l'API (telle qu'elle est retournées par le package isogeo-pysdk) utilisée pour le générer.

Métadonnées à récupérer

  • Vecteurs :

    • champs basiques :
      • extrait
      • méthode de collecte
      • contexte de collecte
      • date de création de la données
      • résolution
      • nombre d'entités
      • format
      • type de géométrie
      • langue
      • date de dernière modification de la donnée
      • nom de la données
      • emplacement de la donnée
      • enveloppe convexe
      • attributs
      • date de publication de la données
      • échelle
      • titre
      • cohérence topologique
      • fréquence de mise à jour
      • début de validité
      • fin de validité
      • commentaire
    • Sous-ressources :
      • conditions
      • contacts
      • système de coordonnées
      • évènements
      • mots-clés
      • thèmes INSPIRE
      • limitations
      • spécifications
  • Rasters

  • Services

L'export crash lorsqu'une métadonnée de type ressource dispose d'une enveloppe

En théorie, les fiches de type resource n'ont pas d'enveloppe (ni d'emprise) puisqu'elles sont dévolues au catalogage des données non géographiques.

Cependant, cette limite est facilement contournable via une faiblesse du côté de l'interface d'édition (app.isogeo.com) et de fait, certaines métadonnées de type resource disposent d'une enveloppe.

Onglet Ressources - Le champ path n'est pas bien exporté

Le champ path des fiches ressources peut contenir beaucoup de cas particuliers et notamment des chaînes libres sans qu'elles soient des chemins valides.

Actuellement le package ne les gère pas correctement : ils sont ignorés dans la plupart des cas.

L'export Excel d'une fiche ressource ne fonctionne pas si elle contient au moins un événement

Fichier log : log_IsogeoToOffice.log

Reproduire

  1. Lancer l'application isogeo2office.exe
  2. S'authentifier avec l'application Isogeo Projets
  3. Filtrer sur propriétaire : Tours Métropole
  4. Sélectionner le format d'export : Excel
  5. Exporter 402 métadonnées

Constat

L'application se ferme brusquement au moment d'exporter la fiche ressource Carte des communes avec le nom des maires (Catalogue : Cartes). Aucune erreur n'est relevée dans les logs.
Si on onlève la fiche ressource bloquante du partage, alors l'export fonctionne. D'ailleurs, la fiche ressource Dynamic Map est elle bien exportée.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.