Skip to content
Commits on Source (5)
......@@ -123,7 +123,7 @@ GDAL_INCLUDE = -I$(GDAL_ROOT)/port -I$(GDAL_ROOT)/gcore \
# libtool targets and help variables
LIBGDAL := libgdal.la
LIBGDAL_CURRENT := 26
LIBGDAL_REVISION := 0
LIBGDAL_REVISION := 1
LIBGDAL_AGE := 0
# native build targets and variables
......
= GDAL/OGR 3.0.1 Release Notes =
The 3.0.1 release is a bug fix release.
== Build ==
* configure: fix detection of libpq in a non-standard place (3.0 regression) (#1542)
* Fix MSVC linking issue related to TransformWithOptionsCache class (#1639)
== Port ==
* /vsitar/: support >100 character file names (#1559)
* /vsicurl/: fix CPL_VSIL_CURL_ALLOWED_EXTENSIONS with query string (#1614)
* /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
* /vsis3/: for a long living file handle, refresh credentials coming from EC2/AIM (#1593)
== GDAL algorithms ==
* GDALReprojectImage(): properly take into account source/target alpha bands
* 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)
== 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
== GDAL utliities ==
* gdal_translate: Make 'gdal_translate foo.tif foo.tif.ovr -outsize 50% 50% -of GTiff' work
* gdalwarp: fix wrong axis order when using source/target CRS being a geographic3D CRS such as EPSG:4979, and with vertical shift grid application (#1561, 3.0 regression)
* 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)
* gdallocationinfo: emit verbose error when dataset canot be opened (#1684)
== GDAL drivers ==
ENVI driver:
* fix potential use of invalid pointer on some unusual std::string implementations (#1527)
* 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)
* reset m_bGeoTIFFInfoChanged flag in FlushDirectory()
* PushMetadataToPam(): early exit when PAM is disabled, to avoid error messages
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:
* Make GH5_FetchAttribute(CPLString) more robust and able to cope with variable-length string
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)
NITF driver:
* fix parsing of SENSRB TRE (#1520)
RS2 driver:
* add half-pixel shift to reported GCP line and column numbers (#1666)
TileDB driver:
* removed ambiguous use of size_t
* TILEDB_LIBS added for windows build
VRT driver:
* Python pixel functions: also probe libpython3.Xm.so.1.0 (#1660)
== OGRSpatialReference ==
* EPSG:4326 to EPSG:3857: fix invalid output with some input coordinates (3.0 regression)
* GetAxis(): make it work with a compound CRS (#1604)
* importFromWkt(): emit a CPLError() in case of import failure (refs #1623)
== OGR drivers ==
EEDA driver:
* fix startTime / endTime comparisons that were incomplete in #1506
GeoJSON driver:
* fix recognizing some documents with members sorted alphabetically (#1537)
* avoid SetFeature() to repeat first feature when looping over features (#1687)
ElasticSearch driver:
* set 'application/json' in RunRequest() with POST (#1628)
* GeoJSON type field should be mapped as text in ES>=5
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.
KML driver:
* set OAMS_TRADITIONAL_GIS_ORDER for SRS returned on returned layers
MapInfo driver:
* TAB: don't left truncate numeric values in the .dat when the field formatting is incompatible, but error out (#1636)
MSSQLSpatial driver:
* Fix handling empty geometries (#1674)
* Fix handling mixed geometries (#1678)
MVT driver:
* make CONF option accept a filename as well
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)
* fix crash when creating a layer with a wkbNone geometry type but a SRS (3.0 regression)
* launder layer name to get Windows compatible filename
WaSP driver:
* on creation, make sure the layer geometry type set on the feature definition is wkbLineString25D
== SWIG bindings ==
* add osr.SetPROJSearchPath(path) that can be used since setting PROJ_LIB from C# does no work (#1647)
== Python bindings ==
* honour gdal.UseExceptions() in numpy related methods (gdalnumeric module) (#1515)
= GDAL/OGR 3.0.0 Release Notes =
 
== In a nutshell... ==
......
......@@ -40,7 +40,7 @@
#include <limits>
CPL_CVSID("$Id: gdalapplyverticalshiftgrid.cpp 8e5eeb35bf76390e3134a4ea7076dab7d478ea0e 2018-11-14 22:55:13 +0100 Even Rouault $")
CPL_CVSID("$Id: gdalapplyverticalshiftgrid.cpp aa2b46947ceef81934fef5a0fd4da1862ce71245 2019-05-23 21:34:37 +0200 Even Rouault $")
/************************************************************************/
/* GDALApplyVSGDataset */
......@@ -392,6 +392,7 @@ GDALDatasetH GDALApplyVerticalShiftGrid( GDALDatasetH hSrcDataset,
OGRSpatialReference oSrcSRS;
if( pszSrcProjection != nullptr && pszSrcProjection[0] != '\0' )
{
oSrcSRS.SetAxisMappingStrategy(OAMS_TRADITIONAL_GIS_ORDER);
oSrcSRS.SetFromUserInput(pszSrcProjection);
}
else
......
......@@ -57,7 +57,7 @@
#include "ogr_srs_api.h"
CPL_CVSID("$Id: gdaltransformer.cpp 1d0fc606e71f2c1ce61f3fd040b187de71d70f9b 2019-04-17 15:01:54 +0200 Even Rouault $")
CPL_CVSID("$Id: gdaltransformer.cpp 69efc34f98764d1d1c3a66ea92298d10c628b97e 2019-06-17 18:33:13 +0200 Even Rouault $")
CPL_C_START
void *GDALDeserializeGCPTransformer( CPLXMLNode *psTree );
......@@ -1099,7 +1099,8 @@ GDALCreateGenImgProjTransformer( GDALDatasetH hSrcDS, const char *pszSrcWKT,
/* the center longitude of the dataset for wrapping purposes. */
/************************************************************************/
static void InsertCenterLong( GDALDatasetH hDS, OGRSpatialReference* poSRS )
static void InsertCenterLong( GDALDatasetH hDS, OGRSpatialReference* poSRS,
CPLStringList& aosOptions )
{
if( !poSRS->IsGeographic())
......@@ -1149,11 +1150,8 @@ static void InsertCenterLong( GDALDatasetH hDS, OGRSpatialReference* poSRS )
/* Insert center long. */
/* -------------------------------------------------------------------- */
const double dfCenterLong = (dfMaxLong + dfMinLong) / 2.0;
OGR_SRSNode *poExt = new OGR_SRSNode( "EXTENSION" );
poExt->AddChild( new OGR_SRSNode( "CENTER_LONG" ) );
poExt->AddChild( new OGR_SRSNode( CPLString().Printf("%g", dfCenterLong) ));
poSRS->GetRoot()->AddChild( poExt );
aosOptions.SetNameValue("CENTER_LONG",
CPLSPrintf("%g", dfCenterLong));
}
/************************************************************************/
......@@ -1929,13 +1927,13 @@ GDALCreateGenImgProjTransformer2( GDALDatasetH hSrcDS, GDALDatasetH hDstDS,
(!oSrcSRS.IsSame(&oDstSRS) ||
(oSrcSRS.IsGeographic() && bMayInsertCenterLong))) || pszCO )
{
CPLStringList aosOptions;
if( bMayInsertCenterLong )
{
InsertCenterLong( hSrcDS, &oSrcSRS );
InsertCenterLong( hSrcDS, &oSrcSRS, aosOptions );
}
CPLStringList aosOptions;
if( !(dfWestLongitudeDeg == 0.0 && dfSouthLatitudeDeg == 0.0 &&
dfEastLongitudeDeg == 0.0 && dfNorthLatitudeDeg == 0.0) )
{
......@@ -2818,21 +2816,35 @@ void *GDALCreateReprojectionTransformerEx(
}
const char* pszCO = CSLFetchNameValue(papszOptions, "COORDINATE_OPERATION");
OGRCoordinateTransformationOptions options;
OGRCoordinateTransformationOptions optionsFwd;
OGRCoordinateTransformationOptions optionsInv;
if( !(dfWestLongitudeDeg == 0.0 && dfSouthLatitudeDeg == 0.0 &&
dfEastLongitudeDeg == 0.0 && dfNorthLatitudeDeg == 0.0) )
{
options.SetAreaOfInterest(dfWestLongitudeDeg,
optionsFwd.SetAreaOfInterest(dfWestLongitudeDeg,
dfSouthLatitudeDeg,
dfEastLongitudeDeg,
dfNorthLatitudeDeg);
optionsInv.SetAreaOfInterest(dfWestLongitudeDeg,
dfSouthLatitudeDeg,
dfEastLongitudeDeg,
dfNorthLatitudeDeg);
}
if( pszCO )
{
options.SetCoordinateOperation(pszCO, false);
optionsFwd.SetCoordinateOperation(pszCO, false);
optionsInv.SetCoordinateOperation(pszCO, true);
}
const char* pszCENTER_LONG = CSLFetchNameValue(papszOptions, "CENTER_LONG");
if( pszCENTER_LONG )
{
optionsFwd.SetSourceCenterLong(CPLAtof(pszCENTER_LONG));
optionsInv.SetTargetCenterLong(CPLAtof(pszCENTER_LONG));
}
OGRCoordinateTransformation *poForwardTransform =
OGRCreateCoordinateTransformation(poSrcSRS, poDstSRS, options);
OGRCreateCoordinateTransformation(poSrcSRS, poDstSRS, optionsFwd);
if( poForwardTransform == nullptr )
// OGRCreateCoordinateTransformation() will report errors on its own.
......@@ -2847,14 +2859,12 @@ void *GDALCreateReprojectionTransformerEx(
psInfo->papszOptions = CSLDuplicate(papszOptions);
psInfo->poForwardTransform = poForwardTransform;
if( pszCO )
{
options.SetCoordinateOperation(pszCO, true);
}
psInfo->dfTime = CPLAtof(CSLFetchNameValueDef(papszOptions,
"COORDINATE_EPOCH", "0"));
CPLPushErrorHandler(CPLQuietErrorHandler);
psInfo->poReverseTransform =
OGRCreateCoordinateTransformation(poDstSRS, poSrcSRS, options);
OGRCreateCoordinateTransformation(poDstSRS, poSrcSRS, optionsInv);
CPLPopErrorHandler();
memcpy( psInfo->sTI.abySignature,
GDAL_GTI2_SIGNATURE,
......@@ -2930,8 +2940,24 @@ int GDALReprojectionTransform( void *pTransformArg, int bDstToSrc,
}
if( bDstToSrc )
bSuccess = psInfo->poReverseTransform->Transform(
nPointCount, padfX, padfY, padfZ, padfT, panSuccess );
{
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->Transform(
nPointCount, padfX, padfY, padfZ, padfT, panSuccess );
}
}
else
bSuccess = psInfo->poForwardTransform->Transform(
nPointCount, padfX, padfY, padfZ, padfT, panSuccess );
......@@ -3786,8 +3812,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;
......
......@@ -51,7 +51,7 @@
#include <emmintrin.h>
#endif
CPL_CVSID("$Id: gdalwarper.cpp d16ecc80707f9c7097a11bfe47c8403bb9df310f 2018-07-27 20:14:48 -0700 piyush.agram@jpl.nasa.gov $")
CPL_CVSID("$Id: gdalwarper.cpp 568ffe2360fda1100a08ba74371f4f25d7059785 2019-05-05 19:08:10 +0200 Even Rouault $")
/************************************************************************/
/* GDALReprojectImage() */
......@@ -147,9 +147,28 @@ GDALReprojectImage( GDALDatasetH hSrcDS, const char *pszSrcWKT,
psWOptions->hSrcDS = hSrcDS;
psWOptions->hDstDS = hDstDS;
int nSrcBands = GDALGetRasterCount(hSrcDS);
{
GDALRasterBandH hBand = GDALGetRasterBand( hSrcDS, nSrcBands );
if( hBand && GDALGetRasterColorInterpretation(hBand) == GCI_AlphaBand )
{
psWOptions->nSrcAlphaBand = nSrcBands;
nSrcBands --;
}
}
int nDstBands = GDALGetRasterCount(hDstDS);
{
GDALRasterBandH hBand = GDALGetRasterBand( hDstDS, nDstBands );
if( hBand && GDALGetRasterColorInterpretation(hBand) == GCI_AlphaBand )
{
psWOptions->nDstAlphaBand = nDstBands;
nDstBands --;
}
}
GDALWarpInitDefaultBandMapping(
psWOptions, std::min(GDALGetRasterCount(hSrcDS),
GDALGetRasterCount(hDstDS)));
psWOptions, std::min(nSrcBands, nDstBands));
/* -------------------------------------------------------------------- */
/* Set source nodata values if the source dataset seems to have */
......@@ -159,11 +178,6 @@ GDALReprojectImage( GDALDatasetH hSrcDS, const char *pszSrcWKT,
{
GDALRasterBandH hBand = GDALGetRasterBand( hSrcDS, iBand+1 );
if (GDALGetRasterColorInterpretation(hBand) == GCI_AlphaBand)
{
psWOptions->nSrcAlphaBand = iBand + 1;
}
int bGotNoData = FALSE;
double dfNoDataValue = GDALGetRasterNoDataValue( hBand, &bGotNoData );
if( bGotNoData )
......@@ -174,10 +188,6 @@ GDALReprojectImage( GDALDatasetH hSrcDS, const char *pszSrcWKT,
// Deal with target band.
hBand = GDALGetRasterBand( hDstDS, iBand+1 );
if (hBand && GDALGetRasterColorInterpretation(hBand) == GCI_AlphaBand)
{
psWOptions->nDstAlphaBand = iBand + 1;
}
dfNoDataValue = GDALGetRasterNoDataValue( hBand, &bGotNoData );
if( bGotNoData )
......
......@@ -71,7 +71,7 @@
#endif
CPL_CVSID("$Id: gdalwarpkernel.cpp fa2676737e01040b4457b2a637db5e73eb9c744f 2019-03-23 10:08:04 +0100 Even Rouault $")
CPL_CVSID("$Id: gdalwarpkernel.cpp 483a697e9d0aeb95719053738a6fd7cd30fec4d7 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;
}
}
}
}
......
......@@ -54,7 +54,7 @@
#include "ogr_spatialref.h"
#include "vrtdataset.h"
CPL_CVSID("$Id: gdal_translate_lib.cpp 743d0ce0d7ea6bdc710b6b2950d1e8c34243797f 2019-04-23 08:10:30 -0400 fechen123 $")
CPL_CVSID("$Id: gdal_translate_lib.cpp bf8afbd97cff56fa47f2cbc836574bb114635ef4 2019-05-24 23:45:07 +0200 Even Rouault $")
static int ArgIsNumeric( const char * );
static void AttachMetadata( GDALDatasetH, char ** );
......@@ -885,6 +885,36 @@ GDALDatasetH GDALTranslate( const char *pszDest, GDALDatasetH hSrcDataset,
return nullptr;
}
/* -------------------------------------------------------------------- */
/* Make sure we cleanup if there is an existing dataset of this */
/* name. But even if that seems to fail we will continue since */
/* it might just be a corrupt file or something. */
/* This is needed for */
/* gdal_translate foo.tif foo.tif.ovr -outsize 50% 50% */
/* -------------------------------------------------------------------- */
if( !CPLFetchBool(psOptions->papszCreateOptions, "APPEND_SUBDATASET", false) )
{
// Someone issuing Create("foo.tif") on a
// memory driver doesn't expect files with those names to be deleted
// on a file system...
// This is somewhat messy. Ideally there should be a way for the
// driver to overload the default behaviour
if( !EQUAL(psOptions->pszFormat, "MEM") &&
!EQUAL(psOptions->pszFormat, "Memory") )
{
GDALDriver::FromHandle(hDriver)->QuietDelete( pszDest );
}
// Make sure to load early overviews, so that on the GTiff driver
// external .ovr is looked for before it might be created as the
// output dataset !
if( GDALGetRasterCount( hSrcDataset ) )
{
auto hBand = GDALGetRasterBand(hSrcDataset, 1);
if( hBand )
GDALGetOverviewCount(hBand);
}
}
char** papszDriverMD = GDALGetMetadata(hDriver, nullptr);
if( !CPLTestBool( CSLFetchNameValueDef(papszDriverMD,
......
......@@ -35,7 +35,7 @@
#include "ogr_spatialref.h"
#include <vector>
CPL_CVSID("$Id: gdallocationinfo.cpp 1c35871019286e28e58e7a9505e0d660bae25601 2019-03-24 14:39:12 +0100 Even Rouault $")
CPL_CVSID("$Id: gdallocationinfo.cpp af0ad2ff6d6f6e38e0a7720f5664fa540ed3b836 2019-06-27 11:19:31 +0200 Even Rouault $")
/******************************************************************************/
/*! \page gdallocationinfo gdallocationinfo
......@@ -309,7 +309,8 @@ MAIN_START(argc, argv)
/* Open source file. */
/* -------------------------------------------------------------------- */
GDALDatasetH hSrcDS
= GDALOpenEx( pszSrcFilename, GDAL_OF_RASTER, nullptr,
= GDALOpenEx( pszSrcFilename, GDAL_OF_RASTER | GDAL_OF_VERBOSE_ERROR,
nullptr,
papszOpenOptions, nullptr );
if( hSrcDS == nullptr )
exit( 1 );
......
......@@ -7,7 +7,8 @@ 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
......
......@@ -28716,7 +28716,7 @@ fi
PG_LIB="${PQ_LIBS}"
PG_INC="${PQ_CFLAGS}"
SAVED_LIBS="${LIBS}"
LIBS="${PG_LIBS}"
LIBS="${PG_LIB}"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PQconnectdb in -lpq" >&5
$as_echo_n "checking for PQconnectdb in -lpq... " >&6; }
if ${ac_cv_lib_pq_PQconnectdb+:} false; then :
......@@ -1576,7 +1576,7 @@ else
PG_LIB="${PQ_LIBS}"
PG_INC="${PQ_CFLAGS}"
SAVED_LIBS="${LIBS}"
LIBS="${PG_LIBS}"
LIBS="${PG_LIB}"
AC_CHECK_LIB(pq,PQconnectdb,HAVE_PG=yes,HAVE_PG=no)
LIBS="${SAVED_LIBS}"
if test "${HAVE_PG}" = "yes" ; then
......
gdal (3.0.1~rc1+dfsg-1~exp1) experimental; urgency=medium
* New upstream release candidate.
* Update 3.0.0 symbols for ia64, m68k, powerpc, sh4 & sparc64.
-- Bas Couwenberg <sebastic@debian.org> Fri, 28 Jun 2019 14:42:54 +0200
gdal (3.0.0+dfsg-1~exp2) experimental; urgency=medium
* Replace package name with #PACKAGE# when updating symbols files.
......
source diff could not be displayed: it is too large. Options to address this: view the blob.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -89,7 +89,8 @@ will not done.</p>
<tr><td>id</td><td>String</td><td>Image ID; equivalent to name without the "projects/*/assets/" prefix (e.g. users/USER/ASSET)</td><td>No</td></tr>
<tr><td>path</td><td>String</td><td>(Deprecated) Image path; equivalent to id</td><td>No</td></tr>
<tr><td>gdal_dataset</td><td>String</td><td>GDAL dataset name (e.g. EEDAI:projects/earthengine-public/assets/COPERNICUS/S2/20170430T190351_20170430T190351_T10SEG)<br/>that can be opened with the <a href="frmt_eedai.html">Google Earth Engine Data API Image driver</a></td><td>No</td></tr>
<tr><td>time</td><td>DateTime</td><td>Acquisition date</td><td><b>Yes</b></td></tr>
<tr><td>startTime</td><td>DateTime</td><td>Acquisition start date</td><td><b>Yes (restricted to &gt;= comparison on top level)</b></td></tr>
<tr><td>endTime</td><td>DateTime</td><td>Acquisition end date</td><td><b>Yes (restricted to &lt;= comparison on top level)</b></td></tr>
<tr><td>updateTime</td><td>DateTime</td><td>Update date</td><td>No</td></tr>
<tr><td>sizeBytes</td><td>Integer64</td><td>File size in bytes</td><td>No</td></tr>
<tr><td>band_count</td><td>Integer</td><td>Number of bands</td><td>No</td></tr>
......@@ -154,7 +155,7 @@ ogrinfo -ro -al "EEDA:projects/earthengine-public/assets/COPERNICUS/S2" -spat -1
<li>
Listing all images available matching criteria :
<pre>
ogrinfo -ro -al "EEDA:projects/earthengine-public/assets/COPERNICUS/S2" -where "time &gt;= '2015/03/26 00:00:00' AND CLOUDY_PIXEL_PERCENTAGE &lt; 10" --config EEDA_CLIENT_EMAIL "my@email" --config EEDA_PRIVATE_KEY_FILE my.pem
ogrinfo -ro -al "EEDA:projects/earthengine-public/assets/COPERNICUS/S2" -where "startTime &gt;= '2015/03/26 00:00:00' AND endTime &lt;= '2015/06/30 00:00:00' AND CLOUDY_PIXEL_PERCENTAGE &lt; 10" --config EEDA_CLIENT_EMAIL "my@email" --config EEDA_PRIVATE_KEY_FILE my.pem
</pre>
<p>
......