Skip to main content

Python lib of tools for Flask and SQLAlchemy (extension geometry)

Project description

Librairie "outil géographique" pour SQLAlchemy et Flask

Cette librairie fournit des outils pour faciliter le développement avec Flask et SQLAlchemy. Elle vient compléter la libraire Utils-Flask-SQLAlchemy en y ajoutant des fonctionnalités liées aux objets géographiques.

Package Python disponible sur https://pypi.org/project/utils-flask-sqlalchemy-geo/.

  • Les serialisers

    Le décorateur de classe @geoserializable permet la sérialisation JSON d'objets Python issus des classes SQLAlchemy. Il rajoute dynamiquement une méthode as_geofeature() aux classes qu'il décore. Cette méthode transforme l'objet de la classe en dictionnaire en transformant les types Python non compatibles avec le format JSON. Pour cela, elle se base sur les types des colonnes décrits dans le modèle SQLAlchemy. Cette methode permet d'obtenir un objet de type geofeature.

    Utilisation

    • utils_flask_sqla_geo.serializers.geoserializable

    Décorateur pour les modèles SQLA : Ajoute une méthode as_geofeature qui retourne un dictionnaire serialisable sous forme de Feature geojson.

    Fichier définition modèle :

      from geonature.utils.env import DB
      from utils_flask_sqla_geo.serializers import geoserializable
    
      @geoserializable
      class MyModel(DB.Model):
          __tablename__ = 'bla'
          ...
    

    fichier utilisation modele :

      instance = DB.session.query(MyModel).get(1)
      result = instance.as_geofeature()
    

Le décorateur de classe @shapeserializable permet la création de shapefiles issus des classes SQLAlchemy:

  • Ajoute une méthode as_list qui retourne l'objet sous forme de tableau (utilisé pour créer des shapefiles)
  • Ajoute une méthode de classe as_shape qui crée des shapefiles à partir des données passées en paramètre

Le décorateur de classe @geofileserializable permet la création de shapefiles ou geopackage issus des classes SQLAlchemy:

  • Ajoute une méthode as_list qui retourne l'objet sous forme de tableau (utilisé pour créer des shapefiles)
  • Ajoute une méthode de classe as_geofile qui crée des shapefiles ou des geopackage à partir des données passées en paramètre

Utilisation

  • utils_flask_sqla_geo.serializers.shapeserializable

Fichier définition modèle :

  from geonature.utils.env import DB

  from utils_flask_sqla_geo.serializers import shapeserializable


  @shapeserializable
  @geofileserializable
  class MyModel(DB.Model):
      __tablename__ = 'bla'
      ...

Fichier utilisation modele :

data = DB.session.query(MyShapeserializableClass).all()
MyShapeserializableClass.as_shape(
    geom_col='geom_4326',
    srid=4326,
    data=data,
    dir_path=str(ROOT_DIR / 'backend/static/shapefiles'),
    file_name=file_name
)
# OU 
MyShapeserializableClass.as_geofile(
    export_format="shp",
    geom_col='geom_4326',
    srid=4326,
    data=data,
    dir_path=str(ROOT_DIR / 'backend/static/shapefiles'),
    file_name=file_name
)
  • La classe FionaShapeService pour générer des shapesfiles

    • utils_flask_sqla_geo.utilsgeometry.FionaShapeService
    • utils_flask_sqla_geo.utilsgeometry.FionaGpkgService

    Classes utilitaires pour crer des shapefiles ou des geopackages.

    Les classes contiennent 3 méthode de classe:

    • create_fiona_struct(): crée la structure des fichers exports

      • Pour les shapefiles : 3 shapefiles (point, ligne, polygone) à partir des colonens et de la geom passé en paramètre
    • create_feature(): ajoute un enregistrement au(x) fichier(s)

    • save_files(): sauvegarde le(s) fichier(s) et crer un zip pour les shapefiles qui ont au moin un enregistrement

        data = DB.session.query(MySQLAModel).all()
      
        for d in data:
                FionaShapeService.create_fiona_struct(
                        db_cols=db_cols,
                        srid=current_app.config['LOCAL_SRID'],
                        dir_path=dir_path,
                        file_name=file_name,
                        col_mapping=current_app.config['SYNTHESE']['EXPORT_COLUMNS']
                )
        FionaShapeService.create_feature(row_as_dict, geom)
        FionaShapeService.save_files()
      
  • Les GenericTableGeo et les GenericQueryGeo

    Ces classes héritent des classes GenericTable et GenericQuery et permettent de gérer le données de type géométrie.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

utils_flask_sqlalchemy_geo-0.3.4.tar.gz (32.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

utils_flask_sqlalchemy_geo-0.3.4-py3-none-any.whl (32.5 kB view details)

Uploaded Python 3

File details

Details for the file utils_flask_sqlalchemy_geo-0.3.4.tar.gz.

File metadata

File hashes

Hashes for utils_flask_sqlalchemy_geo-0.3.4.tar.gz
Algorithm Hash digest
SHA256 557bf17ba56ab0b7cacabbbd515fca5b4354d00698c4c4aeac8e442345ae4e94
MD5 f477b8f4a72a43d7e8ec34451c8f900d
BLAKE2b-256 80aec336ad10261513abd5869300bb290a9d6f49bb50a83e5d246d3c64a6d404

See more details on using hashes here.

File details

Details for the file utils_flask_sqlalchemy_geo-0.3.4-py3-none-any.whl.

File metadata

File hashes

Hashes for utils_flask_sqlalchemy_geo-0.3.4-py3-none-any.whl
Algorithm Hash digest
SHA256 b08efa1b3c39a121f73bf42837466c8a99710b9798f823443c9854ba6d627191
MD5 9166053c3a77f078b3c30cf9b1ab8cc8
BLAKE2b-256 655dbace0f51398e44808b9ab23164719307b05a3806c5b8234342a54e570f08

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page