Keyword
: ajout d'un exporteur JSON (API Tiles)TileMatrixLimits
: ajout d'un exporteur JSON (API Tiles)
- Internalisation de la lib json
- Ajout d'exporteur XML (via la lib boost) pour les entités Style, BoundingBox, Keyword, LegendURL, TileMatrixLimit et Style
- Création d'un annuaire pour les CRS pour éviter les créations en double
- Passage complet en snake case
- Le format de canal contient le nombre de bits d'encodage
- Renommage StyledImage -> PaletteImage
- Renommage lzwEncoder -> LzwCompressor
- Renommage lzwDecoder -> LzwUncompressor
- Renommage pkbEncoder -> PkbCompressor
- Renommage pkbDecoder -> PkbUncompressor
Liste de fonctionnalités dépréciées.
- Suppression de la notion 'inspire' dans la gestion des styles
- Suppression de la classe ConvertedChannelsImage
- Suppression de la gestion de la compilation avec la librairie Kakadu
- Suppression des factory pour les classes filles de Image
- Suppression de la fonctionnalité de crop dans Rok4Image
- Correction du nettoyage des annuaires de TMS et styles
- Stockage objet (S3, Swift et Ceph)
- Possibilité de définir un nombre de tentatives pour les lectures (1 par défaut) : variable d'environnement
ROK4_OBJECT_READ_ATTEMPTS
- Possibilité de définir un nombre de tentatives pour les écritures (1 par défaut) : variable d'environnement
ROK4_OBJECT_WRITE_ATTEMPTS
- Possibilité de définir un temps d'attente, en secondes, entre les tentatives (5 par défaut) : variable d'environnement
ROK4_OBJECT_ATTEMPTS_WAIT
- Possibilité de définir un nombre de tentatives pour les lectures (1 par défaut) : variable d'environnement
S3Context
: pour éviter des conflits dans une utilisation multithreadée, la sortie de la fonction HMAC (openssl) est dédiée.
- Gestion du multi cluster S3 :
- nom du cluster = hôte du cluster avec le port (pas de protocole)
- Pour préciser le cluster auquel on s'adresse, le nom du bucket aura la forme
<nom du bucker>@<nom du cluster>
- Les variables d'environnement
ROK4_S3_URL
,ROK4_S3_KEY
etROK4_S3_SECRETKEY
peuvent contenir une liste de valeurs séparées par des virgules - Dans les descripteurs de pyramide et leur liste ou les objets symboliques, on peut ne pas préciser le nom du cluster : on sait alors qu'on travaille sur le même cluster que celui de l'objet d'origine
- Attribute : dans les valeurs des attributs, on échappe les éventuelles back quotes
Cache
: les modifications dans le cache quand il n'est pas par thread (index des dalles, TMS et styles) se font en exclusion mutuelle (mutex lock et unlock)
Level
: Ajout de pixels de marge lors de la reprojection des données d'un niveau de pyramide
LibopenjpegImage
: la lecture des images JPEG 2000 tuilées recharge l'image à la lecture de chaque tuile
LegendURL
: la fonction de copie d'une instance recopie bien le format et le hrefLibtiffImage
: correction du calcul de nombre de tuile dans la largeur lors de la lecture d'une image dont la largeur est un multiple de la taille de la tuileBoundingBox
: lorsque l'on met en phase une bbox, les 4 bords doivent être traités indépendemment les uns des autres (avec un calcul de phase pour chacun)
- La variable d'environnement
ROK4_TMS_NO_CACHE
permet de désactiver le cache de chargement des TMS - La variable d'environnement
ROK4_STYLES_NO_CACHE
permet de désactiver le cache de chargement des styles
- Le test d'existence d'un objet ou d'un fichier n'est plus une lecture de 1 octet mais une implémentation spécifique à chaque type
- Les TMS et les styles sont cherchés sur le stockage avec et sans extension JSON
- Table
- Correction d'une typo dans l'écriture du metadata.json : filedsCount -> fieldsCount
- Style
- La valeur de nodata en sortie d'un style est la première valeur de la palette (et non la couleur pour la valeur 0)
- LibopenjpegImage
- Fixe sur la lecture des images à tuile unique suite au zonage
- LibtiffImage
- Capacité à lire des images tuilées
- Capacité à lire des images avec palette
- LibopenjpegImage
- Lecture des images à tuile unique par paquet de 256 lignes
- Lecture des images tuilées par tuile
Les librairies sont gérées de manière indépendantes, conditionnées pour être installées en tant que dépendance dynamique. Le projet a son propre site, avec toutes les versions et leur documentation.
-
Librairie, partie
utils
:- Styles et TMS sont chargés dans un annuaire, qui connait le dossier de stockage des fichiers / objets les définissant
- Les pyramide sont chargées depuis leur descripteur, fichier ou objet
-
Librairie, partie
storage
: gère un annuaire de contextes de stockages, fichier, Swift, S3 ou Ceph -
Librairie, partie
image
: permet la lecture et le calcul ligne par ligne -
Librairie, partie
datasource
: permet la lecture en une fois d'un buffer de donnée -
Librairie, partie
datasource
: permet la lecture par morceau d'un buffer de donnée -
Librairie, partie
processors
: gère plusieurs noyaux d'interpolation et la conversion de pixel -
Intégration continue :
- Compilation du fichier librok4.so et conditionnement dans des paquets debian avec les headers, avec et sans la prise en charge du stockage ceph
- Jeu des tests unitaires
- Compilation de la documentation et publication sur la branche gh-pages
-
Ajout du mode DEBUG à la compilation