Skip to main content

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.

Metadata

Release files for utils-flask-sqlalchemy-geo 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for utils-flask-sqlalchemy-geo 0.4.0
File Size Uploaded
utils_flask_sqlalchemy_geo-0.4.0.tar.gz 45.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for utils-flask-sqlalchemy-geo 0.4.0
File Interpreter ABI Platform
utils_flask_sqlalchemy_geo-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 95.0 kB

Release files / utils_flask_sqlalchemy_geo-0.4.0.tar.gz

Download URL utils_flask_sqlalchemy_geo-0.4.0.tar.gz
Size 45.0 kB
Tags Source
SHA-256 checksum
How to use checksums
7e1b228c86ee494e97c45801507fe7930add19d24dca173a039205efbc96f496
BLAKE2b-256 checksum
How to use checksums
a81e5da1d1a704905973caad695077ebf8893048bcc881f820a48b17fb32fb38
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / utils_flask_sqlalchemy_geo-0.4.0-py3-none-any.whl

Download URL utils_flask_sqlalchemy_geo-0.4.0-py3-none-any.whl
Size 50.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cb075d7cef677a4b0e0bd0c2c3b918bebf5e7c7d9752a251d2c2b3b1fb385457
BLAKE2b-256 checksum
How to use checksums
d5cddd1d18c6a9eb39f1238e97fc3fcd53baeeca4802c7878e03a1bb50bc962f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page