Skip to content

Commit d7fc822

Browse files
authored
Merge pull request #50 from rok4/develop
Release 2.0.3
2 parents 34a2e59 + 0e6ec44 commit d7fc822

File tree

10 files changed

+757
-805
lines changed

10 files changed

+757
-805
lines changed

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
1+
## 2.0.3
2+
3+
### [Added]
4+
5+
* `TiffHeader` : la valeur de nodata est ajoutée dans le header des Geotiff
6+
7+
### [Fixed]
8+
9+
* `Style` : gestion d'une valeur par défaut pour la demande de nodata, en entrée et en sortie
10+
111
## 2.0.2
212

313
### [Fixed]

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Librairies ROK4 C++
22

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

55
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.
66

include/rok4/datastream/TiffDeflateEncoder.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ class TiffDeflateEncoder : public TiffEncoder {
145145
}
146146

147147
public:
148-
TiffDeflateEncoder(Image* image, bool is_geotiff = false) : TiffEncoder(image, -1, is_geotiff) {
148+
TiffDeflateEncoder(Image* image, bool is_geotiff = false, int nodata = 0) : TiffEncoder(image, -1, is_geotiff, nodata) {
149149
// zstream.zalloc = Z_NULL;
150150
// zstream.zfree = Z_NULL;
151151
// zstream.opaque = Z_NULL;

include/rok4/datastream/TiffEncoder.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ class TiffEncoder : public DataStream {
4848
Image *image;
4949
int line; // Ligne courante
5050
bool is_geotiff;
51+
int nodata;
5152

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

6162
public:
6263

63-
TiffEncoder(Image *image, int line, bool is_geotiff);
64-
TiffEncoder(Image *image, int line);
64+
TiffEncoder(Image *image, int line, bool is_geotiff, int nodata);
6565
~TiffEncoder();
66-
67-
static DataStream* get_tiff_encoder ( Image* image, Rok4Format::eFormat format, bool is_geotiff = false );
6866

6967
virtual size_t read ( uint8_t *buffer, size_t size );
7068
virtual bool eof();

include/rok4/datastream/TiffHeader.h

Lines changed: 725 additions & 789 deletions
Large diffs are not rendered by default.

include/rok4/datastream/TiffLZWEncoder.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ class TiffLZWEncoder : public TiffEncoder {
9292
}
9393

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

9797
~TiffLZWEncoder() {
9898
}

include/rok4/datastream/TiffPackBitsEncoder.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ class TiffPackBitsEncoder : public TiffEncoder {
103103
}
104104

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

108108
}
109109
~TiffPackBitsEncoder() {

include/rok4/datastream/TiffRawEncoder.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ class TiffRawEncoder : public TiffEncoder {
8181
}
8282

8383
public:
84-
TiffRawEncoder ( Image *image, bool is_geotiff = false ) : TiffEncoder( image, -1, is_geotiff ) {}
84+
TiffRawEncoder ( Image *image, bool is_geotiff = false, int nodata = 0 ) : TiffEncoder( image, -1, is_geotiff, nodata ) {}
8585
~TiffRawEncoder() {
8686
}
8787

include/rok4/style/Style.h

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -263,16 +263,24 @@ private :
263263
* \~french \brief Valeur de nodata après style
264264
* \~english \brief Style nodata value
265265
*/
266-
int* get_output_nodata_value () {
267-
return output_nodata_value;
266+
int* get_output_nodata_value (int* default_nodata) {
267+
if (is_identity()) {
268+
return default_nodata;
269+
} else {
270+
return output_nodata_value;
271+
}
268272
}
269273

270274
/**
271275
* \~french \brief Valeur de nodata attendue dans les données en entrée
272276
* \~english \brief Nodata value expected in input data
273277
*/
274-
int* get_input_nodata_value () {
275-
return input_nodata_value;
278+
int* get_input_nodata_value (int* default_nodata) {
279+
if (is_identity()) {
280+
return default_nodata;
281+
} else {
282+
return input_nodata_value;
283+
}
276284
}
277285

278286
/**

src/datastream/TiffEncoder.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
#include "datastream/TiffPackBitsEncoder.h"
4444

4545

46-
TiffEncoder::TiffEncoder(Image *image, int line, bool is_geotiff): image(image), line(line), is_geotiff(is_geotiff) {
46+
TiffEncoder::TiffEncoder(Image *image, int line, bool is_geotiff, int nodata): image(image), line(line), is_geotiff(is_geotiff), nodata(nodata) {
4747
tmp_buffer = NULL;
4848
tmp_buffer_pos = 0;
4949
tmp_buffer_size = 0;
@@ -71,7 +71,7 @@ size_t TiffEncoder::read(uint8_t* buffer, size_t size) {
7171
BOOST_LOG_TRIVIAL(debug) << "TiffEncoder : preparation de l'en-tete";
7272
prepare_header();
7373
if ( is_geotiff ){
74-
this->header = TiffHeader::insert_geo_tags(image, this->header, &(this->header_size) );
74+
this->header = TiffHeader::insert_geo_tags(image, this->header, &(this->header_size), nodata );
7575
}
7676
}
7777

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

0 commit comments

Comments
 (0)