Skip to content
Commits on Source (26)
......@@ -123,7 +123,7 @@ GDAL_INCLUDE = -I$(GDAL_ROOT)/port -I$(GDAL_ROOT)/gcore \
# libtool targets and help variables
LIBGDAL := libgdal.la
LIBGDAL_CURRENT := 25
LIBGDAL_REVISION := 0
LIBGDAL_REVISION := 2
LIBGDAL_AGE := 5
# native build targets and variables
......@@ -476,13 +476,9 @@ PDF_PLUGIN = @PDF_PLUGIN@
#
HAVE_POPPLER = @HAVE_POPPLER@
POPPLER_HAS_OPTCONTENT = @POPPLER_HAS_OPTCONTENT@
POPPLER_BASE_STREAM_HAS_TWO_ARGS = @POPPLER_BASE_STREAM_HAS_TWO_ARGS@
POPPLER_0_20_OR_LATER = @POPPLER_0_20_OR_LATER@
POPPLER_0_23_OR_LATER = @POPPLER_0_23_OR_LATER@
POPPLER_0_58_OR_LATER = @POPPLER_0_58_OR_LATER@
POPPLER_0_69_OR_LATER = @POPPLER_0_69_OR_LATER@
POPPLER_INC = @POPPLER_INC@
POPPLER_MAJOR_VERSION = @POPPLER_MAJOR_VERSION@
POPPLER_MINOR_VERSION = @POPPLER_MINOR_VERSION@
POPPLER_INC = @POPPLER_CFLAGS@
POPPLER_PLUGIN_LIB = @POPPLER_PLUGIN_LIB@
#
......
......@@ -4,7 +4,6 @@ GDAL_OBJ = $(GDAL_ROOT)/frmts/o/*.o \
$(GDAL_ROOT)/gcore/*.o \
$(GDAL_ROOT)/port/*.o \
$(GDAL_ROOT)/alg/*.o \
$(GDAL_ROOT)/third_party/o/*.o \
$(GDAL_ROOT)/apps/commonutils.o \
$(GDAL_ROOT)/apps/gdalinfo_lib.o \
$(GDAL_ROOT)/apps/gdal_translate_lib.o \
......@@ -22,6 +21,10 @@ ifeq ($(GNM_ENABLED),yes)
GDAL_OBJ += $(GDAL_ROOT)/gnm/*.o $(GDAL_ROOT)/gnm/gnm_frmts/o/*.o
endif
ifeq ($(HAVE_LERC),yes)
GDAL_OBJ += $(GDAL_ROOT)/third_party/o/*.o
endif
include ./ogr/file.lst
GDAL_OBJ += $(addprefix ./ogr/,$(OBJ))
......
= GDAL/OGR 2.4.2 Release Notes =
The 2.4.2 release is a bug fix release.
== Build ==
* Fix build --with-curl --without-threads (#1386)
* Fix build on netBSD 8
* Fix warnings with GCC 9
* Add support for Poppler 0.75.0 (#1388), 0.76.0
== Port ==
* /vsitar/: handle .tar file header with space padding instead of 0 for file size (#1396)
* /vsicurl/: allow 'Connection timed out' CURL errors as candidate for HTTP retry
* /vsicurl/: GetFileSize(): when HEAD request does not return Content-Length header, retry with GET
* /vsicurl/: automatically detect signed URLs where host ends with a port number; also detect signed URLs as created with the AWS4-HMAC-SHA256 method (#1456)
* /vsis3/: for a long living file handle, refresh credentials coming from EC2/AIM (#1593)
== GDAL algorithms ==
* GDALCreateReprojectionTransformerEx(): do not emit error if reverse transformation fails, and fix crash when trying to use null reverse transformation
* Warper: fix GDAL 2.3 regression in a situation with source nodata value, multiple bands and nearest resampling where the logic to detect which source pixels are nodata was inverted (#1656)
* Contour generator: fix SegmentMerger list iterator skipping and out of bounds error. (#1670)
* Rasterize: fix crash when working buffer is larger than 2GB (fix also gvBurnPoint) (#1338)
== GDAL core ==
* GDALInvGeoTransform(): make it work with scale and rotation/skew coefficients of small absolute value (#1615)
* GDALCopyWholeRasterGetSwathSize(): fix potential int overflows for big values of GDAL_SWATH_SIZE or GDAL_CACHEMAX
* PAM: preserve existing metadata when setting new one (#1430)
== GDAL utliities ==
* gdal_calc.py: Fixed NaN-streaking in output images when the --allBands option is given to tiled images, and removed redundant calculation of nXValid.
* gdal_polygonize.py: fix outputing to geojson without explicit -f switch (#1533)
* gdal_contour: remove explicit width/precision=12/3 of the elev field (#1487)
== GDAL drivers ==
AIGRID / AVCBin driver:
* fix filename case adjustment that failed on /vsi filesystems (#1385)
BAG driver:
* fix potential nullptr deref on corrupted file
ENVI driver:
* add read support for reading GCPs (#1528), and fix off-by-one offset on line,pixel on reading GCP
GTiff driver:
* make WEBP_LEVEL to be honored in Create() mode (#1594)
* PushMetadataToPam(): early exit when PAM is disabled, to avoid error messages
* do not generate a TIFFTAG_GDAL_METADATA with color interpretation information for JPEG YCbCr compression
* Internal libtiff: TIFFWriteEncodedStrip/TIFFWriteEncodedTile: fix rewriting of LZW-compressed data (#1439)
GXF driver:
* avoid closing the file pointer before being sure this is a GXF driver, otherwise this can prevent the opening of some raw format files (#1521)
HDF5 driver:
* fix handling of attributes of type SCHAR, UCHAR, USHORT and UINT (https://github.com/mapbox/rasterio/issues/1663)
* detect nodata from netCDF _FillValue; add more strict checks for accepting datasets for GCP, and handle nodata in GCP too (#1451)
ISIS3 driver:
* fix parsing of lists in JSon metadata, and quote string items when writing lists when needed (#1510)
KEA driver:
* return error when deleting metadata item rather than crashing (#1681)
MRF driver:
* prevent integer overflow
MrSID driver:
* fix potential crash when a zoom level cannot be opened
netCDF driver:
* avoid inappropriate shift by -360 when attribute axis=X is set (#1440)
NITF driver:
* fix parsing of SENSRB TRE (#1520)
PDF driver:
* avoid possible assertion in PDFium backend on corrupted files
PDS3 driver:
* add support for ENCODING_TYPE=DCT_DECOMPRESSED (#1457)
RS2 driver:
* add half-pixel shift to reported GCP line and column numbers (#1666)
VRT driver:
* Python pixel functions: also probe libpython3.Xm.so.1.0 (#1660)
WMS driver:
* use proper JSon parsing for ESRI MapServer document (#1416)
XYZ driver:
* fix regression regarding header lines that are not X,Y,Z (#1472)
== OGR core ==
* segmentize(): fix 2.4.1 regression when 2 points are really close compared to the segmentizatin distance (#1414). Also handle the M dimension
* RawDataset: use generic RasterIO() implementation when non-nearest resampling is asked (#1301)
== OGR utilities ==
* ogrmerge.py: add shared='1' to speed-up -single mode with many layers
== OGR drivers ==
EEDA driver:
* Switch to v1alpha API
ElasticSearch driver:
* set 'application/json' in RunRequest() with POST (#1628)
* GeoJSON type field should be mapped as text in ES>=5
* Fix _mapping url
FileGDB/OpenFileGDB:
* be robust when winding order of outer ring is incorrect (#1369)
GeoJSON driver:
* fix recognizing some documents with members sorted alphabetically (#1537)
* avoid SetFeature() to repeat first feature when looping over features (#1687)
GeoJSONSeq driver:
* be more robust to invalid objects, and fixes performance issue on corrupted files. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=13770.
GML driver:
* GML/WFS: add minimum support for 'hexBinary' type (as string) (#1375)
GMLAS driver:
* avoid null pointer dereference on some schemas
* do not use space as separator for schema filename in XSD open option (#1452)
GMT:
* use file extension based detection to accept files without header (#1461)
GPKG driver:
* change default value of OGR_GPKG_FOREIGN_KEY_CHECK to NO, so as to avoid issues in downstream software
* insert more accurate spatial extent in gpkg_contents
* fix memory leak in case of corrupted database. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=14683.
* set sqlite3_busy_timeout, handle SQLITE_BUSY during tile read (#1370)
PDS driver:
* fix heap-buffer-overflow in error code path. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=14512.
PLScenes driver:
* plscenesconf.json: add missing fields for PSOrthoTile
PostgreSQL driver:
* do not attempt to create VARCHAR(n) columns with n >= 10485760 (#1508)
Shapefile driver:
* better deal with empty .shp+.shx and SHAPE_RESTORE_SHX (#1525)
* launder layer name to get Windows compatible filename
* DeleteLayer(): make it delete .cpg, .sbn, .sbx, .qpj and other sidecar files (#1405)
WaSP driver:
* on creation, make sure the layer geometry type set on the feature definition is wkbLineString25D
WFS3 driver:
* handle paging wth missing type for rel:next, and better deal with user:pwd in URL
* use 'id' attribute of collection items, if 'name' not available
= GDAL/OGR 2.4.1 Release Notes =
The 2.4.1 release is a bug fix release.
== Build ==
Unix:
* Fix build with OpenBSD which doesn't support RLIMIT_AS (#1163)
* fix build --without-lerc (#1224)
* configure: fix netcdf_mem.h detection in netcdf 4.6.2 (#1328)
Windows:
* Fix build issue for builds without curl (#1251)
* nmake.opt: remove unicode character at line starting with '# 4275' that apparently cause build issues with some MSVC versions (#1169)
All:
* Poppler: revision version management. Drop support for ancient versions older than 0.23.0
* Add support for Poppler 0.72.0 and 0.73.0 (#1207, #1208)
== Port ==
* cpl_vsi.h: fix include for C use
* VSICurlHandle::ReadMultiRange(): use default implementation if there is a single range. May help to improve performance for #1206
* VSIGZipWriteHandleMT: avoid potential deadlock in case of error
* /vsihdfs/: fix Read() when more than one hdfsRead call is needed (#1349)
== GDAL utilities ==
* gdalwarp -crop_to_cutline: do not round computed target extent to be aligned on the grid of the source raster if -tr is set (restore partially pre 2.4 behaviour) (#1173)
* gdalwarp: assume -tap when using -crop_to_cutline, -tr and -wo CUTLINE_ALL_TOUCHED=TRUE, so as to avoid issues with polygons smaller than 1x1 pixels (#1360)
* gdal2tiles: give local tile layer and basemap layers same min/max zoom levels as generated tile cache (#1074)
* gdal2tiles: fix breakage of openlayers.html getURL() javascript function, introduced in GDAL 2.3.3 / 2.4.0 (#1127)
* gdal2tiles: prevent accidental copy of full GeoTIFF into temporary .vrt file
* Fix double-free in StripIrrelevantOptions() (triggered by gdalinfo / ogrinfo --format)
* gdal_retile.py: use nodata value from origin dataset
== GDAL algorithms ==
* rasterize: fix crash when working buffer is larger than 2GB (#1338)
== GDAL drivers ==
COSAR driver:
* avoid out-of-bound write on corrupted dataset. Fixes OSS Fuzz #12360
GTiff driver:
* only report scale/offset deduced from ModelTiepointTag and ModelPixelScaleTag if the SRS has a vertical component (and thus currently if GTIFF_REPORT_COMPD_CS is set) (https://issues.qgis.org/issues/20493)
* Lerc codec: properly initialize state after Create() so that BuildOverviews() succeed (#1257)
KMLSuperOverlay driver:
* report color table of single overlay datasets, and also handle some variation in the KML structure (https://issues.qgis.org/issues/20173)
JPEG driver:
* fix GDAL 2.3.0 performance regression when decoding JPEG (or GPKG using JPEG) images (#1324)
netCDF driver:
* fix crash when opening a dataset with an attribute of length 0 (#1303)
PDSv3 driver:
* fix decoding of band interleaved images (such as for CRISM HSP) (#1239)
XPM driver:
* fix read heap buffer overflow on corrupted image. Fixes OSS Fuzz #13455
== OGR core ==
* Polyhedral surface: fix importFromWKT to properly fix Z/M flag
* OGRGeometryFactory::GetCurveParmeters(): fix assertion when coordinates are very near 0 (relates to OSS Fuzz #13408)
* OGRLineString::segmentize(): fix issues when segment length is divisible by maxlength (#1341)
== OGRSpatialReference ==
* Coordinate transformation: do not apply +towgs84 if it is present only in one one of the CRS, when using PROJ >= 5 (#1156)
== OGR drivers ==
CSW driver:
* fix crash when geometry parsing fails (#1248)
DXF driver:
* fix double-free issue in case of writing error. Fixes OSS Fuzz #13516
Elasticsearch driver:
* Fix index comparison bug when a index have at least one mapping
GeoJSON driver:
* speed-up random reading with GetFeature() to retrieve performance similar to GDAL 2.2 or before (https://issues.qgis.org/issues/21085)
GeoPackage driver:
* allow srs_id with negative values
GML driver:
* write SRSName element in .gfs when parsing a GML file with srsName only on top-level boundedBy element (#1210)
* Add "FeatureType" to list of suffixes recognized by XSD parser for compatibility with schemas produced by ArcGIS Server
* Fix assertion in CPLGetValueType when testing non-ASCII chars
MITAB driver:
* .tab: fix deleting a feature without geometry (#1232)
* adapt dynamically default projection bounds to false_easting/false_northing values (#1316)
* avoid potential assertion or stack buffer overflow on corrupted .ind files. Fixes OSS Fuzz #11999.
* prevent potential infinite recursion on broken indexes. Fixes OSS Fuzz #12739.
MSSQLSpatial driver:
* Add option to expose the FID column as a feature attribute (#1227)
ODS driver:
* allow opening tables with empty cells with huge values of columns-repeated attribute at end of line (#1243)
* aavoid potential null pointer dereference when writing to corrupted filename. Fixes OSS Fuz #12976.
PDF driver:
* avoid division by zero when generating from vector content whose bounding box is almost a horizontal or vertical line. Fixes OSS Fuzz #13408
PGDump driver:
* emit correct SQL statement when UNLOGGED=ON
Selafin driver:
* avoid null pointer dereference on corrupted files. Fixes OSS Fuzz #12356
VFK driver:
* fix regression where curved geometries were ignored (#1351)
== Python bindings ==
* fix Dataset.ReadAsRaster() on CInt16 data type (#1186)
= GDAL/OGR 2.4.0 Release Notes =
 
== In a nutshell... ==
......
......@@ -52,7 +52,7 @@
#include "ogr_spatialref.h"
#include "ogrsf_frmts.h"
CPL_CVSID("$Id: gdalrasterize.cpp 6ef13199b493973da285decbfcd5e2a763954b97 2018-06-07 05:46:42 -0400 luzpaz $")
CPL_CVSID("$Id: gdalrasterize.cpp 844f6a3820c0897dd79adba03472523c705c5c6b 2019-03-27 12:38:47 +0200 Ari Jolma $")
/************************************************************************/
/* gvBurnScanline() */
......@@ -89,8 +89,8 @@ void gvBurnScanline( void *pCBData, int nY, int nXStart, int nXEnd,
unsigned char *pabyInsert =
psInfo->pabyChunkBuf
+ iBand * psInfo->nXSize * psInfo->nYSize
+ nY * psInfo->nXSize + nXStart;
+ static_cast<GSpacing>(iBand) * psInfo->nXSize * psInfo->nYSize
+ static_cast<GSpacing>(nY) * psInfo->nXSize + nXStart;
if( psInfo->eMergeAlg == GRMA_Add ) {
int nPixels = nXEnd - nXStart + 1;
......@@ -113,8 +113,8 @@ void gvBurnScanline( void *pCBData, int nY, int nXStart, int nXEnd,
double *padfInsert =
(reinterpret_cast<double *>(psInfo->pabyChunkBuf))
+ iBand * psInfo->nXSize * psInfo->nYSize
+ nY * psInfo->nXSize + nXStart;
+ static_cast<GSpacing>(iBand) * psInfo->nXSize * psInfo->nYSize
+ static_cast<GSpacing>(nY) * psInfo->nXSize + nXStart;
if( psInfo->eMergeAlg == GRMA_Add ) {
while( nPixels-- > 0 )
......@@ -147,8 +147,8 @@ void gvBurnPoint( void *pCBData, int nY, int nX, double dfVariant )
for( int iBand = 0; iBand < psInfo->nBands; iBand++ )
{
unsigned char *pbyInsert = psInfo->pabyChunkBuf
+ iBand * psInfo->nXSize * psInfo->nYSize
+ nY * psInfo->nXSize + nX;
+ static_cast<GSpacing>(iBand) * psInfo->nXSize * psInfo->nYSize
+ static_cast<GSpacing>(nY) * psInfo->nXSize + nX;
double dfVal;
if( psInfo->eMergeAlg == GRMA_Add ) {
dfVal = *pbyInsert + ( psInfo->padfBurnValue[iBand] +
......@@ -172,8 +172,8 @@ void gvBurnPoint( void *pCBData, int nY, int nX, double dfVariant )
for( int iBand = 0; iBand < psInfo->nBands; iBand++ )
{
double *pdfInsert = reinterpret_cast<double *>(psInfo->pabyChunkBuf)
+ iBand * psInfo->nXSize * psInfo->nYSize
+ nY * psInfo->nXSize + nX;
+ static_cast<GSpacing>(iBand) * psInfo->nXSize * psInfo->nYSize
+ static_cast<GSpacing>(nY) * psInfo->nXSize + nX;
if( psInfo->eMergeAlg == GRMA_Add ) {
*pdfInsert += ( psInfo->padfBurnValue[iBand] +
......
......@@ -57,7 +57,7 @@
#include "ogr_srs_api.h"
CPL_CVSID("$Id: gdaltransformer.cpp 9ff327806cd64df6d73a6c91f92d12ca0c5e07df 2018-04-07 20:25:06 +0200 Even Rouault $")
CPL_CVSID("$Id: gdaltransformer.cpp a2ed4ac165fa3d0622d71849890b3e4ddaebecab 2019-06-17 18:33:13 +0200 Even Rouault $")
CPL_C_START
void *GDALDeserializeGCPTransformer( CPLXMLNode *psTree );
......@@ -2422,8 +2422,10 @@ void *GDALCreateReprojectionTransformer( const char *pszSrcWKT,
CPLCalloc(sizeof(GDALReprojectionTransformInfo), 1));
psInfo->poForwardTransform = poForwardTransform;
CPLPushErrorHandler(CPLQuietErrorHandler);
psInfo->poReverseTransform =
OGRCreateCoordinateTransformation(&oDstSRS, &oSrcSRS);
CPLPopErrorHandler();
memcpy( psInfo->sTI.abySignature,
GDAL_GTI2_SIGNATURE,
......@@ -2489,8 +2491,24 @@ int GDALReprojectionTransform( void *pTransformArg, int bDstToSrc,
int bSuccess;
if( bDstToSrc )
{
if( psInfo->poReverseTransform == nullptr )
{
CPLError(CE_Failure, CPLE_AppDefined,
"Inverse coordinate transformation cannot be instantiated");
if( panSuccess )
{
for( int i = 0; i < nPointCount; i++ )
panSuccess[i] = FALSE;
}
bSuccess = false;
}
else
{
bSuccess = psInfo->poReverseTransform->TransformEx(
nPointCount, padfX, padfY, padfZ, panSuccess );
}
}
else
bSuccess = psInfo->poForwardTransform->TransformEx(
nPointCount, padfX, padfY, padfZ, panSuccess );
......@@ -3306,8 +3324,11 @@ int CPL_STDCALL GDALInvGeoTransform( double *gt_in, double *gt_out )
// Compute determinate.
const double det = gt_in[1] * gt_in[5] - gt_in[2] * gt_in[4];
const double magnitude = std::max(
std::max(fabs(gt_in[1]), fabs(gt_in[2])),
std::max(fabs(gt_in[4]), fabs(gt_in[5])));
if( fabs(det) < 0.000000000000001 )
if( fabs(det) <= 1e-10 * magnitude * magnitude )
return 0;
const double inv_det = 1.0 / det;
......
......@@ -71,7 +71,7 @@
#endif
CPL_CVSID("$Id: gdalwarpkernel.cpp 805bf6906b8af247eab8dee060e215d6b8e5c7ae 2018-11-18 12:25:32 +0100 Even Rouault $")
CPL_CVSID("$Id: gdalwarpkernel.cpp 33038ab2ada763440be99c4622635eac327e764b 2019-06-18 18:16:34 +0200 Even Rouault $")
constexpr double BAND_DENSITY_THRESHOLD = 0.0000000001;
constexpr float SRC_DENSITY_THRESHOLD = 0.000000001f;
......@@ -1930,7 +1930,7 @@ static bool GWKGetPixelValueReal( GDALWarpKernel *poWK, int iBand,
if( poWK->papanBandSrcValid != nullptr
&& poWK->papanBandSrcValid[iBand] != nullptr
&& ((poWK->papanBandSrcValid[iBand][iSrcOffset>>5]
&& !((poWK->papanBandSrcValid[iBand][iSrcOffset>>5]
& (0x01 << (iSrcOffset & 0x1f)))) )
{
*pdfDensity = 0.0;
......
......@@ -109,10 +109,16 @@ struct SegmentMerger
for ( auto& l : lines_ ) {
const int levelIdx = l.first;
for ( auto it = l.second.begin(); it != l.second.end(); it++ ) {
auto it = l.second.begin();
while ( it != l.second.end() ) {
if ( ! it->isMerged ) {
// Note that emitLine_ erases `it` and returns an iterator advanced
// to the next element.
it = emitLine_( levelIdx, it, /* closed */ false );
}
else {
++it;
}
}
}
}
......
......@@ -45,7 +45,7 @@
#include "cpl_vsi.h"
#include "gdal.h"
CPL_CVSID("$Id: rasterfill.cpp 659a9911890ce155f5b822462d1bc7804e642644 2018-08-07 22:13:41 +0200 Even Rouault $")
CPL_CVSID("$Id: rasterfill.cpp e7b66104a47ca8263fc6aed748b9d28c19c0a93e 2018-12-12 22:09:01 +0100 Juergen E. Fischer $")
/************************************************************************/
/* GDALFilterLine() */
......@@ -397,7 +397,7 @@ if( quad_value != nNoDataVal ) \
* <li>TEMP_FILE_DRIVER=gdal_driver_name. For example MEM.</li>
* <li>NODATA=value (starting with GDAL 2.4).
* Source pixels at that value will be ignored by the interpolator. Warning:
* currently this will not be honored by smothing passes.</li>
* currently this will not be honored by smoothing passes.</li>
* </ul>
* @param pfnProgress the progress function to report completion.
* @param pProgressArg callback data for progress function.
......
......@@ -37,7 +37,7 @@
#include "ogr_srs_api.h"
#include "commonutils.h"
CPL_CVSID("$Id: gdal_contour.cpp b9ddc19f9ccd776cac9388f260aebc24439f10aa 2018-10-09 11:45:33 +0200 Julien Cabieces $")
CPL_CVSID("$Id: gdal_contour.cpp 3895dc399ec85aa97a1a88949c6acdfac807d745 2019-04-30 13:00:55 +0200 Even Rouault $")
/************************************************************************/
/* ArgIsNumeric() */
......@@ -73,8 +73,6 @@ static void Usage(const char* pszErrorMsg = nullptr)
static void CreateElevAttrib(const char* pszElevAttrib, OGRLayerH hLayer)
{
OGRFieldDefnH hFld = OGR_Fld_Create( pszElevAttrib, OFTReal );
OGR_Fld_SetWidth( hFld, 12 );
OGR_Fld_SetPrecision( hFld, 3 );
OGRErr eErr = OGR_L_CreateField( hLayer, hFld, FALSE );
OGR_Fld_Destroy( hFld );
if( eErr == OGRERR_FAILURE )
......
......@@ -59,7 +59,7 @@
#include "ogr_srs_api.h"
#include "vrtdataset.h"
CPL_CVSID("$Id: gdalwarp_lib.cpp 51cb6592009fb12c1794b3a282d2a4b6114a7cb6 2018-10-15 22:05:35 +0200 Even Rouault $")
CPL_CVSID("$Id: gdalwarp_lib.cpp f8917ecb5840eb06e40a2c8d38c537657424077a 2019-03-13 17:05:37 +0100 Even Rouault $")
/************************************************************************/
/* GDALWarpAppOptions */
......@@ -329,7 +329,8 @@ static CPLErr CropToCutline( OGRGeometryH hCutline, char** papszTO,
char** papszWarpOptions,
int nSrcCount, GDALDatasetH *pahSrcDS,
double& dfMinX, double& dfMinY,
double& dfMaxX, double &dfMaxY )
double& dfMaxX, double &dfMaxY,
const GDALWarpAppOptions* psOptions )
{
// We could possibly directly reproject from cutline SRS to target SRS,
// but when applying the cutline, it is reprojected to source raster image
......@@ -462,7 +463,8 @@ static CPLErr CropToCutline( OGRGeometryH hCutline, char** papszTO,
dfMinY = sEnvelope.MinY;
dfMaxX = sEnvelope.MaxX;
dfMaxY = sEnvelope.MaxY;
if( hCTSrcToDst == nullptr && nSrcCount > 0 && pahSrcDS[0] != nullptr)
if( hCTSrcToDst == nullptr && nSrcCount > 0 && pahSrcDS[0] != nullptr &&
psOptions->dfXRes == 0.0 && psOptions->dfYRes == 0.0 )
{
// No raster reprojection: stick on exact pixel boundaries of the source
// to preserve resolution and avoid resampling
......@@ -955,7 +957,8 @@ GDALDatasetH GDALWarp( const char *pszDest, GDALDatasetH hDstDS, int nSrcCount,
psOptions->papszWarpOptions,
nSrcCount, pahSrcDS,
psOptions->dfMinX, psOptions->dfMinY,
psOptions->dfMaxX, psOptions->dfMaxY );
psOptions->dfMaxX, psOptions->dfMaxY,
psOptions );
if(eError == CE_Failure)
{
GDALWarpAppOptionsFree(psOptions);
......@@ -2628,7 +2631,9 @@ GDALWarpCreateOutput( int nSrcCount, GDALDatasetH *pahSrcDS, const char *pszFile
psOptions->dfMinY = adfDstGeoTransform[3] + adfDstGeoTransform[5] * nLines;
}
if ( psOptions->bTargetAlignedPixels )
if ( psOptions->bTargetAlignedPixels ||
(psOptions->bCropToCutline &&
CPLFetchBool(psOptions->papszWarpOptions, "CUTLINE_ALL_TOUCHED", false)) )
{
psOptions->dfMinX = floor(psOptions->dfMinX / psOptions->dfXRes) * psOptions->dfXRes;
psOptions->dfMaxX = ceil(psOptions->dfMaxX / psOptions->dfXRes) * psOptions->dfXRes;
......
......@@ -7,27 +7,36 @@ sudo apt-get purge -y libgeos* libspatialite*
sudo apt-get remove libpq* postgresql*
find /etc/apt/sources.list.d
sudo mv /etc/apt/sources.list.d/pgdg* /tmp
sudo add-apt-repository -y ppa:ubuntugis/ubuntugis-unstable
sudo add-apt-repository -y ppa:ubuntugis/ppa
sudo add-apt-repository -y ppa:ubuntugis/ubuntugis-testing
#sudo add-apt-repository -y ppa:marlam/gta
sudo apt-get update
# install test dependencies
# note: pip 9 is installed on the box, but it hits a strange error after upgrading setuptools.
# so we install a newer pip first.
sudo apt-get remove -y python-*
sudo apt-get install python-minimal
curl -sSL 'https://bootstrap.pypa.io/get-pip.py' | sudo python
(cd autotest; sudo -H pip install -U -r ./requirements.txt)
sudo pip install lxml flake8 numpy
# MSSQL: server side
docker pull microsoft/mssql-server-linux:2017-latest
sudo docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=DummyPassw0rd' -p 1433:1433 --name sql1 -d microsoft/mssql-server-linux:2017-latest
sleep 10
docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd -l 30 -S localhost -U SA -P DummyPassw0rd -Q "CREATE DATABASE TestDB;"
sudo apt-get install -y --allow-unauthenticated ccache python-numpy libpng12-dev libjpeg-dev libgif-dev liblzma-dev libgeos-dev libcurl4-gnutls-dev libproj-dev libxml2-dev libexpat-dev libxerces-c-dev libnetcdf-dev netcdf-bin libpoppler-dev libspatialite-dev gpsbabel swig libhdf4-alt-dev libhdf5-serial-dev libpodofo-dev poppler-utils libfreexl-dev unixodbc-dev libwebp-dev libepsilon-dev liblcms2-2 libpcre3-dev mercurial cmake libcrypto++-dev postgresql-9.3-postgis-2.2 postgresql-9.3-postgis-scripts libpq-dev
sudo apt-get install -y --allow-unauthenticated ccache libpng12-dev libjpeg-dev libgif-dev liblzma-dev libgeos-dev libcurl4-gnutls-dev libproj-dev libxml2-dev libexpat-dev libxerces-c-dev libnetcdf-dev netcdf-bin libpoppler-dev libspatialite-dev gpsbabel swig libhdf4-alt-dev libhdf5-serial-dev libpodofo-dev poppler-utils libfreexl-dev unixodbc-dev libwebp-dev libepsilon-dev liblcms2-2 libpcre3-dev mercurial cmake libcrypto++-dev postgresql-9.3-postgis-2.2 postgresql-9.3-postgis-scripts libpq-dev
# libgta-dev
sudo apt-get install -y python-lxml
sudo apt-get install -y python-pip
sudo apt-get install -y libqhull-dev
sudo apt-get install -y libogdi3.2-dev
# MONO
sudo apt-get install -y mono-mcs libmono-system-drawing4.0-cil
# Boost for Mongo
#sudo apt-get install -y libboost-regex-dev libboost-system-dev libboost-thread-dev
sudo pip install flake8
sudo apt-get install doxygen texlive-latex-base
# flake8 codes to just emulate pyflakes (http://flake8.pycqa.org/en/latest/user/error-codes.html)
FLAKE8="flake8 --select=F401,F402,F403,F404,F405,F406,F407,F601,F602,F621,F622,F631,F701,F702,F703,F704,F705,F706,F707,F721,F722,F811,F812,F821,F822,F823,F831,F841,F901"
......@@ -84,13 +93,14 @@ sudo make install PREFIX=/usr ZSTD_LEGACY_SUPPORT=0 CFLAGS=-O1
cd ../..
# MSSQL: client side
sudo bash -c "curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -"
sudo bash -c "curl https://packages.microsoft.com/config/ubuntu/14.04/prod.list | tee /etc/apt/sources.list.d/msprod.list"
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql17
# Disabled because of 'Failed to fetch https://packages.microsoft.com/ubuntu/14.04/prod/dists/trusty/main/binary-amd64/Packages.gz Hash Sum mismatch'
#sudo bash -c "curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -"
#sudo bash -c "curl https://packages.microsoft.com/config/ubuntu/14.04/prod.list | tee /etc/apt/sources.list.d/msprod.list"
#sudo apt-get update
#sudo ACCEPT_EULA=Y apt-get install -y msodbcsql17
# Nasty: force reinstallation of unixodbc-dev since the previous line installed unixodbc 2.3.1 from microsoft repo, which lacks the -dev package
# DONT DO THAT ON YOUR PRODUCTION SERVER.
# DON'T DO THAT ON YOUR PRODUCTION SERVER.
wget http://mirrors.edge.kernel.org/ubuntu/pool/main/u/unixodbc/libodbc1_2.3.1-4.1_amd64.deb
wget http://mirrors.edge.kernel.org/ubuntu/pool/main/u/unixodbc/odbcinst1debian2_2.3.1-4.1_amd64.deb
wget http://mirrors.edge.kernel.org/ubuntu/pool/main/u/unixodbc/odbcinst_2.3.1-4.1_amd64.deb
......
......@@ -41,7 +41,7 @@ make USER_DEFS="-Wextra -Werror" -j3
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/jre/bin:$PATH
java -version
make
(make 2>/tmp/log.txt || cat /tmp/log.txt)
mv java.opt.bak java.opt
)
......@@ -51,7 +51,7 @@ make
cd ../..
cd swig/csharp
make generate
make
make 2>/tmp/log.txt || cat /tmp/log.txt
cd ../..
sudo rm -f /usr/lib/libgdal.so*
sudo rm -f /usr/include/gdal*.h /usr/include/ogr*.h /usr/include/gnm*.h /usr/include/cpl*.h
......
......@@ -36,9 +36,6 @@ wget http://download.osgeo.org/gdal/data/pgeo/PGeoTest.zip
unzip PGeoTest.zip
cd ../../..
# install test dependencies
sudo -H pip install -U -r ./requirements.txt
export PYTHONPATH=/usr/lib/python2.7/dist-packages
# Run ogr_fgdb.py in isolation from the rest
......
......@@ -11,7 +11,7 @@ chroot "$chroot" ccache -s
chroot "$chroot" sh -c "cd $PWD && fossil clone https://www.gaia-gis.it/fossil/libspatialite libspatialite.fossil && mkdir sl && cd sl && fossil open ../libspatialite.fossil && CCACHE_CPP2=yes CC='ccache $PWD/clang+llvm-3.9.0-x86_64-linux-gnu-ubuntu-16.04/bin/clang' CXX='ccache $PWD/clang+llvm-3.9.0-x86_64-linux-gnu-ubuntu-16.04/bin/clang' ./configure --prefix=/usr --disable-geos370 && CCACHE_CPP2=yes make -j3"
sudo chroot "$chroot" sh -c "cd $PWD && cd sl && make -j3 install"
chroot "$chroot" sh -c "cd $PWD && fossil clone https://www.gaia-gis.it/fossil/librasterlite2 librasterlite2.fossil && mkdir rl2 && cd rl2 && fossil open ../librasterlite2.fossil && CCACHE_CPP2=yes CC='ccache $PWD/clang+llvm-3.9.0-x86_64-linux-gnu-ubuntu-16.04/bin/clang' CXX='ccache $PWD/clang+llvm-3.9.0-x86_64-linux-gnu-ubuntu-16.04/bin/clang' ./configure --prefix=/usr && CCACHE_CPP2=yes make -j3"
chroot "$chroot" sh -c "cd $PWD && fossil clone https://www.gaia-gis.it/fossil/librasterlite2 librasterlite2.fossil && mkdir rl2 && cd rl2 && fossil open ../librasterlite2.fossil && CCACHE_CPP2=yes CC='ccache $PWD/clang+llvm-3.9.0-x86_64-linux-gnu-ubuntu-16.04/bin/clang' CXX='ccache $PWD/clang+llvm-3.9.0-x86_64-linux-gnu-ubuntu-16.04/bin/clang' ./configure --prefix=/usr --disable-lz4 --disable-zstd && CCACHE_CPP2=yes make -j3"
sudo chroot "$chroot" sh -c "cd $PWD && cd rl2 && make -j3 install"
chroot "$chroot" sh -c "cd $PWD/gdal && CCACHE_CPP2=yes CC='ccache $PWD/clang+llvm-3.9.0-x86_64-linux-gnu-ubuntu-16.04/bin/clang' CXX='ccache $PWD/clang+llvm-3.9.0-x86_64-linux-gnu-ubuntu-16.04/bin/clang' LDFLAGS='-lstdc++' ./configure --prefix=/usr --without-libtool --enable-debug --with-jpeg12 --with-python --with-poppler --with-podofo --with-spatialite --with-mysql --with-liblzma --with-webp --with-epsilon --with-static-proj4 --with-poppler --with-podofo --with-hdf5 --with-dods-root=/usr --with-sosi --with-mysql --with-rasterlite2 --with-fgdb=$PWD/FileGDB_API-64gcc51"
......
......@@ -11,7 +11,7 @@ chroot "$chroot" ccache -s
chroot "$chroot" sh -c "cd $PWD && fossil clone https://www.gaia-gis.it/fossil/libspatialite libspatialite.fossil && mkdir sl && cd sl && fossil open ../libspatialite.fossil && CCACHE_CPP2=yes CC='ccache gcc' CXX='ccache g++' ./configure --prefix=/usr --disable-geos370 && CCACHE_CPP2=yes make -j3"
sudo chroot "$chroot" sh -c "cd $PWD && cd sl && make -j3 install"
chroot "$chroot" sh -c "cd $PWD && fossil clone https://www.gaia-gis.it/fossil/librasterlite2 librasterlite2.fossil && mkdir rl2 && cd rl2 && fossil open ../librasterlite2.fossil && CCACHE_CPP2=yes CC='ccache gcc' CXX='ccache g++' ./configure --prefix=/usr && CCACHE_CPP2=yes make -j3"
chroot "$chroot" sh -c "cd $PWD && fossil clone https://www.gaia-gis.it/fossil/librasterlite2 librasterlite2.fossil && mkdir rl2 && cd rl2 && fossil open ../librasterlite2.fossil && CCACHE_CPP2=yes CC='ccache gcc' CXX='ccache g++' ./configure --prefix=/usr --disable-lz4 --disable-zstd && CCACHE_CPP2=yes make -j3"
sudo chroot "$chroot" sh -c "cd $PWD && cd rl2 && make -j3 install"
chroot "$chroot" sh -c "cd $PWD/gdal && CCACHE_CPP2=yes CC='ccache gcc' CXX='ccache g++' LDFLAGS='-lstdc++' ./configure --prefix=/usr --without-libtool --with-jpeg12 --with-python --with-poppler --with-spatialite --with-mysql --with-liblzma --with-webp --with-epsilon --with-static-proj4 --with-poppler --with-hdf5 --with-dods-root=/usr --with-sosi --with-mysql --with-rasterlite2 --with-fgdb=$PWD/FileGDB_API-64gcc51"
......
......@@ -668,14 +668,11 @@ PODOFO_PLUGIN_LIB
PODOFO_INC
HAVE_PODOFO
POPPLER_PLUGIN_LIB
POPPLER_INC
POPPLER_0_69_OR_LATER
POPPLER_0_58_OR_LATER
POPPLER_0_23_OR_LATER
POPPLER_0_20_OR_LATER
POPPLER_BASE_STREAM_HAS_TWO_ARGS
POPPLER_HAS_OPTCONTENT
POPPLER_MINOR_VERSION
POPPLER_MAJOR_VERSION
HAVE_POPPLER
POPPLER_LIBS
POPPLER_CFLAGS
PDF_PLUGIN
PAM_SETTING
JSON_INCLUDE
......@@ -1111,7 +1108,9 @@ HDF5_LIBS
OPENJPEG_CFLAGS
OPENJPEG_LIBS
LIBKML_CFLAGS
LIBKML_LIBS'
LIBKML_LIBS
POPPLER_CFLAGS
POPPLER_LIBS'
 
 
# Initialize some variables set by options.
......@@ -1916,6 +1915,10 @@ Some influential environment variables:
LIBKML_CFLAGS
C compiler flags for LIBKML, overriding pkg-config
LIBKML_LIBS linker flags for LIBKML, overriding pkg-config
POPPLER_CFLAGS
C compiler flags for POPPLER, overriding pkg-config
POPPLER_LIBS
linker flags for POPPLER, overriding pkg-config
 
Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.
......@@ -21224,6 +21227,43 @@ fi
done
 
 
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for RLIMIT_AS" >&5
$as_echo_n "checking for RLIMIT_AS... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/time.h>
#include <sys/resource.h>
int
main ()
{
return RLIMIT_AS;
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
cat >>confdefs.h <<_ACEOF
#define HAVE_RLIMIT_AS 1
_ACEOF
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
......@@ -27333,7 +27373,8 @@ if test "$NETCDF_SETTING" != "no" ; then
for ac_header in $NETCDF_INCLUDEDIR/netcdf_mem.h
do :
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "#include <$NETCDF_INCLUDEDIR/netcdf.h>
"
if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
cat >>confdefs.h <<_ACEOF
#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
......@@ -34798,208 +34839,225 @@ fi
 
 
HAVE_POPPLER=no
POPPLER_HAS_OPTCONTENT=no
POPPLER_BASE_STREAM_HAS_TWO_ARGS=no
POPPLER_0_20_OR_LATER=no
POPPLER_0_23_OR_LATER=no
POPPLER_0_58_OR_LATER=no
POPPLER_0_69_OR_LATER=no
POPPLER_MAJOR_VERSION=
POPPLER_MINOR_VERSION=
 
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for poppler" >&5
$as_echo_n "checking for poppler... " >&6; }
 
if test "$with_poppler" != "no" -a "$with_poppler" != ""; then
 
if test "$with_poppler" = "yes" ; then
TEST_POPPLER_INC="-I/usr/include -I/usr/include/poppler"
TEST_POPPLER_LIB="-lpoppler"
else
TEST_POPPLER_INC="-I$with_poppler/include -I$with_poppler/include/poppler"
TEST_POPPLER_LIB="-L$with_poppler/lib -lpoppler"
fi
 
# Check that we can accept Page::pageObj private member
rm -f testpoppler.*
echo '#define private public' > testpoppler.cpp
echo '#include <poppler/Page.h>' >> testpoppler.cpp
echo '#include <poppler/splash/SplashBitmap.h>' >> testpoppler.cpp
echo 'int main(int argc, char** argv) { return &(((Page*)0x8000)->pageObj) == 0; } ' >> testpoppler.cpp
 
if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -o testpoppler ${TEST_POPPLER_INC} ${TEST_POPPLER_LIB} 2>&1`" ; then
HAVE_POPPLER=yes
if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_path_PKG_CONFIG+:} false; then :
$as_echo_n "(cached) " >&6
else
# poppler 0.23.0 needs to be linked against pthread
TEST_POPPLER_LIB="${TEST_POPPLER_LIB} -lpthread"
if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -o testpoppler ${TEST_POPPLER_INC} ${TEST_POPPLER_LIB} 2>&1`" ; then
HAVE_POPPLER=yes
fi
case $PKG_CONFIG in
[\\/]* | ?:[\\/]*)
ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS
 
if test "$HAVE_POPPLER" = "yes"; then
if test "$PDF_PLUGIN" = "no"; then
LIBS="${TEST_POPPLER_LIB} ${LIBS}"
;;
esac
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
POPPLER_INC=$TEST_POPPLER_INC
POPPLER_PLUGIN_LIB="${TEST_POPPLER_LIB}"
CHECK_OTHER_POPPLER_VERSION=yes
if test "$CHECK_OTHER_POPPLER_VERSION" = "yes"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if OptionalContent has API >= 0.69.0" >&5
$as_echo_n "checking if OptionalContent has API >= 0.69.0... " >&6; }
rm -f testpoppler.*
echo '#include <poppler/OptionalContent.h>' > testpoppler.cpp
echo 'int main(int argc, char** argv) {' >> testpoppler.cpp
echo 'OCGs ocg(nullptr, nullptr);' >> testpoppler.cpp
echo 'ocg.getOCGs().size();' >> testpoppler.cpp
echo 'return 0; }' >> testpoppler.cpp
if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -c ${POPPLER_INC} 2>&1`" ; then
POPPLER_0_69_OR_LATER=yes
POPPLER_0_58_OR_LATER=yes
POPPLER_0_23_OR_LATER=yes
POPPLER_0_20_OR_LATER=yes
POPPLER_BASE_STREAM_HAS_TWO_ARGS=yes
POPPLER_HAS_OPTCONTENT=yes
CHECK_OTHER_POPPLER_VERSION=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
PKG_CONFIG=$ac_cv_path_PKG_CONFIG
if test -n "$PKG_CONFIG"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
$as_echo "$PKG_CONFIG" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
fi
if test -z "$ac_cv_path_PKG_CONFIG"; then
ac_pt_PKG_CONFIG=$PKG_CONFIG
# Extract the first word of "pkg-config", so it can be a program name with args.
set dummy pkg-config; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
$as_echo_n "(cached) " >&6
else
case $ac_pt_PKG_CONFIG in
[\\/]* | ?:[\\/]*)
ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS
 
if test "$CHECK_OTHER_POPPLER_VERSION" = "yes"; then
# And now we check if we have Poppler >= 0.58.0
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if Object does have new API (>= 0.58.0)" >&5
$as_echo_n "checking if Object does have new API (>= 0.58.0)... " >&6; }
rm -f testpoppler.*
echo '#include <poppler/Object.h>' > testpoppler.cpp
echo 'int main(int argc, char** argv) { Object o(objNull); return 0; }' >> testpoppler.cpp
if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -c ${POPPLER_INC} 2>&1`" ; then
POPPLER_0_58_OR_LATER=yes
POPPLER_0_23_OR_LATER=yes
POPPLER_0_20_OR_LATER=yes
POPPLER_BASE_STREAM_HAS_TWO_ARGS=yes
POPPLER_HAS_OPTCONTENT=yes
CHECK_OTHER_POPPLER_VERSION=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
;;
esac
fi
ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
if test -n "$ac_pt_PKG_CONFIG"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
$as_echo "$ac_pt_PKG_CONFIG" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
fi
 
if test "$CHECK_OTHER_POPPLER_VERSION" = "yes"; then
if test "x$ac_pt_PKG_CONFIG" = x; then
PKG_CONFIG=""
else
case $cross_compiling:$ac_tool_warned in
yes:)
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
PKG_CONFIG=$ac_pt_PKG_CONFIG
fi
else
PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
fi
 
# And now try another dirty thing, but this one is
# optional.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if Catalog::optContent exists" >&5
$as_echo_n "checking if Catalog::optContent exists... " >&6; }
rm -f testpoppler.*
echo '#define private public' > testpoppler.cpp
echo '#include <poppler/Object.h>' >> testpoppler.cpp
echo '#include <poppler/Catalog.h>' >> testpoppler.cpp
echo 'int main(int argc, char** argv) { return &(((Catalog*)0x8000)->optContent) == 0; }' >> testpoppler.cpp
if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -c ${POPPLER_INC} 2>&1`" ; then
POPPLER_HAS_OPTCONTENT=yes
fi
if test -n "$PKG_CONFIG"; then
_pkg_min_version=0.21
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
PKG_CONFIG=""
fi
 
# And now we check if we have Poppler >= 0.16.0
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if BaseStream constructor needs 2 arguments" >&5
$as_echo_n "checking if BaseStream constructor needs 2 arguments... " >&6; }
rm -f testpoppler.*
echo '#include <poppler/Object.h>' > testpoppler.cpp
echo '#include <poppler/Stream.h>' >> testpoppler.cpp
echo 'class TestStream: public BaseStream {' >> testpoppler.cpp
echo 'public:' >> testpoppler.cpp
echo ' TestStream() : BaseStream(0,0) {}' >> testpoppler.cpp
echo '};' >> testpoppler.cpp
echo 'int main(int argc, char** argv) { return 0; }' >> testpoppler.cpp
if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -c ${POPPLER_INC} 2>&1`" ; then
POPPLER_BASE_STREAM_HAS_TWO_ARGS=yes
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
fi
 
# And now we check if we have Poppler >= 0.20.0
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if we have Poppler >= 0.20.0" >&5
$as_echo_n "checking if we have Poppler >= 0.20.0... " >&6; }
rm -f testpoppler.*
echo '#include <poppler/Error.h>' > testpoppler.cpp
echo 'int main(int argc, char** argv) { setErrorCallback(0,0); return 0; }' >> testpoppler.cpp
if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -c ${POPPLER_INC} 2>&1`" ; then
POPPLER_0_20_OR_LATER=yes
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
pkg_failed=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for POPPLER" >&5
$as_echo_n "checking for POPPLER... " >&6; }
 
# And now we check if we have Poppler >= 0.23.0
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if we have Poppler >= 0.23.0" >&5
$as_echo_n "checking if we have Poppler >= 0.23.0... " >&6; }
rm -f testpoppler.*
echo '#include <poppler/Object.h>' > testpoppler.cpp
echo '#include <poppler/Stream.h>' >> testpoppler.cpp
echo 'class TestStream: public BaseStream {' >> testpoppler.cpp
echo 'public:' >> testpoppler.cpp
echo ' TestStream() : BaseStream(0,0) {}' >> testpoppler.cpp
echo ' ~TestStream() {}' >> testpoppler.cpp
echo ' virtual BaseStream *copy() { return BaseStream::copy(); }' >> testpoppler.cpp
echo '};' >> testpoppler.cpp
echo 'int main(int argc, char** argv) { return 0; }' >> testpoppler.cpp
if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -c ${POPPLER_INC} 2>&1`" ; then
POPPLER_0_23_OR_LATER=yes
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
if test -n "$PKG_CONFIG"; then
if test -n "$POPPLER_CFLAGS"; then
pkg_cv_POPPLER_CFLAGS="$POPPLER_CFLAGS"
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if test -n "$PKG_CONFIG" && \
{ { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"poppler >= 0.23.0\""; } >&5
($PKG_CONFIG --exists --print-errors "poppler >= 0.23.0") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_POPPLER_CFLAGS=`$PKG_CONFIG --cflags "poppler >= 0.23.0" 2>/dev/null`
else
pkg_failed=yes
fi
fi
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
pkg_failed=untried
fi
if test -n "$PKG_CONFIG"; then
if test -n "$POPPLER_LIBS"; then
pkg_cv_POPPLER_LIBS="$POPPLER_LIBS"
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if test -n "$PKG_CONFIG" && \
{ { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"poppler >= 0.23.0\""; } >&5
($PKG_CONFIG --exists --print-errors "poppler >= 0.23.0") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_POPPLER_LIBS=`$PKG_CONFIG --libs "poppler >= 0.23.0" 2>/dev/null`
else
pkg_failed=yes
fi
fi
else
pkg_failed=untried
fi
if test $pkg_failed = yes; then
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
_pkg_short_errors_supported=yes
else
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
POPPLER_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "poppler >= 0.23.0"`
else
POPPLER_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "poppler >= 0.23.0"`
fi
# Put the nasty error message in config.log where it belongs
echo "$POPPLER_PKG_ERRORS" >&5
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
POPPLER_VERSION=
elif test $pkg_failed = untried; then
POPPLER_VERSION=
else
POPPLER_CFLAGS=$pkg_cv_POPPLER_CFLAGS
POPPLER_LIBS=$pkg_cv_POPPLER_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
POPPLER_VERSION=`$PKG_CONFIG --modversion poppler`
fi
if test "$POPPLER_VERSION" != ""; then
HAVE_POPPLER=yes
POPPLER_MAJOR_VERSION=`expr $POPPLER_VERSION : '\([0-9]*\)'`
POPPLER_MINOR_VERSION=`expr $POPPLER_VERSION : '[0-9]*\.\([0-9]*\)'`
POPPLER_CFLAGS=`echo $POPPLER_CFLAGS $POPPLER_CFLAGS | sed "s/include\/poppler/include/"`
fi
rm -f testpoppler.*
rm -f testpoppler
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
$as_echo "disabled" >&6; }
fi
 
HAVE_POPPLER=$HAVE_POPPLER
POPPLER_HAS_OPTCONTENT=$POPPLER_HAS_OPTCONTENT
POPPLER_BASE_STREAM_HAS_TWO_ARGS=$POPPLER_BASE_STREAM_HAS_TWO_ARGS
POPPLER_0_20_OR_LATER=$POPPLER_0_20_OR_LATER
if test "$HAVE_POPPLER" = "yes" -a "$PDF_PLUGIN" = "no"; then
LIBS="${POPPLER_LIBS} ${LIBS}"
fi
 
POPPLER_0_23_OR_LATER=$POPPLER_0_23_OR_LATER
HAVE_POPPLER=$HAVE_POPPLER
 
POPPLER_0_58_OR_LATER=$POPPLER_0_58_OR_LATER
POPPLER_MAJOR_VERSION=$POPPLER_MAJOR_VERSION
 
POPPLER_0_69_OR_LATER=$POPPLER_0_69_OR_LATER
POPPLER_MINOR_VERSION=$POPPLER_MINOR_VERSION
 
POPPLER_INC=$POPPLER_INC
POPPLER_CFLAGS=$POPPLER_CFLAGS
 
POPPLER_PLUGIN_LIB=$POPPLER_PLUGIN_LIB
POPPLER_PLUGIN_LIB=$POPPLER_LIBS
 
 
 
......@@ -356,6 +356,23 @@ AC_CHECK_FUNCS(statvfs)
AC_CHECK_FUNCS(statvfs64)
AC_CHECK_FUNCS(getrlimit)
AC_MSG_CHECKING([for RLIMIT_AS])
AC_TRY_COMPILE(
[
#include <sys/time.h>
#include <sys/resource.h>
], [
return RLIMIT_AS;
],
[
AC_MSG_RESULT([yes])
AC_DEFINE_UNQUOTED(HAVE_RLIMIT_AS, 1,
[Define to 1 if you have the `RLIMIT_AS' constant.])
], [
AC_MSG_RESULT([no])
])
dnl Make sure at least these are checked under C++. Prototypes missing on
dnl some platforms.
......@@ -2656,7 +2673,7 @@ AC_SUBST([NETCDF_SETTING], [$NETCDF_SETTING])
if test "$NETCDF_SETTING" != "no" ; then
AC_CHECK_HEADERS([$NETCDF_INCLUDEDIR/netcdf_mem.h], [NETCDF_MEM=yes], [NETCDF_MEM=no],)
AC_CHECK_HEADERS([$NETCDF_INCLUDEDIR/netcdf_mem.h], [NETCDF_MEM=yes], [NETCDF_MEM=no], [#include <$NETCDF_INCLUDEDIR/netcdf.h>])
AC_SUBST([NETCDF_MEM], [$NETCDF_MEM])
AC_SUBST([NETCDF_ROOT], [$NETCDF_ROOT])
......@@ -4493,178 +4510,35 @@ dnl ---------------------------------------------------------------------------
AC_ARG_WITH(poppler,[ --with-poppler[=ARG] Include poppler(for PDF) support (ARG=no(default), yes or poppler install path)],,)
HAVE_POPPLER=no
POPPLER_HAS_OPTCONTENT=no
POPPLER_BASE_STREAM_HAS_TWO_ARGS=no
POPPLER_0_20_OR_LATER=no
POPPLER_0_23_OR_LATER=no
POPPLER_0_58_OR_LATER=no
POPPLER_0_69_OR_LATER=no
POPPLER_MAJOR_VERSION=
POPPLER_MINOR_VERSION=
AC_MSG_CHECKING([for poppler])
if test "$with_poppler" != "no" -a "$with_poppler" != ""; then
if test "$with_poppler" = "yes" ; then
TEST_POPPLER_INC="-I/usr/include -I/usr/include/poppler"
TEST_POPPLER_LIB="-lpoppler"
else
TEST_POPPLER_INC="-I$with_poppler/include -I$with_poppler/include/poppler"
TEST_POPPLER_LIB="-L$with_poppler/lib -lpoppler"
fi
# Check that we can accept Page::pageObj private member
rm -f testpoppler.*
echo '#define private public' > testpoppler.cpp
echo '#include <poppler/Page.h>' >> testpoppler.cpp
echo '#include <poppler/splash/SplashBitmap.h>' >> testpoppler.cpp
echo 'int main(int argc, char** argv) { return &(((Page*)0x8000)->pageObj) == 0; } ' >> testpoppler.cpp
if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -o testpoppler ${TEST_POPPLER_INC} ${TEST_POPPLER_LIB} 2>&1`" ; then
HAVE_POPPLER=yes
else
# poppler 0.23.0 needs to be linked against pthread
TEST_POPPLER_LIB="${TEST_POPPLER_LIB} -lpthread"
if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -o testpoppler ${TEST_POPPLER_INC} ${TEST_POPPLER_LIB} 2>&1`" ; then
PKG_PROG_PKG_CONFIG([0.21])
PKG_CHECK_MODULES([POPPLER], [poppler >= 0.23.0],
[POPPLER_VERSION=`$PKG_CONFIG --modversion poppler`], [POPPLER_VERSION=])
if test "$POPPLER_VERSION" != ""; then
HAVE_POPPLER=yes
POPPLER_MAJOR_VERSION=`expr $POPPLER_VERSION : '\([[0-9]]*\)'`
POPPLER_MINOR_VERSION=`expr $POPPLER_VERSION : '[[0-9]]*\.\([[0-9]]*\)'`
POPPLER_CFLAGS=`echo $POPPLER_CFLAGS $POPPLER_CFLAGS | sed "s/include\/poppler/include/"`
fi
fi
if test "$HAVE_POPPLER" = "yes"; then
if test "$PDF_PLUGIN" = "no"; then
LIBS="${TEST_POPPLER_LIB} ${LIBS}"
fi
AC_MSG_RESULT([yes])
POPPLER_INC=$TEST_POPPLER_INC
POPPLER_PLUGIN_LIB="${TEST_POPPLER_LIB}"
CHECK_OTHER_POPPLER_VERSION=yes
if test "$CHECK_OTHER_POPPLER_VERSION" = "yes"; then
AC_MSG_CHECKING([if OptionalContent has API >= 0.69.0])
rm -f testpoppler.*
echo '#include <poppler/OptionalContent.h>' > testpoppler.cpp
echo 'int main(int argc, char** argv) {' >> testpoppler.cpp
echo 'OCGs ocg(nullptr, nullptr);' >> testpoppler.cpp
echo 'ocg.getOCGs().size();' >> testpoppler.cpp
echo 'return 0; }' >> testpoppler.cpp
if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -c ${POPPLER_INC} 2>&1`" ; then
POPPLER_0_69_OR_LATER=yes
POPPLER_0_58_OR_LATER=yes
POPPLER_0_23_OR_LATER=yes
POPPLER_0_20_OR_LATER=yes
POPPLER_BASE_STREAM_HAS_TWO_ARGS=yes
POPPLER_HAS_OPTCONTENT=yes
CHECK_OTHER_POPPLER_VERSION=no
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
fi
if test "$CHECK_OTHER_POPPLER_VERSION" = "yes"; then
# And now we check if we have Poppler >= 0.58.0
AC_MSG_CHECKING([if Object does have new API (>= 0.58.0)])
rm -f testpoppler.*
echo '#include <poppler/Object.h>' > testpoppler.cpp
echo 'int main(int argc, char** argv) { Object o(objNull); return 0; }' >> testpoppler.cpp
if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -c ${POPPLER_INC} 2>&1`" ; then
POPPLER_0_58_OR_LATER=yes
POPPLER_0_23_OR_LATER=yes
POPPLER_0_20_OR_LATER=yes
POPPLER_BASE_STREAM_HAS_TWO_ARGS=yes
POPPLER_HAS_OPTCONTENT=yes
CHECK_OTHER_POPPLER_VERSION=no
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
fi
if test "$CHECK_OTHER_POPPLER_VERSION" = "yes"; then
# And now try another dirty thing, but this one is
# optional.
AC_MSG_CHECKING([if Catalog::optContent exists])
rm -f testpoppler.*
echo '#define private public' > testpoppler.cpp
echo '#include <poppler/Object.h>' >> testpoppler.cpp
echo '#include <poppler/Catalog.h>' >> testpoppler.cpp
echo 'int main(int argc, char** argv) { return &(((Catalog*)0x8000)->optContent) == 0; }' >> testpoppler.cpp
if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -c ${POPPLER_INC} 2>&1`" ; then
POPPLER_HAS_OPTCONTENT=yes
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
# And now we check if we have Poppler >= 0.16.0
AC_MSG_CHECKING([if BaseStream constructor needs 2 arguments])
rm -f testpoppler.*
echo '#include <poppler/Object.h>' > testpoppler.cpp
echo '#include <poppler/Stream.h>' >> testpoppler.cpp
echo 'class TestStream: public BaseStream {' >> testpoppler.cpp
echo 'public:' >> testpoppler.cpp
echo ' TestStream() : BaseStream(0,0) {}' >> testpoppler.cpp
echo '};' >> testpoppler.cpp
echo 'int main(int argc, char** argv) { return 0; }' >> testpoppler.cpp
if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -c ${POPPLER_INC} 2>&1`" ; then
POPPLER_BASE_STREAM_HAS_TWO_ARGS=yes
AC_MSG_RESULT([yes])
# And now we check if we have Poppler >= 0.20.0
AC_MSG_CHECKING([if we have Poppler >= 0.20.0])
rm -f testpoppler.*
echo '#include <poppler/Error.h>' > testpoppler.cpp
echo 'int main(int argc, char** argv) { setErrorCallback(0,0); return 0; }' >> testpoppler.cpp
if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -c ${POPPLER_INC} 2>&1`" ; then
POPPLER_0_20_OR_LATER=yes
AC_MSG_RESULT([yes])
# And now we check if we have Poppler >= 0.23.0
AC_MSG_CHECKING([if we have Poppler >= 0.23.0])
rm -f testpoppler.*
echo '#include <poppler/Object.h>' > testpoppler.cpp
echo '#include <poppler/Stream.h>' >> testpoppler.cpp
echo 'class TestStream: public BaseStream {' >> testpoppler.cpp
echo 'public:' >> testpoppler.cpp
echo ' TestStream() : BaseStream(0,0) {}' >> testpoppler.cpp
echo ' ~TestStream() {}' >> testpoppler.cpp
echo ' virtual BaseStream *copy() { return BaseStream::copy(); }' >> testpoppler.cpp
echo '};' >> testpoppler.cpp
echo 'int main(int argc, char** argv) { return 0; }' >> testpoppler.cpp
if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -c ${POPPLER_INC} 2>&1`" ; then
POPPLER_0_23_OR_LATER=yes
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
else
AC_MSG_RESULT([no])
AC_MSG_RESULT([disabled])
fi
else
AC_MSG_RESULT([no])
fi
fi
else
AC_MSG_RESULT([no])
fi
rm -f testpoppler.*
rm -f testpoppler
else
AC_MSG_RESULT([disabled])
if test "$HAVE_POPPLER" = "yes" -a "$PDF_PLUGIN" = "no"; then
LIBS="${POPPLER_LIBS} ${LIBS}"
fi
AC_SUBST(HAVE_POPPLER, $HAVE_POPPLER)
AC_SUBST(POPPLER_HAS_OPTCONTENT, $POPPLER_HAS_OPTCONTENT)
AC_SUBST(POPPLER_BASE_STREAM_HAS_TWO_ARGS, $POPPLER_BASE_STREAM_HAS_TWO_ARGS)
AC_SUBST(POPPLER_0_20_OR_LATER, $POPPLER_0_20_OR_LATER)
AC_SUBST(POPPLER_0_23_OR_LATER, $POPPLER_0_23_OR_LATER)
AC_SUBST(POPPLER_0_58_OR_LATER, $POPPLER_0_58_OR_LATER)
AC_SUBST(POPPLER_0_69_OR_LATER, $POPPLER_0_69_OR_LATER)
AC_SUBST(POPPLER_INC, $POPPLER_INC)
AC_SUBST(POPPLER_PLUGIN_LIB, $POPPLER_PLUGIN_LIB)
AC_SUBST(POPPLER_MAJOR_VERSION, $POPPLER_MAJOR_VERSION)
AC_SUBST(POPPLER_MINOR_VERSION, $POPPLER_MINOR_VERSION)
AC_SUBST(POPPLER_CFLAGS, $POPPLER_CFLAGS)
AC_SUBST(POPPLER_PLUGIN_LIB, $POPPLER_LIBS)
dnl ---------------------------------------------------------------------------
dnl Check if libpodofo is available
......
......@@ -5,13 +5,18 @@
{ "name": "acquired", "type": "datetime" },
{ "name": "anomalous_pixels", "type": "double" },
{ "name": "black_fill", "type": "double" },
{ "name": "clear_confidence_percent", "type": "double" },
{ "name": "clear_percent", "type": "double" },
{ "name": "cloud_cover", "type": "double" },
{ "name": "cloud_percent", "type": "double" },
{ "name": "columns", "type": "int" },
{ "name": "epsg_code", "type": "int" },
{ "name": "grid_cell", "type": "string" },
{ "name": "ground_control", "type": "boolean" },
{ "name": "gsd", "type": "double" },
{ "name": "heavy_haze_percent", "type": "double" },
{ "name": "item_type", "type": "string" },
{ "name": "light_haze_percent", "type": "double" },
{ "name": "origin_x", "type": "double" },
{ "name": "origin_y", "type": "double" },
{ "name": "pixel_resolution", "type": "double" },
......@@ -19,11 +24,16 @@
{ "name": "published", "type": "datetime" },
{ "name": "rows", "type": "int" },
{ "name": "satellite_id", "type": "string" },
{ "name": "shadow_percent", "type": "double" },
{ "name": "snow_ice_percent", "type": "double" },
{ "name": "strip_id", "type": "string" },
{ "name": "sun_azimuth", "type": "double" },
{ "name": "sun_elevation", "type": "double" },
{ "name": "updated", "type": "datetime" },
{ "name": "usable_data", "type": "double" },
{ "name": "view_angle", "type": "double" }
{ "name": "view_angle", "type": "double" },
{ "name": "visible_confidence_percent", "type": "double" },
{ "name": "visible_percent", "type": "double" }
],
"assets": [
"analytic",
......
gdal (2.4.0+dfsg-2) UNRELEASED; urgency=medium
gdal (2.4.2+dfsg-1) unstable; urgency=medium
* New upstream release.
* Update gbp.conf to use --source-only-changes by default.
* Update watch file to check version directories.
* Move from experimental to unstable.
-- Bas Couwenberg <sebastic@debian.org> Sun, 07 Jul 2019 14:13:35 +0200
gdal (2.4.1+dfsg-1~exp1) experimental; urgency=medium
* New upstream release.
* Update watch file for final releases.
* Update symbols for 2.4.1~rc1.
* Strip pre-releases from symbols version.
-- Bas Couwenberg <sebastic@debian.org> Fri, 22 Mar 2019 12:46:23 +0100
gdal (2.4.1~rc1+dfsg-1~exp1) experimental; urgency=medium
* New upstream release candidate.
* Add -DACCEPT_USE_OF_DEPRECATED_PROJ_API_H=1 to CFLAGS for PROJ 6.0.0.
* Update ogdi (build) dependencies for 4.0.0.
* Update watch file for 2.4.1 pre-releases.
* Refresh patches.
* Drop package name from lintian overrides.
* Add lintian overrides for file-references-package-build-path.
-- Bas Couwenberg <sebastic@debian.org> Tue, 12 Mar 2019 21:18:31 +0100
-- Bas Couwenberg <sebastic@debian.org> Fri, 15 Mar 2019 14:02:35 +0100
gdal (2.4.0+dfsg-1) unstable; urgency=medium
......