Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
## 2.0.3

### [Added]

* `TiffHeader` : la valeur de nodata est ajoutée dans le header des Geotiff

### [Fixed]

* `Style` : gestion d'une valeur par défaut pour la demande de nodata, en entrée et en sortie

## 2.0.2

### [Fixed]
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Librairies ROK4 C++

![ROK4 Logo](https://rok4.github.io/assets/images/rok4.png)
![ROK4 Logo](https://rok4.github.io/assets/images/rok4-256.png)

Ces librairies facilitent la manipulation d'entités du projet ROK4 comme les Tile Matrix Sets ou les pyramides, mais aussi la manipulation des données : lecture et écriture des dalles, réechantillonnage et reprojection de données raster. 4 types de stockages sont gérés : fichier, S3, Swift et optionnellement Ceph.

Expand Down
2 changes: 1 addition & 1 deletion include/rok4/datastream/TiffDeflateEncoder.h
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ class TiffDeflateEncoder : public TiffEncoder {
}

public:
TiffDeflateEncoder(Image* image, bool is_geotiff = false) : TiffEncoder(image, -1, is_geotiff) {
TiffDeflateEncoder(Image* image, bool is_geotiff = false, int nodata = 0) : TiffEncoder(image, -1, is_geotiff, nodata) {
// zstream.zalloc = Z_NULL;
// zstream.zfree = Z_NULL;
// zstream.opaque = Z_NULL;
Expand Down
6 changes: 2 additions & 4 deletions include/rok4/datastream/TiffEncoder.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ class TiffEncoder : public DataStream {
Image *image;
int line; // Ligne courante
bool is_geotiff;
int nodata;

virtual void prepare_header() = 0;
uint8_t* header;
Expand All @@ -60,11 +61,8 @@ class TiffEncoder : public DataStream {

public:

TiffEncoder(Image *image, int line, bool is_geotiff);
TiffEncoder(Image *image, int line);
TiffEncoder(Image *image, int line, bool is_geotiff, int nodata);
~TiffEncoder();

static DataStream* get_tiff_encoder ( Image* image, Rok4Format::eFormat format, bool is_geotiff = false );

virtual size_t read ( uint8_t *buffer, size_t size );
virtual bool eof();
Expand Down
1,514 changes: 725 additions & 789 deletions include/rok4/datastream/TiffHeader.h

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion include/rok4/datastream/TiffLZWEncoder.h
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ class TiffLZWEncoder : public TiffEncoder {
}

public:
TiffLZWEncoder(Image* image, bool is_geotiff = false) : TiffEncoder(image, -1, is_geotiff), raw_buffer_size(0), raw_buffer(NULL) {}
TiffLZWEncoder(Image* image, bool is_geotiff = false, int nodata = 0) : TiffEncoder(image, -1, is_geotiff, nodata), raw_buffer_size(0), raw_buffer(NULL) {}

~TiffLZWEncoder() {
}
Expand Down
2 changes: 1 addition & 1 deletion include/rok4/datastream/TiffPackBitsEncoder.h
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ class TiffPackBitsEncoder : public TiffEncoder {
}

public:
TiffPackBitsEncoder ( Image *image, bool is_geotiff = false ) : TiffEncoder( image, -1, is_geotiff ) , raw_buffer_size ( 0 ), raw_buffer ( NULL ) {
TiffPackBitsEncoder ( Image *image, bool is_geotiff = false, int nodata = 0 ) : TiffEncoder( image, -1, is_geotiff, nodata ) , raw_buffer_size ( 0 ), raw_buffer ( NULL ) {

}
~TiffPackBitsEncoder() {
Expand Down
2 changes: 1 addition & 1 deletion include/rok4/datastream/TiffRawEncoder.h
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ class TiffRawEncoder : public TiffEncoder {
}

public:
TiffRawEncoder ( Image *image, bool is_geotiff = false ) : TiffEncoder( image, -1, is_geotiff ) {}
TiffRawEncoder ( Image *image, bool is_geotiff = false, int nodata = 0 ) : TiffEncoder( image, -1, is_geotiff, nodata ) {}
~TiffRawEncoder() {
}

Expand Down
16 changes: 12 additions & 4 deletions include/rok4/style/Style.h
Original file line number Diff line number Diff line change
Expand Up @@ -263,16 +263,24 @@ private :
* \~french \brief Valeur de nodata après style
* \~english \brief Style nodata value
*/
int* get_output_nodata_value () {
return output_nodata_value;
int* get_output_nodata_value (int* default_nodata) {
if (is_identity()) {
return default_nodata;
} else {
return output_nodata_value;
}
}

/**
* \~french \brief Valeur de nodata attendue dans les données en entrée
* \~english \brief Nodata value expected in input data
*/
int* get_input_nodata_value () {
return input_nodata_value;
int* get_input_nodata_value (int* default_nodata) {
if (is_identity()) {
return default_nodata;
} else {
return input_nodata_value;
}
}

/**
Expand Down
6 changes: 3 additions & 3 deletions src/datastream/TiffEncoder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
#include "datastream/TiffPackBitsEncoder.h"


TiffEncoder::TiffEncoder(Image *image, int line, bool is_geotiff): image(image), line(line), is_geotiff(is_geotiff) {
TiffEncoder::TiffEncoder(Image *image, int line, bool is_geotiff, int nodata): image(image), line(line), is_geotiff(is_geotiff), nodata(nodata) {
tmp_buffer = NULL;
tmp_buffer_pos = 0;
tmp_buffer_size = 0;
Expand Down Expand Up @@ -71,7 +71,7 @@ size_t TiffEncoder::read(uint8_t* buffer, size_t size) {
BOOST_LOG_TRIVIAL(debug) << "TiffEncoder : preparation de l'en-tete";
prepare_header();
if ( is_geotiff ){
this->header = TiffHeader::insert_geo_tags(image, this->header, &(this->header_size) );
this->header = TiffHeader::insert_geo_tags(image, this->header, &(this->header_size), nodata );
}
}

Expand Down Expand Up @@ -110,7 +110,7 @@ unsigned int TiffEncoder::get_length(){
BOOST_LOG_TRIVIAL(debug) << "TiffEncoder : preparation de l'en-tete";
prepare_header();
if ( is_geotiff ){
this->header = TiffHeader::insert_geo_tags(image, this->header, &(this->header_size) );
this->header = TiffHeader::insert_geo_tags(image, this->header, &(this->header_size), nodata );
}
}
return header_size + tmp_buffer_size;
Expand Down