Release/1.10.0-News

GDAL/OGR 1.10.0 Release Notes

In a nutshell…

  • New GDAL drivers:
    • ARG: read/write suuport for ARG datasets (#4591)
    • CTable2: read/write support for CTable2 datum grid shift format
    • DDS: write-only support for DirectDraw? Surface format (#5017)
    • IRIS: read support for products generated by the IRIS weather radar software (#4854)
    • MAP: read OziExplorer? .map files (#3380)
    • MBTiles: read-only support for MBTiles rasters (needs libsqlite3)
  • New OGR drivers:
    • ElasticSearch?: write-only support to write into ElasticSearch? databases (needs libcurl)
    • ODS : read/write support for OpenOffice? .ods (Open Document Spreadsheets) (needs libexpat)
    • OSM : read-only support for .osm / .pbf OpenStreetMap? files
    • PDF: read/write support for vector/structured PDF files
    • XLSX: read/write support for MS Excel 2007 and later Open Office XML .xlsx spreadsheets (needs libexpat)
  • RFC 39: OGR Layer algebra methods : http://trac.osgeo.org/gdal/wiki/rfc39_ogr_layer_algebra
  • Add a SQL SQLite dialect :  http://gdal.org/ogr/ogr_sql_sqlite.html
  • Make GDAL loadable as a SQLite3 extension (named VirtualOGR) (#4782)
  • /vsicurl_streaming/: new virtual file system handler designed to read in streaming mode dynamically generated files
  • GDAL API_PROXY mechanism to run GDAL drivers in a separate process:  http://gdal.org/gdal_api_proxy.html
  • Significantly improved drivers : PDF, SQLite, JP2OpenJPEG
  • Add a geocoding client :  http://gdal.org/ogr/ogr__geocoding_8h.html
  • Upgrade to EPSG 8.0 database

New installed files

  • data/ozi_datum.csv
  • data/ozi_ellips.csv
  • data/osmconf.ini
  • include/cpl_progress.h
  • include/cpl_spawn.h
  • bin/gdalserver[.exe]

Backward compatibility issues

Due to the 2-digit number '10' in GDAL 1.10, the GDAL_VERSION_NUM macro has been changed. The new advised way of testing the GDAL version number (for GDAL 1.10 or later) at compilation time is :

#ifdef GDAL_COMPUTE_VERSION /* only available in GDAL 1.10 or later */ #if GDAL_VERSION_NUM >= GDAL_COMPUTE_VERSION(1,10,0) /// #endif #endif

Testing of previous versions is of course unchanged.

GDAL/OGR 1.10.0 - General Changes

Build(Unix):

  • New optional dependencies : libpcre (for regular expressions support in SQLite), libxml2 (validation of GML files)
  • --with-python: make it work with python3, and also accept path to python binary as argument of --with-python (#4725)
  • Use nc-config to detect netcdf compilation and linking parameters (#4424)
  • Add frmts/vrt to CONFIG_CFLAGS for developement version of gdal-config (needed for postgis 2.0 compilation)
  • Fix compilation failure with iconv on FreeBSD (#4525)
  • Make FileGDBAPI detection work with FileGDBAPI v1.1 and v1.2 (#4570)
  • Fix build on Gentoo with its custom zlib 1.2.6 with the OF macro removed
  • Mark man target as phony (#4629)
  • Add guess for the directory where to find openjdk on Ubuntu 12.04 (#4643)
  • Look for geotiff headers in /usr/include/libgeotiff too (#4706)
  • For install target, create gdalplugins subdirectory in $(DESTDIR)$(INST_LIB)/ (Unix, except MacOSX)
  • Better detection of OpenCL headers and library (#4665)
  • Changed libdap test to use dap-config to detect version when possible

Build(Windows):

  • (Preliminary) support to build INGRES
  • Make CPLGetErrorHandlerUserData() exported
  • Make OGDI include path overridable (to match OSGeo4W's default location)
  • Build and install plugins

GDAL 1.10.0 - Overview of Changes

Port:

  • CPL Thread API: add condition API, modeled on POSIX pthread_cond_ API
  • Add CPLGetNumCPUs()
  • Deserialize various forms of textual representation for positive/negative infinity
  • Add routine to validate a XML file against its XSD schema (needs libxml2); 'optimize' it for GML files
  • CPLRecodeStub(): for Windows, provide an implementation of UTF8 <--> CPxxx conversions using Windows API
  • Make VSIFileManager::Get() thread-safe
  • Fix thread-safety of CPLOpenShared() (#4848)
  • Add CPLZLibDeflate() and CPLZLibInflate()
  • Add API for OAuth2 authentication protocol.
  • Curl: allows setting the CURLOPT_PROXYAUTH setting through GDAL_PROXY_AUTH=BASIC/NTLM/DIGEST/ANY, allow setting CURLOPT_HTTPAUTH through GDAL_HTTP_AUTH=BASIC/NTLM/GSSNEGOTIATE/ANY (#4998)
  • /vsicurl/ and /vsicurl_streaming/ : make it possible to cache the files in RAM with VSI_CACHE = TRUE
  • /vsizip/: fix handling of Eof() that could cause missed last feature(s) of zipped shapefiles (#4748)

Core:

  • Add a DMD_SUBDATASETS driver metadata, and advertize it in relevant drivers (#4902)
  • Fix statistics computation when nodata value is +/- infinity (#4506)
  • GDALNoDataMaskBand: implement IRasterIO() for an optimization in common use case (#4488)
  • GDALVersionInfo(): add BUILD_INFO version string
  • GMLJP2: Fix bad interpretation when Lat/Long? (#4657)
  • Set nodata value when creating external overviews so that AVERAGE algorithm works as expected (#4679)
  • EXIFExtractMetadata() moved to gcore/gdalexif.cpp to make it usable for other drivers
  • Fix infinite recursion in GDALOpen() (#4835)
  • GDALRasterBand::IRasterIO() : optimize downsampling/upsampling code path
  • C API: make GDALSetDefaultRAT() accept a NULL RAT. All drivers are ready for that now.
  • GDALRasterBand::GetDefaultHistogram?(): change how min and max bounds are computed in the non GDT_Byte case
  • GDALDataset::BlockBasedFlushCache?(): fix crash when band has sub-blocking

Algorithms:

  • GSOC Image Correlator work (preliminary state)
  • Warp: divide Lanczos resampling time by at least a factor of 4.
  • Warp: add NUM_THREADS warping option to set the number of threads to use to parallelize the computation part of the warping
  • Warp: do not stop collecting chunks to operate on just because some subchunks fail (#4795)
  • Warp: add mode and average resampling methods (#5049)
  • OpenCL warper: handle errors in set_supported_formats(), fix memory leaks in error code paths, add detection of Intel OpenCL (by the way, Intel OpenCL seems to work properly only with a Float32 working data type)
  • OpenCL warper: fix segmentation fault related to source/destination validity masks (#4840)
  • Geoloc: do not trust pabSuccess in geolocation transformer (#4794)
  • Geoloc: add bilinear interpolation of coordinates from backmap (#4907)
  • Geoloc: add GDALTransformGeolocations() and SWIG binding
  • Add nearest neighbor and cubic interpolation of DEM in GDALRPCTransform (#3634). User can set RPC_DEMINTERPOLATION to near, bilinear or cubic to interpolate of input DEM file which set in RPC_DEM. The default interpolation is bilinear.
  • gdal_rasterize: fix problem identifying some connected-8 polygons (#4647)
  • gdal_grid: speed-up dramatically nearest neighbour search (with radius1 == radius2) by using a search quad tree
  • gdal_grid: parallelize processing by specifying the GDAL_NUM_THREADS configuration option (default to ALL_CPUS)
  • gdal_grid: for 'invdist' algorithm with default parameters, use SSE optimized version if available (at compile and runtime). Can be disabled with GDAL_USE_SSE=NO

Utilities:

  • General: make usage message more self-explanatory in case of bad option (#4973)
  • gdalmove.py: New application for "warping" an image by just updating its SRS and geotransform.
  • gdal_edit.py: promote it as an 'official' tool (#4963)
  • gdalwarp: add "-r average" and "-r mode" resampling methods (#5049)
  • gdalwarp: copy metadata and band information from first source dataset and detect for conflicting values, new options -nomd and -cvmd (#3898)
  • gdalwarp: optimization when (-tr and -te) or (-ts and -te) are specified (#4804)
  • gdalwarp: assign color interpretation of source bands to target dataset, in the case of target VRT (#4462)
  • gdalwarp: add -setci option to set the color interpretation of the bands of the target dataset from the source dataset
  • gdal_translate: accept -srcwin or -projwin values that fall partially or completely outside the source raster extent. Introduce -epo and -eco options to error out in those situations.
  • gdallocationinfo: add a -overview overview_level option to specify an overview level, instead of the base band
  • gdalsrsinfo: try to open with GDAL and OGR even if argument is not a file (#4493)
  • gdaldem: add a -combined option to the hillshade mode to compute combined hillshading (#4753)
  • gdaldem: fix color-relief output with driver that has only CreateCopy?() capability, and when the source block dimensions are not multiple of the raster dimension (#4764)
  • gdaltindex: add -t_srs option, to transform all input source bounds to same SRS (#4773)
  • gdalbuildvrt: add -a_srs option
  • gdalbuildvrt: add -sd option to select subdataset by its number
  • gdalbuildvrt: add a -b flag (#4992)
  • gdalgrid: increase working buffer of gdal_grid binary to 16 MB
  • gdal_retile.py: Don't pass creation options to the MEM driver used for generating temporary datasets (#4532)
  • gdal_edit.py: make -a_srs option work properly by expanding the user input to WKT; support -a_srs with empty string
  • gdal_edit.py: add support for -gcp option
  • gdal2tiles.py: make KML output conformant with KML 2.2 (#4536)
  • gdal2tiles.py: OL 2.12 support (#4742)
  • gdal_polygonize.py: add -8 option to select 8 connectedness (#4655)
  • gdal_merge.py, gdalident.py: remove using of glob() API
  • gdal2xyz.py: fix output of -csv mode with multi-band raster
  • gdal_contour / gdal_rasterize / gdal_translate: accept numeric values in scientific format.
  • crs2crs2grid.py: New sample Python script
  • gdalcompare.py: New sample Python scrip to compare GDAL datasets
  • gdal_calc.py: add --co creation option flag (#4964)
  • gdaladdo: add a -b flag
  • pct2rgb.py: deal with color tables with more than 256 entries (#4905)

Multi driver changes:

  • Add support for reading .j2w, .jp2w and .wld files for JP2ECW, JP2MrSID, JP2OPENJPEG and JPEG2000 drivers (#4651)

AAIGrid:

  • Change float format string for AAIGrid to prevent pointless padding/decimals (#3732)

ACE2 driver:

  • Fix typo that prevented dataset to be opened with explicit /vsigzip/ (#4460)

ADRG driver:

  • Various fixes when opening ill-formed datasets.

BAG driver:

  • Fix serious problems with tiled images, particularly when not multiples of tile size (#4548)
  • Added capture of dateTime attribute
  • Support WKT (with Esri style VERTCS) spatial reference
  • Allow WGS84 spatial reference
  • Include compression method in metadata.

BT driver:

  • Fixes for huge files (>2GB) support (#4765)

CEOS2 driver:

  • Add various radarsat-1 related metadata fields (#4996)

DIMAP driver:

  • Check signature in METADATA.DIM, not just file existence
  • Fixed DIMAP2 driver to get the proper absolute path in a specific case

DTED driver:

  • Write the updated value of the partial cell indicator to the file (#4687)
  • Honour 'Longitude count' field of Data Record to deal properly with files with missing columns at the left and/or right of the file (#4711)

ECW driver:

  • Add support for ECW SDK 5.0
  • Improve picking performance on large datasets (#4790)
  • Use ECW SDK to do super-sampling for SDK >= 4.X
  • Expose 256x256 block dimension instead of scanline
  • Workaround a ECW SDK 3.3 bug, when doing a RasterIO() with the total number of bands, but not in the 1,2,..n order (#4234)
  • Add heuristics to detect successive band reading pattern (such as done by QGIS). Beneficial for ECWP

ENVI driver:

  • Add support for writing RPCs and GCPs
  • Add ability to access all ENVI header fields to the ENVI reader (#4735)
  • Write in the ENVI header metadata found in the ENVI metadata domain (#4957)
  • Fix reading of .sta file on 64bit Linux
  • Assume BSQ interleaving when 'interleave' keyword missing or unknown
  • Fix category names writing
  • Remove 'envi fft result' from the blacklist
  • Report wavelength and wavelength_units as band metadata (#3682)

ENVISAT driver:

  • Ported to VSI*L

GeoRaster driver:

  • Add spatialExtent and extentSRID create-options (#4529)
  • Fix JPEG quality not updated on metadata (#4552)
  • Search for RDT as regular table
  • Add support for RPC (#4038)

GIF driver:

  • Add support for giflib 4.2.0 (#4675) and giflib 5.0

GMT driver:

  • Make GMT driver thread-safe by adding a global mutex (since the netcdf library isn't thread-safe)

GTiff driver:

  • Internal libtiff and libgeotiff refreshed from upstream
  • Use EXTRASAMPLE_UNASSALPHA by default (behaviour change w.r.t. previous GDAL versions) (#4733)
  • Add support for reading GeoEye? *.pvl metadata files (#4465)
  • Lossless CreateCopy?'ing() from a JPEG dataset
  • Read EXIF metadata in the EXIF metadata domain
  • Ensure that rowsperstrip is never larger than ysize (#4468)
  • Fix writing of RGBA pixel-interleaved JPEG-compressed TIFF (#4732)
  • Set color interpretation to GCI_PaletteIndex after calling SetColorTable?() (#4547)
  • Conversion for 8-bit unpacked CMYK (PHOTOMETRIC_SEPARATED) to RGBA.
  • Maximize EPSG compatability where PCS is defined (#4607)
  • Ensure that unusual units with an authority node are saved nicely (like EPSG:2066)
  • Add CT_HotineObliqueMercatorAzimuthCenter support
  • Fix PolarStereographic? / 9829 support
  • Make sure that GetMetadata?() initializes the value of GDALMD_AREA_OR_POINT item, if not already done (#4691)
  • When building overviews, if the image has already an internal mask, then build internal overviews for the mask implicitely
  • Better handling of SetMetadata?(a_string) (#4816)
  • Use GTIFAllocDefn/GTIFFreeDefn with libgeotiff 1.4.1+
  • Add support for GEO_NORMALIZE_DISABLE_TOWGS84 (#3309)
  • Improve handling of description and offset/scale without reverting to .aux.xml
  • Workaround defects in libtiff 3.X when generating several overview levels at the same time
  • Special case where the EGM96 Vertical Datum code is mis-used as a Vertical CS code (#4922)
  • Support unsetting geotiff tags when calling SetGeoTransform?([0,1,0,0,0,1]) and SetProjection?()
  • Rework how CSV files are searched w.r.t libgeotiff (#4994)

GRIB driver:

  • Report nodata value (#4433)
  • Fix fgetc signed/unsigned problem for Grib format VSI*L reader (#4603)
  • Avoid caching more than 100 MB in case of dataset with many bands (#4682)
  • uses meshLat as the latitude_of_origin parameter of LCC projection (#4807)

GSAG driver:

  • Fix hangs when reading truncated dataset (#4889)

GS7BG driver:

GTX driver:

  • Support reading old GTX files where datatype was Float64

GXF driver:

  • Avoid having big buffer on stack (#4852)
  • Avoid locale floating point parsing problems (similar to r24367).
  • Implement continuued lines mechanism (#4873)
  • Fix various vulnerabilities / DoS

HDF4 driver:

  • Add ability to increase the maximum number of opened HDF4 files
  • Unix build: avoid issue with system hdfeos library
  • Ensure we do not try to use the grid tile api for non-tilesized chunks (#4672)
  • Preserve more Float32 attribute precision
  • Import HDF USGS GCTP angular parameters as radians
  • Restore conventional add_offset interpretation (#4891)
  • Be more careful about missing dimensions (#4900)
  • Make HDF4 driver thread-safe by adding a global mutex (since the HDF4 library isn't thread-safe)
  • Search for "coremetadata" attribute name instead of "coremetadata."

HDF5 driver:

HFA driver:

  • Added BASEDATA support for EPT_u1 (#4537)
  • Fix crash on dataset closing when .ige file header is corrupted (#4596)
  • .aux overviews: avoid destroying existing overviews when asking twice in a row to build overviews for exactly the same overview levels (#4831)
  • Fix sizing of RAT string column maxwidth to include null char (#4867)
  • Fix segfault in HFAAuxBuildOverviews with selected bands (#4976)

INGR driver:

  • do not reduce tile size to image size (#4856)
  • Fix value inversion when reading type 9 (bitonal RLE) untiled files (#5030)
  • fix slowness and incorrect random reading with RLE datasets (#4965)
  • Enable reading bitonal rle files wider than 22784 (0x5900) pixels (#5030)
  • Add RESOLUTION metadata/option to read/write DPI (#5030)
  • Add write support for .rle (bitonal rle files) to test the above (#5030)

ISIS3 driver:

  • Ensure scaleFactor defaults to 1 (#4499)

JP2ECW driver:

  • Workaround conflict between ECW SDK deinitialization and GDAL deinitialization, as shown by gdaljp2ecw tests of imageio-ext (#5024)
  • Promote 1bit alpha band of a RGBA dataset to 8 bits to improve general user experience (can be turned off by setting GDAL_ECW_PROMOTE_1BIT_ALPHA_AS_8BIT to NO)

JP2KAK driver:

  • Capture Corder in metadata for user convenience
  • Fix writing of resolution box where the xresolution value was written instead of the yresolution one
  • Skip bands that have different data type when reading multiple bands in IReadBlock() (#4638)
  • Default to less than 250000 lines per tile (#5034)

JP2OpenJPEG driver:

  • Require OpenJPEG 2.0.0 now
  • Use several decoding threads when processing multi-tiles IRasterIO() requests
  • Add support for writing georeferencing
  • Read and write JP2 Res box and translate it from/to TIFFTAG_XRESOLUTION, TIFFTAG_YRESOLUTION and TIFFTAG_RESOLUTIONUNIT metadata items
  • Promote 1bit alpha band of a RGBA dataset to 8 bits to improve general user experience (can be turned off by setting JP2OPENJPEG_PROMOTE_1BIT_ALPHA_AS_8BIT to NO)

JPEG driver:

  • When there are no external overviews built, take advantage of the nature of JPEG compression to expose overviews of level 2, 4 and 8
  • Don't return junk content when requesting xml:XMP but no XMP metadata is present (#4593)
  • add a INTERNAL_MASK creation option to be able to disable appending the ZLib mask if not needed
  • add support for creating a JPEG loss-less file starting with the recentlish IJG libjpeg v9 (with -co ARITHMETIC=yes -co BLOCK=1 -co COLOR_TRANSFORM=RGB1)

JPEG2000 driver:

  • do not accept by default source bands of type different from Byte, Int16 or UInt16 since they seem to cause crashes in libjasper. This can be overriden, at your own risk, by setting JPEG2000_FORCE_CREATION configuration option to YES (#5002)

KMLSuperOverlay driver:

  • Add read support
  • Remove bogus code that limited generation to one zoom level (#4527)
  • Set minLodPixels to 1 for zoom level 0 (#4721)
  • Fix bad placing of tiles with raster of the extent of a country or more (#4834)
  • Add FIX_ANTIMERIDIAN creation option (#4528)

L1B driver:

  • Add support for NOAA19, METOP-B and guess for METOP-C (#2352)

MG4Lidar driver:

  • Add UTF-8 filename support under Windows (#4612)

NetCDF driver:

  • Fix for gdal_rasterize (#4432)
  • Enable PAM for band histogram and statistics (#4244)
  • Add longitude_of_prime_meridian value to PRIMEM
  • Fix SetNoDataValue?() - do not update when already set to new value (#4484)
  • Convert longitude values in [180,360] interval to [-180,180] (#4512) - override with config option GDAL_NETCDF_CENTERLONG_180=0
  • Support 2D GEOLOCATION arrays when a projected variable has coordinates attribute and supporting lon/at arrays (#4513)
  • Ignore coordinate and bounds variables (CF sections 5.2, 5.6 and 7.1) as raster bands, but expose them as subdatasets - this allows to open files with projected SRS (or dimension bounds) directly, without specifying the variable as a subdataset
  • Better support for Gaussian grids - store original latitude values in special Y_VALUES geolocation metadata item and use it for netcdf export (#4514)
  • Write multi-dimensional variables to a single variable (not one for each unrolled band) in CreateCopy?() (#2581)
  • Fix handling of km units in netcdf driver and importFromProj4() (#4769)
  • Fix detection of 1 and 2 pixel width/height netcdf datasets (#4874)
  • Fix subdataset data type info (#4932)
  • Make netCDF driver thread-safe by adding a global mutex (since the netcdf library isn't thread-safe)

NITF driver:

  • nitf_spec.xml: add definition of ACFTB and AIMIDB TREs
  • Don't escape DESDATA for sizes >10mb (#4803)
  • Fix NITF creation when both BLOCKA and TRE are passed in (#4958)
  • Allow reading JPEG-in-NITF where JPEG stream dimensions are larger than NITF dimensions (#5001)
  • Support for cases with 2 LUTs

Northwood driver:

  • Fixes for huge files (>2GB) support (#4565, #4645)

PDF driver:

  • Add CreateCopy?() support
  • Add update support for georeferencing and metadata
  • Add support for selective layer rendering (only with poppler backend)
  • Add GDAL_PDF_BANDS = 3 or 4 config option to select RGB or RGBA rendering; add GDAL_PDF_RENDERING_OPTIONS config option to enable selective feature rendering by combining VECTOR, BITMAP and TEXT values
  • Fix parsing of some georeferencing (r24022)
  • Recognized ISO georeferencing set at the image level (and not at the page level); expose such images as subdatasets (#4695)
  • Support Poppler 0.20 (and for current Poppler development version 0.23/0.24)
  • UTF-16 support
  • Report registration points as GCPs (OGC Best Practice)
  • Allow building driver with both Poppler and Podofo (testing purposes mostly)
  • Fix crashes on some PDF files with poppler >= 0.17.0 (#4520)
  • Improve rounding of raster dimensions (#4775)
  • With podofo, avoid launching the 'pdftoppm' process in a visible console on Windows (#4864)
  • Select neatline whose description is 'Map Layers' when it is found, to keep the best neatline for USGS PDF Topo and add GDAL_PDF_NEATLINE config. option to override that default value.
  • Improve detection of DPI for USGS Topo PDF to get the maximum raster quality (will increase reported dataset height and width)
  • Extract USGS Topo PDF embedded metadata in the EMBEDDED_METADATA domain

PNG driver:

  • Internal libpng upgraded to 1.2.50

PostgisRaster? driver:

  • Implement CreateCopy? and Delete (#4530)
  • Supports reading of tiled raster with irregular blocking and irregular pixel size
  • Cache postgres db connection.
  • Use PG enviroment variables as fallback when settings are not provided in the connection string. (#4533).
  • Do not report nodata value when there is none (#4414)
  • Removed dependency on the 'rid' column.
  • Fix to make SQL queries with un-rounded floating point string representations. (#4736)
  • Fix overview support

Rasterlite driver:

  • Support all resampling methods for internal overviews (#4740)
  • Fix overview support with multi-table datasets (#4568, #4737)
  • Add RASTERLITE_OVR_OPTIONS configuration option to specify options for the tiles of the internal overviews

RMF driver:

  • Fix incorrect zone number detection for Transverse Mercator (#4766)

RPFTOC driver:

  • Relax SanityCheckOK() to avoid rejecting valid CIB datasets (#4791)
  • Avoid selecting a color table that is full black
  • Add missing NITF series code 'TF' for 'TFC' (and fix typo in some other long descriptions) (#4776)

RS2 driver:

  • added various metadata fields (#4997)

SDTS driver:

  • Various fixes when opening ill-formed datasets.

SRP driver:

  • Various fixes when opening ill-formed datasets.

TIL driver:

  • Fix TIL driver using overview (#3482)
  • Add set projection and geotransformation for TILDataset

TSX driver:

  • Fix crashes in Identify() with certain filenames, and the file is empty or doesn't exist (#4622)

VRT driver:

  • VRTWarpedDataset: add INIT_DEST=0 if no INIT_DEST specified (#4571)
  • VRTFilteredSource: fix RasterIO() to take into account source and dest windows (#4616)
  • avoid crashes due to int overflow when dealing with requests filling a buffer larger than 2 GB (#4815)
  • VRTSourcedRasterBand: override ComputeRasterMinMax?(), ComputeStatistics?() and GetHistogram?() to make them run on sources, only when there's one VRTSimpleSource covering the whole VRTSourcedRasterBand
  • solve issue when the VRT is a symlink and that the sources filenames are RelativeToVRT (#4999)
  • Fix relariveToVRT option in VRTRawRasterBand (#5033)

WCS driver:

  • Support version 1.1.2

WebP driver:

  • Allow reading/writing alpha channel (libwebp >= 0.1.4)
  • Add support for reading XMP metadata in the xml:XMP metadata domain

WMS driver:

  • Implement GetMetadataItem?(Pixel_iCol_iLine, LocationInfo?) to retrieve pixel attributes
  • Retrieve nodata, min and max values, defined per band or per dataset in the config file (#4613)
  • Add GetColorTable?(), used by the TiledWMS mini driver (#4613)
  • Update TiledWMS mini-driver to support new variable substitution mechanism, min/max/nodata settings, color table support (#4613)
  • Add a <UserPwd?> element in the XML service description file

XYZ driver:

OGR 1.10.0 - Overview of Changes

Core:

  • Add OGRLayerDecorator class (decorator base class for OGRLayer),
  • Add OGRWarpedLayer class (on-the-fly reprojection of a base layer)
  • Add OGRUnionLayer class (on-the-fly concatenation of several base layers)
  • Add OGRFieldDefn::IsSame?() and OGRFeatureDefn::IsSame?()
  • Add OGRAbstractProxiedLayer, OGRProxiedLayer and OGRLayerPool classes
  • OGRGeometry: set SRS of geometries created via GEOS functions from the source geometry (idem for geometries returned by OGR_G_ForceXXXX() methods) (#4572)
  • OGRFeature: Add OGR_SETFIELD_NUMERIC_WARNING option to issue a warning when not fully

numeric values are assigned to numeric fields. If the field type is Integer, then also warn if the long value doesn't fit on a int.

  • Add OGR_G_PointOnSurface() and add it to SWIG bindings
  • Add OGR_G_ForceToLineString / OGRGeometryFactory::forceToLineString to join connected segments in line strings.
  • Better implementation of getDimension() for OGRMultiPoint, OGRMultiLineString, OGRMultiPolygon and OGRGeometryCollection
  • Fix incorrect rounding in OGRFormatDouble that affected geometry WKT output (#4614)
  • OGRSQL: support UNION ALL of several SELECTs
  • OGRSQL: defer ORDER BY evaluation until necessary, so that a spatial filter can be taken into account after layer creation
  • OGRSQL: allow using indexes when OR or AND expressions are found in the WHERE clause
  • OGRSQL: fix incorrect result with more than 2 JOINs and SELECT with expressions with field names (#4521)
  • OGRSQL: fix 'SELECT MAX(OGR_GEOM_AREA) FROM XXXX' (#4633)
  • OGRSQL: fix invalid conversion from float to integer (#4634)
  • OGRSQL: fix behaviour of binary operations when one operand is a NULL value
  • OGRDataSource::CopyLayer?(): take into account field renaming by output driver (e.g. Shapefile driver that might truncated field names) (#4667)
  • OGRLayer::FilterGeometry?() : speed-up improvement in some cases and use GEOSPreparedIntersects() when available (r23953, r25268)
  • OGRLayer::SetNextByIndex?(): return OGRERR_FAILURE if index < 0
  • OGRLineString::setPoint( int iPoint, OGRPoint * poPoint ) : avoid promotting the line to 25D if the point is only 2D (#4688)
  • OGRGeometry::Centroid(): make it work properly on POINT EMPTY with latest SVN geos version
  • Add reversePoints() method on linestring

OGRSpatialReference:

  • Add support for OGC URLs (#4752)
  • add dumpReadable() method on OGRSpatialReference
  • Differentiation between Hotine Oblique Mercator (aka Variant A) and Oblique Mercator (aka Variant B) (#104, #2745)
  • EPSG: Map methods 1028 and 1029 to normal equidistant cylindrical (#4589)
  • EPSG: add support for EPSG:5514 (Krovak East North)
  • EPSG: Add EPSGTreatsAsNorthingEasting() to deal with CRS with non-GIS friendly northing/easting axis order similarly as what was done with lat/long geographic SRS, and automatically do coord swapping in GML/WFS drivers in that case (#4329)
  • Ozi datum support: support all Ozi datums (#3929), support UTM projection
  • USGS: support USGS angular parameters in radians
  • MorphFromESRI() fix WKT : compare SPHEROID and PRIMEM parameters instead of names (#4673)
  • MorphToESRI(): Add common New Zealand GEOGCS values (#4849)
  • OSR ESRI: add GCS mapping name for ETRS89
  • ogr_srs_esri: Make InitDatumMappingTable?() thread-safe
  • ecw_cs.wkt: Add entry for European Terrestrial Reference System 1989.
  • pci_datum.txt: Add entry for D894
  • accept "+proj=XXXX [...] +wktext" as a valid PROJ.4 string, even if projection is unhandled by OGR
  • recognize +proj=etmerc when importing from PROJ.4 string; and output +proj=etmerc when exporting Transverse_Mercator to PROJ.4 string if OSR_USE_ETMERC = YES (#4853)

Utilities:

  • ogr2ogr: add a -dim option to force the coordinate dimension to 2 or 3
  • ogr2ogr: accept -nlt PROMOTE_TO_MULTI to ease conversion from shapefiles to PostGIS, by auto-promoting polygons to multipolygons and linestrings to multilinestrings
  • ogr2ogr: add -gcp, -order n and -tps options to georeference ungeoreferenced vectors (#4604)
  • ogr2ogr: fix -select with shapefile output when specified field name case doesn't match source field name case (#4502)
  • ogr2ogr: correctly deal with filenames that begin with 'polygon' or 'multipolygon' as arguments of -clipsrc (#4590)
  • ogr2ogr: return non-zero exit code if the -sql triggers an error (#4870)
  • ogr2ogr: make -t_srs work when there's no per layer source SRS, but there's per feature SRS
  • ogr2ogr: add a -datelineoffset option to provide users with capability to set different offsets than 170 to -170 (#4098)
  • ogr2ogr: add a -fieldmap option (#5021)
  • ogr2ogr: automatically rename duplicated field names of source layer so that the target layer has unique field names
  • ogrupdate.py: new sample script to update an OGR datasource from another one, by trying to identify matches between the 2 datasources
  • ogr_layer_algebra.py: new sample script to use OGR layer algebra operations

Multi driver changes:

  • Fix bad AND priority when spatial and attribute filter are combined in PG, MySQL, SQLite MSSQLSptial and VRT drivers (#4507)

AVCE00 driver:

AVCBin driver:

CSV driver:

  • Allow creating /vsimem/foo.csv
  • Detect and remove UTF-8 BOM marker if found (#4623)
  • Fix handling of empty column names in header (#4654)
  • Allow creating a new .csv file in a directory where there are invalid .csv files (#4824)
  • Use a trick so that the CSV driver creates valid single column files (#4824)
  • Add WRITE_BOM option to CSV driver to write UTF8 BOM for improved Excel/unicode compatibility (#4844)
  • Don't turn \r\n into \n in CSV field output, regardless of LINEFORMAT settings (#4452)
  • Don't left-pad numbers in CSV output when a width is set (#4469)
  • Add support for opening .tsv files, in particular the specific Eurostat .tsv files

DGN driver:

  • Add support to read and write font name in the style (#3392)

DXF driver:

  • Write HACH (Polygon) compatible with other DXF viewers
  • Write layer geometry extent in file header (#4618)
  • Ignore Spline frame control points for VERTEX of POLYLINE (#4683)
  • Add color to POINT, INSERT and HATCH
  • Take into account extruction vector to transform from OCS to WCS for MTEXT, TEXT, POINT, LINE, CIRCLE, ELLIPSE, ARC, SPLINE and HATCH (#4842)

FileGDB driver:

  • Add the FGDB_BULK_LOAD configuration option (#4420)
  • Do compulsory field name laundering. (#4458)
  • Add special SQL commands 'GetLayerDefinition? a_layer_name' and 'GetLayerMetadata? a_layer_name'
  • Implement SetFeature?(), DeleteFeature?() and DeleteField?()
  • Fix inserting features in a layer of geometry type wkbNone
  • Define CLSID/EXTCLSID to fix Feature Class alias being ignored in ArcMap? (#4477)
  • Use more sensible default values for tolerance and scale parameters (#4455)
  • Use ESRI SRS DB to find the WKT definition to use when creating a layer (#4838)
  • Fix the way empty geometries are written
  • Add read support for fields of type GlobalID or GUID (#4882)
  • Add XML_DEFINITION layer creation option
  • Support setting fields of type SmallInteger?, Float and GUID

Geoconcept driver:

  • Partial support of relaxed GXT export syntax and fix when line is incomplete (#4983)

GeoJSON driver:

  • Fix HTTP HEADERS field send to server (#4546)
  • GeoJSON: write crs object as a FeatureCollection? attribute in generated GeoJSON files (#4995); on read, strip AXIS nodes

Geomedia driver:

  • Fix loading of 'boundary' geometries when they are 2.5D or contain more than one inner rings (#4734)

GFT driver:

  • Use OAuth2 authentication (was ClientLogin? in previous versions).

GML driver:

  • Add PREFIX and TARGET_NAMESPACE dataset creation options
  • Fix typo when writing geometry type name of MultiLineString? in GML3 .xsd (#4674)
  • CreateFeature?(): assign spatial ref when it is unset in source feature, even for GML2 case (fixes non-compliance with missing srsName on multi-geometries)
  • Make filtering of features based on OGR_GEOMETRY work (#4428)
  • Avoid point duplication concatenating GML curve segments (#4451)
  • Add special SQL command 'SELECT ValidateSchema?()'
  • Allow reading srsDimension attribute when set on LineString? element, and not on posList (#4663)
  • Partial support for reading GML 3.3 compat encoding profile, limited to <gmlce:SimplePolygon>, <gmlce:SimpleRectangle>, <gmlce:SimpleTriangle>, <gmlce:SimpleMultiPoint> elements
  • Support WFS GetFeature? response document to be piped and opened with /vsistdin/
  • Support specifying connection string as 'filename.gml,xsd=some_filename.xsd' to explicitely provide a XSD
  • Improve detection of extent and srs for WFS 2.0
  • Allow ISO-8859-15 encoded files to be used by Expat parser (#4829)
  • Handle CompositeCurve? like MultiCurve? (for NAS)
  • Remove duplicate points in rings
  • Add OGR_ARC_MINLENGTH to limit the number of segments in interpolated arcs
  • When there are several geometries per feature, use geometry inside <XX:geometry> element for Inspire compatibility
  • Return per-feature SRS if there's no global SRS for a layer
  • Parse correctly <gml:outerBoundaryIs> when there are attributes in the element (#4934)
  • Recognize <gml:GeodesicString>
  • Recognize <gml:Envelope> elements (#4941)
  • Fix crash when reading CityGML attribute with empty string (#4975)

ILI driver:

  • Support for format codes (#3972)
  • ILI1: Use Topic name from model in itf output
  • ILI1: Recode ISO 8859-1 strings
  • ILI1: Various fixes related to enumerations
  • ILI2: Fix reading with models

Ingres driver:

  • Add effuser and dbpwd connection parameters.
  • Enhance EPSG search bath on WKT AUTH ids.
  • Use system defined sequence for fid instead of global (#4567)
  • Fix a name mixup when creating the table (#4567)

KML driver:

  • Report empty layers when there is only empty layers; don't error out on empty document (#4511)
  • Recognize file whose root element is <Document> and not <kml>

Idrisi driver:

  • Add support for reading attributes from .AVL / .ADC files
  • Ignore nodata value when computing min/max of CreateCopy?()'ed dataset
  • Avoid setting unset values of mean and stddev to PAM (#4878)

LIBKML driver:

  • Add stylemap support
  • Add support for GroundOverlay? reading (#4738)
  • Fix memory leak in OGRLIBKMLDataSource::FindSchema?() when a schema is referenced by name and not by id (#4862)
  • Correct use of temporary variable for schema field names (#4883)
  • Update the layer class internal feature count when a new feature is added

MITAB driver:

  • Fix unwanted changes in data types while converting a datasource to MIF (#3853)
  • Fix incorrect handling of Mollweide projection (#4628)
  • Fix double free in OGRTABDataSource::Create() when exiting with error (#4730)
  • Add datum mapping between EPSG/authority codes and the MapInfo? definitions. Falls back to old behaviour of name/string matching. (#481)
  • Avoid negative zeros in TOWGS84 read from TAB file (#4931)

MSSQLSpatial driver:

  • Report DeleteFeature/DeleteLayer? capabilities
  • Fix the parser to swap coordinates with geography data type (#4642)
  • Fix to read multipoint geometries correctly (#4781)
  • Fix to read 3D geometries correctly (#4806, #4626)
  • Use MSSQL catalog if geometry_colums doesn't exist (#4967)
  • Utilize OGRFieldDefn::IsIgnored?() (#4534)
  • Remove requirement for identity fid column in MSSQL tables (#4438)

MySQL:

  • Enable auto reconnect to MySQL (#4819)
  • Reset field width and precision when converting from an unhandled field type to TEXT (#4951)

NAS driver:

  • Better support for wfsext:Replace (#4555)
  • Skip elements "zeigtAufExternes" and "objektkoordinaten" (fixes PostNAS #3 and #15)
  • Issue a warning when geometry is overwritten, invalid geometry is found or featureless geometry appears
  • Issue a debug message when a existing attribute is overwritten (to catch array)
  • Use forceToLineString() on line strings (fixes PostNAS #18)
  • Handle MultiCurve? and CompositeCurve?
  • Merge multilinestrings
  • Accept XML files that have AAA-Fachschema.xsd in header (and remove trailing whitespace)
  • Add EPSG:25833

NULL driver:

  • No-op output driver for debugging/benchmarking purpose (Not included in build process)

OCI driver:

  • Fix for index creation when layers are created (#4497)

ODBC driver:

NTF driver:

  • Various fixes when opening ill-formed datasets.

OCI driver:

  • Fix issue with pre-existing tables with laundered names not being recognized (#4966)
  • Make sure the FID counter is correctly initialized when data is appended (#4966)
  • Better quoting of identifiers (#4966)

PGeo driver:

  • PGeo / Geomedia : remove heuristics that tried to identify if a MDB file belonged to the PGeo or Geomedia driver (#4498)

PG driver:

  • Add a 'COLUMN_TYPES' layer creation option (#4788)
  • Fix insertion of features with FID set in COPY mode (#4495)
  • Honour datasource read-only mode in CreateField?(), CreateFeature?(), SetFeature?() and DeleteFeature?() (#4620)
  • Avoid fatal error when the public schema is absent (#4611)
  • Differ SRS evaluation on SQL layers (#4644)
  • Optimize SRID fetching on SQL result layer; compatibility with PostGIS 2.0 by using ST_SRID (#4699, #4700)
  • Always fetch the SRS to attach it to feature geometry of result SQL layers.

PGDump driver:

  • Add a 'COLUMN_TYPES' layer creation option (#4788)

REC driver:

  • Add robustness checks against corrupted files

SDE driver:

  • Add support for CLOB and NCLOB data type (#4801)

Shapefile driver:

  • Add support for reading ESRI .sbn spatial index (#4719)
  • Add defered layer loading
  • Implement auto-growing of string and integer columns
  • Add a special SQL command 'RESIZE table_name' to resize (shrink) fields to their optimium size, also available as a RESIZE=YES layer creation option for conveniency
  • Recode field name from UTF-8 to DBF encoding in CreateField?()
  • In creation, limit fields of type OFTString to a width of 254 characters (#5052)
  • Spatial index optimization (#4472)
  • Fix GetFeatureCount?() when spatial filter set, especially on big-endian hosts (#4491)
  • Fixed wrong return value of OLCStringsAsUTF8 in OGRShapeLayer::TestCapability? if GDAL was compiled without iconv support (#4650)
  • Support properly creating layers that include dot character
  • Avoid assert() if SetFeature?() is called on a feature with invalid FID (#4727)
  • Correctly deal with .cpg files containing 8859xx string (#4743)
  • Make TestCapability?(OLCFastFeatureCount) return TRUE when an attribute filter is set only if attribute indices can be used
  • Shapelib: Fix memory leaks in error code path of DBFCreateLL() (#4860)
  • Deal better with shapefile directories with foo.shp and FOO.DBF, particularly for REPACK support, and particularly for Windows OS (on Linux, foo.shp and FOO.DBF will be 2 different layers)
  • Delete temporary _packed.cpg file generated during REPACK of a layer whose .dbf has an accompaying .cpg file
  • In DeleteDataSource?(), delete .cpg file if existing

S57 driver:

  • Various fixes when opening ill-formed datasets.
  • Preliminary support for FFPT/FFPC update records (#5028)
  • Add RECODE_BY_DSS suboption to OGR_S57_OPTIONS configuration option that can be set to YES so that the attribute values are recoded to UTF-8, from the character encoding specified in the S57 DSSI record (#5048, #3421, adapted from patch by julius6)

SQLite/Spatialite driver:

  • Add support for tables with multiple geometry columns (#4768)
  • Add (preliminary) support for Spatialite 4.0 database changes (#4784)
  • Make GDAL loadable as a SQLite3 extension (named VirtualOGR) (#4782)
  • Add support for OFTDateTime/OFTDate/OFTTime field types
  • Add a SRID layer creation option
  • Make REGEXP function available by using libpcre (#4823)
  • Add a COMPRESS_COLUMNS layer creation option to make string columns ZLib compressed
  • Implement minimalistic set of spatial functions if Spatialite isn't available
  • Spatialite: make use of spatial filter on result layers when the SQL expression is simple enough (no join, etc...) (#4508)
  • Spatialite: spatial index can be used even when linking against regular SQLite (#4632)
  • Spatialite: to improve performance, defer spatial index creation at layer closing or when a spatial request is done
  • Spatialite: use Spatialite 'layer_statistics' and 'spatialite_history' to cache the row count and extent of (spatial) layers
  • Spatialite: add support for reading Spatialite 4.0 statistics (filling them on the fly still not implemented)
  • Spatialite: for Spatialite 4.0, translate INIT_WITH_EPSG=NO into InitSpatialMetaData?('NONE') to avoid filling the spatial_ref_sys table
  • On SQL result layers, report the SRS of the geometry of the first feature as the layer SRS
  • Defered layer definition building for table and view layers
  • Speed-up opening of a result layer that has an ORDER BY
  • Cache GetExtent?() result
  • Allow inserting empty feature
  • Return empty layer when SELECT returns 0 rows (#4684)
  • Add compatibility for newer SQLite versions when using the VFS layer (#4783)
  • Add missing column name quoting

TIGER driver:

  • Fix opening TIGER datasource by full file name (#4443)
  • Updated to use VSI*L

VFK driver:

  • SQLite is now a compulsory dependency for VFK
  • Store VFK data in SQLite (in-memory) database
  • Don't read whole file into buffer, but only on request
  • id property of data records in VFK file exceed int limit -> use GUIntBig for id values
  • Fix reading multi-line data records
  • Recode string feature properties - convert from cp-1250 to utf-8
  • Skip invalid VFK features

VRT driver:

  • Add <OGRVRTWarpedLayer> (on-the-fly reprojection of a base layer)
  • Add <OGRVRTUnionLayer> (on-the-fly concatenation of several base layers)
  • Add <FeatureCount?>, <ExtentXMin>, <ExtentYMin>, <ExtentXMax>, <ExtentYMax> to <OGRVRTLayer>
  • Add an optional 'dialect' attribute on the <SrcSQL> element
  • Fix OGR VRT sensitive to whitespace and <?xml> nodes (#4582)
  • Optimizations to avoid feature translation when possible
  • Implement GetFIDColumn() (#4637)
  • Implement StartTransaction?(), CommitTransaction?() and RollbackTransaction?() by forwarding to the source layer
  • Auto enable bAttrFilterPassThrough when possible

WFS driver:

  • WFS paging: change default base start index to 0 (was 1 before), as now clarified by OGC (#4504)
  • Accept several type names if the TYPENAME parameter is specified
  • Forward SQL ORDER BY clause as a WFS SORTBY for WFS >= 1.1.0
  • Fix spatial filter with WFS 2.0 GeoServer?
  • Check that left-side of a binary operator in an attribute filter is a property name before submitting it to server-side
  • Major overhaul of URL-escaping
  • Fix issues when querying the WFSLayerMetadata and that one of the field contains double-quote characters (#4796)
  • Remove auto-added ACCEPTVERSIONS=1.0.0,1.1.1 - when none of VERSION or ACCEPTVERSIONS were specified - because it does not work with WFS 2.0 only servers
  • Automagically convert MAXFEATURES= to COUNT= if people still (wrongly) used it for WFS 2.0
  • Honour paging when running GetFeatureCount?() and that RESULTTYPE=HITS isn't available (e.g. WFS 1.0.0) (#4953)
  • Optimize WFS 1.0 (or WFS 1.1.0 where RESULTTYPE=HITS isn't available) so that in some circumstances the GML stream downloaded is used to compute GetFeatureCount?() and GetExtent?() together
  • Fix segfault on non-GML output when there's SRS axis swapping but the feature has no geometry (#5031)

XLS driver:

  • Set FID to the row number in the spreadsheet software (first row being 1). In case OGR detects a header line, the first feature will then be assigned a FID of 2 (#4586)
  • Non-ascii path support for Windows (#4927)

SWIG Language Bindings

All bindings:

CSharp bindings:

Java bindings:

  • Fix compilation issue with SWIG 2.0.6 on Java bindings (#4669)
  • New test application: ogrtindex.java
  • Fix values of gdalconst.DCAP_* and gdalconst.DMD_* constants (#4828)
  • Fix check for opaque colors in getIndexColorModel()

Perl bindings:

  • Specify module files to install
  • Return values have to be mortal, this was not the case in many instances.
  • New method Driver::Name aka GetName?
  • doc target in GNUmakefile to call doxygen
  • Default to first band in GetRasterBand?.
  • New method Geo::OGR::Layer::DataSource?
  • New method Geo::OGR::Layer::HasField?
  • Geometry method accepts geometries in Perl structures
  • Fixed a bug in FeatureDefn::create which changed the fields.
  • New experimental methods ForFeatures? and ForGeometries?.
  • InsertFeature?, Tuple and Row methods use the Tuple and Row methods from Feature.
  • Do not use pattern my var = value if ...; as it seemingly may cause unexpected things. target_key is optional argument.
  • Allow setting geometry type with schema argument.
  • Fix incorrect behavior of Geo::OGR::Geometry method Points in the case of a Point (#4833)
  • Preserve the coordinate dimension in Move method

Python bindings:

  • setup.py: Changes to run without setuptools (#4693)
  • setup.py: Automatically run 2to3 for Python3
  • Define nonzero on Layer object to avoid GetFeatureCount?() being called behind our back when doing 'if a_layer:' (#4758)
  • Fix performance problem when instanciating Feature, especially with Python 3
  • Add RasterBand?.ReadBlock?(), mostly for driver testing
  • Reject strings when array of strings are expected
  • make gdal.PushErrorHandler?() also accept a Python error handler function as an argument (#4993)
  • Fix Feature.ExportToJSon() to write the id attribute when it is 0 (the undefined value is NullFID == -1)