Release/1.9.0-News

GDAL/OGR 1.9.0 Release Notes

In a nutshell…

  • New GDAL drivers: ACE2, CTG, E00GRID, ECRGTOC, GRASSASCIIGrid, GTA, NGSGEOID, SNODAS, WebP, ZMap
  • New OGR drivers: ARCGEN, CouchDB, DWG, EDIGEO, FileGDB, Geomedia, GFT, IDRISI, MDB, SEGUKOOA, SEGY, SVG, XLS
  • Significantly improved drivers: NetCDF
  • Encoding support for shapefile/dbf (#882)
  • RFC 35: Delete, reorder and alter field definitions of OGR layers
  • RFC 37: Add mechanism to provide user data to CPLErrorHandler (#4295)
  • gdalsrsinfo: new supported utility to report SRS in various form (supercedes testepsg)

New installed files

  • data/nitf_spec.xml and data/nitf_spec.xsd

Backward compatibility issues

  • GTiff: ensure false easting/northing in geotiff geokeys are treated as being in geosys units (#3901)
  • GRIB: Fix grid vs cell-center convention (#2637)
  • OGR SQL: with DISTINCT, consider null values are such, and not as empty string (#4353)

GDAL/OGR 1.9.0 - General Changes

Build(Unix):

  • Add --with-rename-internal-libtiff-symbols and --with-rename-internal-libgeotiff-symbols flags in order to safely link against an external libtiff (3.X) and a GDAL built with internal libtiff (4.0) support (#4144)
  • Add --with-mdb --with-java,--with-jvm-lib, --with-jvm-lib-add-rpath options
  • Add --with-podofo, --with-podofo-lib, --with-podofo-extra-lib-for-test options
  • Add --with-armadillo
  • Update to libtool 2.4
  • Fix linking against static libkml (#3909)
  • Fix Xerces detection by using LIBS instead of LDFLAGS (#4195)
  • Check for .dylib too, when configuring MrSID SDK paths (#3910)
  • Fix wrong include order in GNUmakefile of GPX and GeoRSS drivers (#3948)
  • cpl_strtod.cpp: Enable android support (#3952).
  • ensure swig-modules depends on lib-target so make -j works with swig bindings
  • Change how we check for GEOS >= 3.1 (#3990)
  • Define SDE64 on at least x86_64 platforms (#4051)
  • Make ./configure --with-rasdaman=yes work (#4349)
  • MinGW cross compilation: clear GEOS_CFLAGS and XERCES_CFLAGS if headers found in /usr/include, do not use Unix 64 bit IO
  • MinGW build: define MSVCRT_VERSION to 0x0601 if not already set

Build(Windows):

  • Move MSVC warning disabling to nmake.opt, add SOFTWARNFLAGS for external code
  • Use nmake.local (#3959)
  • cpl_config.h.vc: fix up so it also works with mingw (#3960)
  • Build testepsg utility by default when OGR is enabled (#2554)

GDAL 1.9.0 - Overview of Changes

Port:

  • /vsigzip/ : Avoid reading beyond file size in case of uncompressed/stored files in zip (#3908)
  • /vsicurl/ : Better support for escaped and UTF-8 characters
  • /vsicurl/ : speed-up with a per-thread Curl connection cache
  • /vsicurl/ : read https directory listing
  • /vsicurl/ : look for GDAL_DISABLE_READDIR_ON_OPEN configuration option in Open() and Stat() to avoid trying fetching the directory file list
  • /vsicurl/ : fix performance problem when parsing large directory listings (#4164)
  • /vsicurl/ : recognize listing of Apache 1.3
  • /vsicurl/ : fix ReadDir?() after reading a file on the same server
  • /vsicurl/ : fetch more info (size, date) when listing FTP or HTTP directories and save it in cache; use those info for ReadDir?() and Stat()
  • /vsicurl/: accept 225 as a valid response code for FTP downloads (#4365)
  • /vsicurl/ : add CPL_VSIL_CURL_ALLOWED_EXTENSIONS configuration option that can be used to restrict files whose existence is going to be tested.
  • /vsitar/ : Recognize additionnal .tar files with slightly header differences
  • /vsizip/ : wrap the returned file handle in a BufferedReader?
  • /vsizip/ : fix 1900 year offset for year returned by VSIStatL()
  • /vsizip and /vsitar: remove leading './' pattern at the beginning of filenames contained in the archive
  • /vsistdout_redirect/ : New virtual file system driver that has the same behaviour as /vsistdout/ (write-only FS) except it can redirect the output to any VSIVirtualFile instead of only stdout (useful for debugging purposes)
  • Implement VSI*L read caching - useful for crappy io environments like Amazon
  • VSI*L: Add Truncate() virtual method and implement it for unix, win32 and /vsimem file systems
  • VSI*L: Add ReadMultiRange?() virtual method to read several ranges of data in single call; add an optimized implementation for /vsicurl/
  • VSIFEofL(): make it more POSIX compliant.
  • Fine tune CPLCorrespondingPaths() for different basenames when paths involved.
  • VSIWin32FilesystemHandler::Open() : implement append mode. Needed by ISIS2 driver with attached label (#3944)
  • CPLString: add case insensitive find operator (ifind)
  • RFC23: Add the iconv() based implementation of the CPLRecode() function (#3950)
  • Preliminary support for wchar_t with iconv recode (#4135)
  • Avoid calling setlocale if we are already in the C locale, or GDAL_DISABLE_CPLLOCALEC is TRUE (#3979)
  • CPLMiniXML: emit warnings when encountering non-conformant XML that is however accepted by the parser
  • add CPLBase64Encode(); move cpl_base64.h contents to cpl_string.h
  • Use CRITICAL_SECTION instead of Mutex on win32
  • CPLHTTPFetch(): Add a CLOSE_PERSISTENT option to close the persistant sessions
  • CPLHTTPFetch(): Add support for "NEGOTIATE" http auth mechanism
  • CPLHTTPFetch(): Add a CUSTOMREQUEST option
  • VSIBufferedReaderHandle: fix Eof()
  • Add CPLStringList class
  • Add CPLEmergencyError() - to call when services are too screwed up for normal error services to work (#4175)
  • CPLEscapeString(CPLES_URL) : don't escape dot character; fix escaping of characters whose code >= 128

Core:

  • Provide for ABI specific plugin subdirectories on all platforms
  • Force cleanup of datasets when destroying the dataset manager
  • Add a GDALDataset::CloseDependantDatasets?() that can be used by GDALDriverManager::~GDALDriverManager() to safely close remaining opened datasets (#3954)
  • Add GDALRasterBand::ReportError?() and GDALDataset::ReportError?() to prepend dataset name (and band) before error message (#4242)
  • Fix performance problem when serializing huge color tables, metadata, CategoryNames? and GCPs to VRT/PAM (#3961)
  • Be careful about Nan complex values getting histogram, avoid locale issues with statistics metadata
  • GDALRasterBand::IRasterIO() default implementation : don't try to use full-res band if I/O failed on the appropriate overview band (for WMS errors)
  • RasterIO: Return earlier when a write error occured while flushing dirty block
  • GDAL_DISABLE_READDIR_ON_OPEN can be set to EMPTY_DIR to avoid reading the dir, but it set an empty dir to avoid looking for auxiliary files
  • Use sibling file list to look for .aux.xml, .aux, .ovr, world files, tab files
  • Add GDALFindAssociatedFile() (#4008)
  • PAM: Make sure GCPs loaded from a .aux.xml override any existing ones from other sources, like an .aux file
  • PAM: Add cloning of CategoryNames?
  • PAM : PamFindMatchingHistogram?() - fix floating-point comparison
  • GMLJP2: Use  http://www.opengis.net/gml as the schemaLocation
  • GMLJP2: Support for capturing and writing page resolution in a TIFF compatible way (#3847)
  • GDALJP2Box::SetType?() : remove byte-swapping so that SetType?()/GetType() correctly round-trips. Do appropriate changes in JP2KAK and ECW drivers. (#4239)
  • GDALReplicateWord(): fix off-by-one error initialization (#4090)

Algorithms:

  • polygonize: Added GDALFPolygonize() as an alternative version of GDALPolygonize() using 32b float buffers instead of int32 ones. (#4005)
  • gdalwarp: take into account memory needed by DstDensity? float mask (#4042)
  • rasterfill: create working file as a bigtiff if at all needed (#4088)
  • gdalrasterize: use double instead of float to avoid precision issues (#4292)

Utilities:

  • gdalsrsinfo: new supported utility to report SRS in various form (supercedes testepsg)
  • gdalinfo: add '-nofl' option to only display the first file of the file list
  • gdalinfo: add '-sd num' option to report subdataset with the specified number.
  • gdalinfo: add '-proj4' option to gdalinfo, to report a PROJ.4 string for the CRS
  • gdal_translate: propagate INTERLEAVE metadata to intermediate VRT dataset
  • gdal_translate: force quiet mode when outputing to /vsistdout/
  • gdalwarp: Disable CENTER_LONG rewrapping for cutline (#3932)
  • gdalwarp: add -refine_gcps option to discard outliers GCPs before warping (#4143)
  • gdalwarp: add warning if user specifies several of -order, -tps, -rpc or -geoloc options
  • gdalwarp: speed-up when using -tps with large number of GCPs (when GDAL built --with-armadillo)
  • gdalwarp: add support for optional use of libarmadillo to speed-up matrix inversion in -tps mode
  • gdalwarp: detect situations where the user will override the source file
  • gdallocationinfo: do not let one off-db pixel cause all the rest to be supressed (#4181)
  • gdal_rasterize: fix half pixel shift when rasterizing points; make gdal_rasterize utility increase the computed raster extent by a half-pixel for point layers (#3774)
  • gdal_rasterize: when source datasource has a single layer, use it implicitely if none of -l or -sql is specified
  • nearblack: add -color option (#4085)
  • nearblack: improve detection of collar
  • nearblack: remove useless restrictions on number of bands for -setmask and -setalpha options (#4124)
  • gcps2vec.py: Fix command line parsing; Add SRS definition to created vector layer; Use Point geometry when dumping pixel/line coordinates.
  • gdal_merge.py: add support for -separate with multiband inputs (#4059)
  • gdal_merge.py: add a -a_nodata option (#3981)
  • gdal_proximity.py: -co option existed, but was unused...
  • gdal_fillnodata.py: add -co option
  • Add gdal_ls.py and gdal_cp.py as Python samples
  • Add new sample utility, gdal_edit.py, to edit in place various information of an existing GDAL dataset (projection, geotransform, nodata, metadata) (#4220)
  • gdalcopyproj.py: make it copy GCPs too
  • Add warning if a target filename extension isn't consistant with the output driver
  • Add --pause for convenient debugging, document it and --locale

Multi-driver topics:

  • Implement reading XMP metadata from GIF, JPEG, PNG, GTiff, PDF and the 5 JPEG2000 drivers. The XMP metadata is stored as raw XML content in the xml:XMP metadata domain (#4153)
  • Mark BT, DIPEx, ERS, FAST, GenBIN, GSC, GSBG, GSAG, GS7BG, JDEM, JP2ECW, PNM, RMF, TIL, WCS and WMS drivers as compatible with VSI virtual files
  • Port DOQ1, DOQ2, ELAS, Idrisi, L1B, NDF, NWT_GRD, NWT_GRC, USGSDEM to VSI virtual file API
  • PAM-enable BT and BLX drivers
  • Implement Identify() for AAIGrid, ACE2, DTED, NWT_GRD, NWT_GRC, WMS, WCS, JDEM and BSB drivers
  • Make GIF, JPEG and PNG drivers return a non NULL dataset when outputing to /vsistdout/
  • HFA and GTiff: add explicit error message when trying to add external overviews when there are already internal overviews (#4044)
  • Initialize overview manager to support external overviews for AAIGRID, DIPX, ELAS, GXF, FIT, FITS, GMT, GRIB, GSAG, GSBG, GS7BG, ILWIS, L1B, LCP, Leveller, NWT_GRD, NWT_GRC, RIK, SDTS and SAGA

AAIGrid:

  • Make opening from /vsicurl/ work even when the server returns an empty file list

ACE2 driver:

  • New for GDAL/OGR 1.9.0
  • Read ACE2 DEM

AIG driver:

  • Support uncompressed integer files, new in ArcGIS 10 it seems (#4035)
  • Use color table from PAM if no native one (#4021)
  • Fallback to PAM mechanism for RAT (#4021)

BSB driver:

  • Parse the GD keyword in BSB_KNP to recognize European 1950 datum (#4247)

CEOS2 driver:

  • avoid potential crash reading past end of string. (#4065)

CTG driver:

  • New for GDAL/OGR 1.9.0
  • Read USGS LULC Composite Theme Grid files

DIMAP driver:

  • Add support for DIMAP2
  • Check underlying raster for SRS. There are cases where HORIZONTAL_CS_CODE is empty and the underlying raster is georeferenced

E00GRID driver:

  • New for GDAL/OGR 1.9.0
  • Read Arc/Info? Export E00 GRID

ECRGTOC driver:

  • New for GDAL/OGR 1.9.0
  • Read TOC.xml file of ECRG products

ECW driver:

  • Use a long refresh time for  ecwp:// connections to ensure we get full resolution data, make configurable
  • Re-enable writing non8bit data in jpeg2000
  • Add implementation of an Async reader (4.x SDK)
  • Improve to support all /vsi stuff (#2344)
  • Ensure ECW_ENCODE_ values are applied for direct Create as well as CreateCopy?
  • force adfGeoTransform[5] sign to negative. (#393)
  • Mark GDAL_DCAP_VIRTUALIO=YES when the driver is configured in read-only mode
  • Ensure we fallback to native geotransform if no pam override
  • Try to read projection info embedded in ECW file before reading the worldfile (#4046)
  • Add support for updating geotransform and projection info of a ECW file (#4220)
  • Fix ECW_CACHE_MAXMEM that was without effect and ECW_AUTOGEN_J2I that set an unrelated ECW parameter (#4308)
  • Allow to open a ECW file with invalid EPSG code from SWIG bindings (#4187)

EHdr driver:

  • Improve floating point detection (#3933)
  • Recognize MIN_VALUE and MAX_VALUE as found in ETOPO1 header
  • Try opening the .sch file for GTOPO30 or SRTM30 source file
  • Ignore bogus .stx file where min == nodata

EIR driver:

  • Add support for DATA_TYPE keyword

ENVI driver:

  • Add support for ESRI style coordinate system string (#3312)
  • Try to guess interleave mode from file extension, if interleave keyword is missing
  • Refuse to open unsupported types, but attempt to open everything else.

ENVISAT driver:

  • Correct dfGCPLine values for stripline products (#3160, #3709)
  • Fix checking of tie points per column for MERIS GCPs (#4086)
  • Report metadata from the ASAR ADS and GADS in the RECORDS metadata domain (#4105)
  • Read MERIS metadata (#4105)
  • Read data from ERS products in ENVISAT format (#4105)
  • Improved MERIS Level 2 bands datection (#4141 and #4142)

EPSILON driver:

  • Now require libepsilon 0.9.1 to build (now dual LGPL/GPL) (#4084)

ERS driver:

  • Use case insensitive find so case does not matter (#3974)
  • Handle case of 1 m pixel resolution when CellInfo? is missing (#4067)
  • Implement ERSRasterBand::SetNoDataValue?() (#4207)
  • Add support for DATUM, PROJ and UNITS creation option; report the values read from the .ers file in the ERS metadata domain (#4229)

GeoRaster driver:

  • Set nodata causes invalid XML metadata (#3893)
  • Fix SetStatistics?() failure (#4072)
  • Fix defaut interleaving (#4071)
  • modelCoordinateLocation=CENTER default (#3266)
  • Cache block/level error in update (#4089)
  • Fix sequence.nextval not supported (Oracle 10g) (#4132)
  • change BLOCKING option to OPTIMALPADDING
  • fix 'cannot specify columns on insert create option' (#4206)
  • Fix ULTCoordinate Rows/Columns? swapping (#3718)
  • Fix loading of small images, FlushCache? issue (#4363)

GIF driver:

  • Make CreateCopy?() more friendly with outputing in /vsistdout/

GRIB driver:

  • Fix grid vs cell-center convention (#2637)
  • use /vsi for all jpeg2000 files now
  • Fix to allow GFS data to show up properly (#2550)
  • Added a ConfigOption? in GRIB driver to not normalize units to metric when reading the data
  • Fixed grib1 & grib2 : pixel size precision introduces error for corner coordinates (#4287)

GTA driver:

  • New for GDAL/OGR 1.9.0
  • Read/write support for Generic Tagged Arrays

GTiff driver:

  • Ensure false easting/northing in geotiff geokeys are treated as being in geosys units. Add GTIFF_LINEAR_UNITS=BROKEN config option to try and read old broken files, and logic to cover for older libgeotiffs when reading (#3901)
  • Add support for a special tag to keep track of properly written linear units (#3901)
  • Implement deferred directory chain scanning to accelerate simple opens
  • Make GTiff COPY_SRC_OVERVIEWS to deal with unusual source overview sizes (#3905)
  • Fix bug when using -co COPY_SRC_OVERVIEWS=YES on a multiband source with external overviews (#3938)
  • Add logic to fill out partial tiles on write in for jpeg images (#4096)
  • Updated to libtiff 4.0.0 final
  • Refresh with libgeotiff 1.4.0, to support for GeogTOWGS84GeoKey
  • Add support for Geocentric SRS
  • libtiff: Enable DEFER_STRILE_LOAD
  • Turn warning 'ASCII value for tag xx into more silent CPLDebug message
  • Overviews: Improve error reporting for >16bit images to JPEG compression
  • Use CPLAtof() for geotiff and epsg .csv file handling (#3886, #3979)
  • Lots of Imagine and ESRI PE string citation handling changes from 1.8-esri. Some citation related changes only compiled in if ESRI_SPECIFIC defined.
  • Give PAM information precidence over metadata from GeoTIFF itself. Avoid unnecessary (default) writes of scale/offset. Treat (0,1,0,0,0,-1) as a default geotransform as well as (0,1,0,0,0,1).
  • Migrate in some ESRI only logic for 1bit color tables, AdjustLinearUnits? and default for 1bit data
  • Add a GTIFF_IGNORE_READ_ERRORS configuration option (#3994)
  • Lazy loading of RPC/RPB/IMD files (#3996)
  • Add mutex protection in GTiffOneTimeInit() to avoid occasionnal segfaults
  • Stop interpreting 4th band as alpha when not defined
  • Also list nSubType == FILETYPE_PAGE as subdatasets
  • CreateCopy?(): copies category names from the source bands
  • Add capability of writing TIFFTAG_MINSAMPLEVALUE and TIFFTAG_MAXSAMPLEVALUE
  • Don't prevent from loading GTiff driver even if libtiff version mismatch detected (#4101)
  • Use GTIFF_ESRI_CITATION flag to disable writing special meaning ESRI citations
  • Optimize GTiffRGBABand implementation (#3476)
  • Add GTIFF_DIRECT_IO config. option that can be set to YES so that IRasterIO() reads directly bytes from the file using ReadMultiRange?().
  • Use VSI_TIFFOpen() in GTIFFBuildOverviews() to make it work on virtual file systems
  • Treat _UNASSALPHA as alpha

GRASSASCIIGrid driver:

  • New for GDAL/OGR 1.9.0
  • Read GRASS ASCII grids (similar to ArcInfo? ASCII grids)

GRIB driver:

  • Check for memory allocation failures

HDF4 driver:

  • Use larger object name buffer
  • Handle SWopen failures

HDF5 driver:

  • Fix HDF5/BAG handle/memory leaks (#3953)
  • Better error checking
  • Do not return NULL from getprojectionref() (#4076)
  • Identify datasets whose header starts with some XML content (#4196)
  • Fixed HDF5 variable length string attributes reading (#4228)

HFA driver:

  • Add support for writing RATs (#999)
  • Add support for reading 2bit compressed .img files (#3956)
  • Update EPRJ_ list based on input from Erdas, round trip Krovak and Mercator Variant A (#3958)
  • Major push to move projections from 1.6-esri into trunk in HFA driver (#3958)
  • Reinitialize RRDNamesList and ExternalRasterDMS (#3897)
  • Ensure the whole entry is reinitialized when writing proparams and datum (#3969)
  • Ensure PEString cleared if we aren't writing it (#3969)
  • Get nodata from an overview if not present on main band. Set geotransform[1] and [5] to 1.0 if pixelSize.width/height are 0.0. Improve error checking if MakeData?() fails.
  • atof() changed to CPLAtofM() to avoid locale issues.
  • Altered Edsc_BinFunction column "Value" to "BinValues?" and changed type.
  • Equirectangular StdParallel?1 changed to LatitudeOfOrigin?.
  • Logic to preserve psMapInfo->proName as the PROJCS name for UTM/StatePlane.
  • Special state plane zone handling.
  • Special wisconsin handling for some LCC and TM SRSes.
  • 1-bit null blocks to default to 1 in ESRI_BUILDs
  • Add support for GDA94 (#4025)

Idrisi driver:

  • Fix segfaults when fields are missing in .ref or .rdc files (#4100)
  • Fix problem with inverse flattening when reading a SRS of a sphere (#3757)

INGR driver:

  • Set NBITS for 1 bit bands

ISIS2/ISIS3 driver:

  • Various improvements to PDS related drivers (#3944)

JaxaPalsar? driver:

  • Fixed datatype of ALOS PALSAR products Level 1.5 (#4136)
  • Fixed detection of unsupported PALSAR Level 1.0 products (#2234)

JPIPKAK driver:

KMLSUPEROVERLAY driver :

  • Remove spaces between coordinates in coordinate triplets as mandated by KML 2.2 spec, to restore compatibility with Google Earth 6.1.0.5001 (#4347)

LAN driver:

  • Preliminary support for writing gis/lan files

MEM driver:

  • Add support for remembered histograms and PIXELTYPE

MG4Lidar driver:

  • Clamp nOverviewCount, some LiDAR files end up with -1 overviews

MrSID driver:

  • Initialize overview manager to enable RFC 15 mask band support (#3968)
  • Mark GDAL_DCAP_VIRTUALIO=YES when the driver is configured in read-only mode
  • Handle LTI_COLORSPACE_RGBA

NetCDF driver:

  • Set cylindrical equal area representation to the proper cf-1.x notation (#3425)
  • Fix precision issue in geotransform (#4200) and metadata
  • Add support for netcdf filetypes nc2(64-bit) and nc4 to netCDFDataset (#3890, #2379)
  • Add function Identify and IdentifyFileType?() (#3890, #2379)
  • Temporarily disabling PAM for netcdf driver (#4244)
  • Make creation of geographic grid CF compliant (#2129)
  • Fixes for netcdf metadata export: duplication, Band metadata, int/float/double vs. char* and add_offset/scale_factor (#4211, #4204), double precision ( 4200)
  • Fix netcdf metadata import (float and double precision) (#4211)
  • Improve import of CF projection
  • Add netcdf history metadata (#4297)
  • CF-1.5 compatible export of projected grids (optional lon/lat export)
  • Fix LCC-1SP import and export (#3324)
  • Fix handling of UNITS import and export (#4402 and #3324)
  • Fix upside-down export and import of grids without projection and geotransform (#2129, #4284)
  • Support import of polar stereographic variant without standard parallel (#2893)
  • New driver options
  • Add simple progress indicator
  • Add support for netcdf-4, HDF4 and HDF5 (#4294 and #3166)
  • Add support for deflate compression
  • Add format support information and CreateOptionList? to driver metadata
  • Add support for valid_range/valid_min/valid_max
  • Proper handling of singed/unsigned byte data
  • Add support for Create() function and significantly refactor code for export (#4221)
  • Improvements to CF projection support (see wiki:NetCDF_ProjectionTestingStatus)

NGSGEOID driver:

  • New for GDAL/OGR 1.9.0
  • Read NOAA NGS Geoid Height Grids

NITF driver:

  • Add a generic way of decoding TREs from a XML description file located in data/nitf_spec.xml
  • Add a new metadata domain xml:TRE to report as XML content the decoded TREs
  • Add NITF_OPEN_UNDERLYING_DS configuration option that can be set to FALSE to avoid opening the underlying image with the J2K/JPEG drivers
  • Support JP2KAK driver for jpeg2000 output, use /vsisubfile/ in all cases
  • NITFCreate(): deal with cases where image_height = block_height > 8192 or image_width = block_width > 8192 (#3922)
  • Add IREPBAND and ISUBCAT creation option (#4343)
  • Make sure scanline access is used only on single block image (#3926)
  • Add a NITF_DISABLE_RPF_LOCATION_TABLE_SANITY_TESTS configuration option that can be set to TRUE to blindly trust the RPF location table (#3930)
  • Correctly assign hemisphere for a ICORDS='U' NITF file with accompagnying .nfw and .hdr files (#3931)
  • Make PAM available at band level for JPEG/JPEG2000 compressed datasets (#3985)
  • Read IMRFCA TRE for RPC info. Read CSEXRA TRE.
  • Read CSDIDA and PIAIMC TREs as metadata
  • Optional support for densifying GCPs and applying RPCs to them
  • Add GetFileList?() that captures associated files with some NITF products.
  • Added ESRI only ExtractEsriMD() function. Add raw header capture in NITF_METADATA domain in base64 encoded form.
  • Fetch NITF_DESDATA in segment data; decode specialized fields of XML_DATA_CONTENT and CSATTA DES
  • Truncate TRE name to 6 character (#4324)
  • Take into account the presence of comments when patching COMRAT for JPEG/JPEG2000 NITF (#4371)

NWT_GRD driver:

  • Fix interpolation of color when the maximum z value is below a threshold of the color scheme (#4395)

OPENJPEG driver:

  • Optimize decoding of big images made of a single block
  • Fallback to PAM to get projection and geotransform

PCIDSK driver:

  • Refresh PCIDSK SDK from upstream
  • Fix support for band description setting, add BANDDESCn creation option
  • Implement GetCategoryNames?(), and color table from metadata for PCIDSK
  • Fix exception on files with bitmaps as bands in GetFileList?()
  • Avoid closing and reopening file so we don't fracture the SysBMData with a metadata write
  • In read-only, if .pix is raster (resp. vector) only, then make sure that OGR (resp. GDAL) cannot open it

PDF driver:

  • Support linking against podofo library (LGPL) instead of poppler --> however pdftoppm binary from poppler distribution is needed for rasterization

PDS driver:

  • Add support for MISSING and MISSING_CONSTANT keywords for nodata values (#3939)
  • Add support for uncompressed images in the UNCOMPRESSED_FILE subdomain (#3943)
  • Add support for PDS_Sample/LineProjectOffset_Shift/Mult (#3940)
  • Preliminary qube write support (#3944)
  • Fix band offset computation in BSQ (#4368)

PNG driver:

  • Add compatibility with libpng >= 1.5.0 (#3914)
  • Upgrade internal libpng to 1.2.46

PNM driver:

  • Make it compatible with VSI virtual files

PostgisRaster? driver:

  • Speed of PostGIS Raster driver improved. (#3228, #3233)

Rasterlite driver:

  • Robustness against buggy databases
  • Enable QUALITY creation option for WEBP tiles

RS2 driver:

  • Setup to properly support subdataset oriented metadata and overviews (#4006)
  • Allow opening subdatasets by passing in the folder (#4387)

SAGA driver:

  • Fix reading & writing .sdat files bigger than 2GB (#4104)
  • Use nodata value from source dataset in CreateCopy?() (#4152)

SDE driver:

  • Break assumption that LONG==long (#4051)

SNODAS driver:

  • New for GDAL/OGR 1.9.0
  • Read Snow Data Assimilation System datasets

SRP driver:

  • Set Azimuthal Equidistant projection/geotransform info for ASRP north/south polar zones (#3946)
  • ASRP/USRP: fix skipping of padding characters on some datasets (#4254)

SRTMHGT driver:

  • Fix segfault in CreateCopy?() if we cannot create the output file

Terralib driver:

  • Removed driver: was unfinished and is unmaintained (#3288)

TIL driver:

TSX driver:

  • Add support for selecting a directory
  • Make Terrasar-X driver also open TanDEM-X data (#4390)
  • Fix memleaks

USGSDEM driver:

  • Ensure blocks read in C locale (#3886)

VRT driver:

  • Implement VRTDataset::IRasterIO() that can delegate to source Dataset::RasterIO() in particular cases
  • Implement GetMinimum?() and GetMaximum?()
  • GetFileList?(): for /vsicurl/ ressources, don't actually test their existence as it can be excruciating slow
  • VRTComplexSource: correctly deal with complex data type (#3977)
  • Fix 2 segfaults related to using '<VRTDataset', but with invalid XML, as the target filename of VRTDataset::Create()
  • Fix 'VRTDerivedRasterBand with ComplexSource? and nodata value yields potentially uninitialized buffer' (#4045)
  • VRTDerivedRasterBand: Recognize PixelFunctionType? and SourceTransferType? options in AddBand?() for (#3925)
  • Copy GEOLOCATION metadata in CreateCopy?().
  • VRTDerivedRasterBand: register pixel functions in a map for faster access (#3924)
  • VRT warped dataset: limit block size to dataset dimensions (#4137)

WCS driver:

  • Add time support (#3449)
  • Honour dimensionLimit restrictions on WCS request size.
  • Fetch projection from returned image file chunks if they have them (ie. GeoTIFF).
  • Honour Resample option for WCS 1.0.
  • Include service url in GetFileList? if ESRI_BUILD defined
  • Check validity of 'OverviewCount?' parameter
  • Add support for getting the coverage offering details from the xml:CoverageOffering domain
  • Try to preserve the servers name for a CRS (WCS 1.0.0) (#3449).

WebP driver:

  • New for GDAL/OGR 1.9.0
  • Read/write GDAL driver for WebP image format

WMS driver:

ZMap driver:

  • New for GDAL/OGR 1.9.0
  • Read/write GDAL driver for ZMap Plus Grid format

OGR 1.9.0 - Overview of Changes

Core:

  • RFC35: Add OGRLayer::DeleteField?(), ReorderField?(), ReorderFields?() and AlterFieldDefn?()
  • Avoid OGRLineString::addPoint( OGRPoint * poPoint ) to always force the geometry to be 3D (#3907)
  • Add a OGREnvelope3D object and getEnvelope( OGREnvelope3D * psEnvelope ) / OGR_G_GetEnvelope3D() method
  • Add OGR_G_SimplifyPreserveTopology() / OGRGeometry::SimplifyPreserveTopology?()
  • OGR SQL: recognize optional ESCAPE escape_char clause
  • OGR SQL: allow NULL to be used as a value, so that 'SELECT *, NULL FROM foo works'
  • OGR SQL: Accept doublequoting of column_name in 'SELECT DISTINCT "column_name" FROM table_name' (#3966)
  • OGR SQL: OGRGenSQLResultsLayer: if the dialect is explicitely set to OGRSQL, don't propagate the WHERE clause of the SELECT to the source layer, but evaluate it instead at the OGRGenSQLResultsLayer level (#4022)
  • OGR SQL: Avoid error emission on requests such as 'SELECT MIN(EAS_ID), COUNT(*) FROM POLY'
  • OGR SQL: Avoid setting width/precision for AVG column
  • OGR SQL: Add a mechanism to delete a layer (DROP TABLE x)
  • OGR SQL: fix segfault when evaluating a 'IS NULL' on a float column (#4091)
  • OGR SQL: add support for new special commands : 'ALTER TABLE layername ADD COLUMN columnname columntype', 'ALTER TABLE layername RENAME COLUMN oldname TO new name', 'ALTER TABLE layername ALTER COLUMN columnname TYPE columntype', 'ALTER TABLE layername DROP COLUMN columnname'
  • OGR SQL: Add implicit conversion from string to numeric (#4259)
  • OGR SQL: Correctly parse big SQL statements (#4262)
  • OGR SQL: fix joining a float column with a string column (#4321)
  • OGR SQL: with DISTINCT, consider null values are such, and not as empty string (#4353)
  • OGR SQL: fix offset convertion for SUBSTR() (#4348)
  • Add OGR_G_GetPoints()
  • Fix parsing of WKT geometries mixing 2D and 3D parts
  • OGR_Dr_CopyDataSource() and OGRSFDriver::CopyDataSource?() : make sure that the driver is attached to the created datasource (#4350)
  • OGRFeature::SetFrom?() supports more conversions between field types.

OGRSpatialReference:

  • Update to EPSG 7.9 database
  • Add Geocentric SRS Support
  • Add support for Interrupted Goode Homolosine projection (#4060)
  • Add SRS vertical unit support
  • Add SetVertCS(), OSRSetVertCS(), SetCompound?(), IsCompound?() and target oriented set/get linear units functions
  • ESRI : Improve spheroid remapping (#3904)
  • ESRI: Compare whole names in RemapNameBasedOnKeyName?() (#3965).
  • ESRI: addition of ImportFromESRIStatePlaneWKT and ImportfromESRIWisconsinWKT methods
  • ESRI: importFromESRI() : support POLYCONIC projection from old style files (#3983)
  • ESRI: importFromESRI() : support LAMBERT_AZIMUTHAL projection from old style files (#4302)
  • ESRI: fix EPSG:32161 mapping
  • ESRI: fix Stereo/Oblique?_Stereo/Double_Stereo (bugs #1428 and #4267)
  • ESRI: fix projection parameter mapping for Orthographic projection (#4249)
  • ESRI: add optional fixing of TOWGS84, DATUM and GEOGCS with GDAL_FIX_ESRI_WKT config. option (#4345 and #4378)
  • ESRI: fix add Krassowsky/Krasovsky? 1940 spheroid mapping
  • Add EPSG:102113 in the data/esri_extra.wkt file
  • Add Germany zone 1-5 in range 31491-31495 in the data/esri_extra.wkt file
  • fix NAD_1983_Oregon_Statewide_Lambert_Feet_Intl code
  • added/updated coordinates systems provided by IGNF (#3868)
  • ERM: add support for EPSG:n based coordinate sysetms (#3955)
  • ImportFromEPSG(): Add default support for various degree units without supporting .csv file.
  • ImportFromEPSG(): Add support for spherical LAEA (#3828)
  • ImportFromEPSG(): use CoLatConeAxis? parameter to build Krovak azimuth parameter (#4223)
  • importFromURN(): support compound SRS
  • importFromURN(): accept 'urn:opengis:crs:' syntax found in some TOP10NL GML files
  • Add CRS: support and for importing two part ESRI PE SRS with VERTCS
  • SetFromUserInput?() : recognize 'IGNF:xxx'
  • Ensure that the result of importFromEPSGA() always has keyword ordering fixed up (#4178)
  • exportToERM() : deal with GDA94 datum and its UTM projections (#4208)
  • Fix ESRI_DATUM_NAME for D_MOLDREF99 and D_Philippine_Reference_System_1992 (#4378)

Utilities:

  • ogr2ogr: Make 'ogr2ogr someDirThatDoesNotExist.shp dataSourceWithMultipleLayer' create a directory
  • ogr2ogr: make -overwrite/-append work with non-spatial tables created by GDAL 1.8.0;
  • ogr2ogr: take into account fields specified in the -where clause in combinations with -select to create the correct list of fields to pass to SetIgnoredFields?() (#4015)
  • ogr2ogr: fix -zfield option so that the modified geometry properly reports coordinate dimension = 3. Also avoids it to be in the list of ignored field names
  • ogr2ogr: add -simplify option to simplify geometries
  • ogr2ogr: add a warning if the target filename has an extension or a prefix that isn't consistant with the default output format (i.e. Shapefile), but which matches another driver. Can be made quiet with -q option
  • ogrinfo/ogr2ogr: exit when SetAttributeFilter?() fails, instead of silently going on (#4261)

Multi driver topics:

  • RFC35 : implementation in Shapefile, Memory, PG and SQLite drivers (#2671)
  • DXF, EDIGEO, KML, LIBKML, Shapefile, SDE, SOSI: Mark as supporting UTF-8
  • BNA, CSV, GPX, KML, GeoRSS, GML, LIBKML, GeoJSON, PGDump : accept both /dev/stdout and /vsistdout/ as filenames; remove 'stdout' as a valid alias that could be used in some of them (#4225, #4226)

ARCGEN driver:

  • New for GDAL/OGR 1.9.0
  • Read-only OGR driver for Arc/Info? Generate files

CouchDB driver:

  • New for GDAL/OGR 1.9.0
  • Read/write OGR driver for CouchDB / GeoCouch?

CSV driver:

  • Add special recognition and handling for USGS GNIS (Geographic Names Information System) files
  • Directly recognize the structure of the allCountries file from GeoNames?.org
  • Implement GetFeatureCount?() to be a little bit faster
  • Accept /dev/stdout as a filename for CreateDataSource?()
  • Fix handling of non-numeric values in numeric columns (NULL instead of 0)
  • Fix handling of column names with numbers
  • Recognize numeric fieldnames inside quotes
  • Accept real numbers with ',' as decimal separator when ';' is the field separator (CSV export in French locale)

DXF driver:

  • Add support for DXF_ENCODING config var and DWGCODEPAGE header field (#4008)
  • Added DXF_MERGE_BLOCK_GEOMETRIES
  • Treat ATTDEFs the same as TEXT entities
  • Implement hatch polyline and elliptical arc support, hatch fill, do not polygonize closed smoothed lines
  • Add handling of hidden/frozen/off layers.

DWG driver:

  • New for GDAL/OGR 1.9.0
  • Read DWG files through the use of Open Design Alliance Teigha Libraries

EDIGEO driver:

  • New for GDAL/OGR 1.9.0
  • Read files of French EDIGEO exchange format

FileGDB driver:

  • New for GDAL/OGR 1.9.0
  • Read/write support based on FileGDB API SDK

GeoJSON driver:

  • Support writing 3D lines and polygons
  • Add a bbox attribute with the geometry bounding box if WRITE_BBOX layer creation option is set (#2392)
  • Write bbox of FeatureCollection? before features when file is seekable
  • Remove unsetting of FID that caused FID not at the last position of properties to be lost
  • Properly deal with null field values in reading and writing
  • Handle OFTIntegerList, OFTRealList and OFTStringList fields
  • Recognize other arrays as OFTString field
  • Fix assertion on unhandled ESRI json (#4056)
  • Fix segfault on feature where 'properties' member exists but isn't an object (#4057)
  • Better detection of OGR type for numeric JSON fields (#4082)
  • Add COORDINATE_PRECISION layer creation option to specify the maximum number of figures after decimal point in coordinates; set to 15 by default with smart truncation of trailing zeros (like done for WKT)
  • Add OGR_G_ExportToJsonEx() to accept a list of options
  • Add ability to detect geojson files without an extension (#4314)

Geomedia driver:

  • New for GDAL/OGR 1.9.0
  • Read-only driver to read Geomedia .MDB databases

GeoRSS driver:

  • Parse RSS documents without <channel> element

GFT driver:

  • New for GDAL/OGR 1.9.0
  • Read/write driver for Google Fusion Tables

GML driver:

  • Major performance improvement when reading large multi-layer GML files. See usage of new GML_READ_MODE configuration option
  • Support gml:xlink resolving for huge GML files through GML_SKIP_RESOLVE_ELEMS=HUGE (requires SQLite)
  • Add GML_GFS_TEMPLATE config option to specify a template .gfs file that can be used for several GML files with similar structure (#4380)
  • Be able to build the driver with support of both Expat and Xerces libraries and add ability of select one at runtime. For UTF-8 documents, we select Expat if it is available, because it is faster than Xerces
  • Expose fid or gml_id as feature fields if autodetected. This behaviour can be altered by the GML_EXPOSE_FID / GML_EXPOSE_GML_ID configuration option.
  • Improve handling of .gml and .xsd produced by FME (in particular for CanVec? GML)
  • Be able to open .gz file directly (like OS Mastermap ones), and read/write the .gfs file next to the .gz file
  • Fix segfault when encountering an invalid (or unhandled by OGR) geometry and when the axis order is lat/long (#3935)
  • GML3: use a new method to interpret Face objects (which requires GEOS support);

old method available if GML_FACE_HOLE_NEGATIVE config. option set to YES (#3937)

  • GML3: support Curve as a valid child for curveProperty inside directEdge parsing (#3934)
  • GML3: don't force the linestring to be 3D when inverting its orientation during parsing of directedEdge (#3936)
  • GML3: accept <pointProperty> element in <gml:LineString> or <gml:LineStringSegment>
  • OGR_G_CreateFromGML(): accept <gml:coordinates> with coordinate tuples separated by comma and coordinate components separated by space
  • Recognized schemas with <complexType> inside <element>, such as the one returned by  http://deegree3-demo.deegree.org:80/deegree-utah-demo/services
  • Write the Z component of bounding box for 25D geometries
  • Force layer geometry type to 3D when there's only a .xsd file and we detect a hint that the bounding box is 3D
  • Handle layers of type wkbNone appropriately (#4154)
  • Change format of (GML 2.1.1) FID generated from Fxxx to layer_name.xxx (where xxx is the OGR FID) to ensure uniqueness (#4250)
  • Accept 'GML3Deegree' as a valid value for the dataset creation option FORMAT, to produce a .XSD that should be better handled by Deegree3 (#4252), and 'GML3.2' to produce GML file and schema that validate against GML 3.2.1 schema.
  • Don't try to parse successfully a feature type in the .xsd if there are elements we don't know how to parse. Better to rely on the .gfs mechanism (#4328)
  • Fix bug in OGRAtof() that caused wrong parsing of coordinates in GML files written in scientific notation (#4399)

GMT driver:

  • Fix GetExtent?() result that swallowed the first char of the minx bound (#4260)

IDRISI driver:

  • New for GDAL/OGR 1.9.0
  • Read Idrisi .VCT vector files

ILI1 driver:

  • Fix for missing geometry in ILI1

LIBKML driver:

  • Set the OGRStylePen unit type to pixel when reading <LineStyle?>
  • Avoid ingesting zip files that are not valid kmz (#4003)
  • Do not use displayname to set the field name
  • Recognize <Data> elements of <ExtendedData?> in case <ExtendedData?> doesn't use a <SchemaData?>
  • Fix mapping of the type attribute of <SimpleType?> elements inside <Schema> to OGR field type (#4171)
  • Parse correctly kml docs containing only one placemark
  • Properly set the feature style string from a placemarks style
  • Improve OGRStyleLabel <-> KmlLabelStyle? mapping
  • Combine styles from the style table and features styles when LIBKML_RESOLVE_STYLE=YES (#4231)
  • Check that string values put in fields are valid UTF-8 (#4300)

MDB driver:

  • New for GDAL/OGR 1.9.0
  • Read-only driver to read PGeo and Geomedia .MDB databases
  • Relies on using the Java Jackcess library (LGPL) through JNI.

MITAB driver:

  • Add support for reading google mercator from mapinfo (#4115)
  • Fixed problem of the null datetime values (#4150)
  • Fix problem with tab delimiter used in MIF files (#4257)

MSSQLSpatial driver:

  • Removing 'Initial Catalog' which is not supported in the ODBC SQL driver connection strings.
  • Allow to specify 'Driver' in MSSQL connection strings (#4393)
  • Fix for the IDENTITY INSERT problem with MSSQL Spatial (#3992)
  • Add more verbose warnings to the geometry validator
  • Fix for the schema handling problem with MSSQL Spatial (#3951)
  • Fix for the corrupt geometry report when using the ogr2ogr -sql option (#4149)

MySQL driver:

  • Recognize columns with types POINT, LINESTRING, etc. as geometry columns

NAS driver:

  • Add support for treating wfs:Delete as a special Delete feature with typeName and FeatureId? properties
  • Handle empty files gracefully (#3809)
  • Preliminary support for SRS in NAS files, including 3GKn SRS
  • Implement special treatement for <lage> to be zero passed and string (NAS #9)
  • Add special handling of punktkennung (NAS #12)
  • Add special handling for artDerFlurstuecksgrenze (#4255)
  • Add support for wfsext:Replace operations (PostNAS #11)
  • Correct NASHandler::dataHandler() to avoid trimming non-leading white space

NTF driver:

  • Create and manage height field as floating point since some DTM products have floating point elevations.

OCI driver:

  • Added TRUNCATE layer creation option (#4000)
  • Clear errors after speculative dimension calls (#4001)
  • Fix multithreading related problems (#4039)
  • Ensure that AllocAndBindForWrite? does not mess up if there are no general attributes (#4063)
  • Implement DeleteLayer?(int) method
  • Ensure extents updated by SyncToDisk?(), and that new features are merged into existing extents (#4079)

OGDI driver:

  • Fix GetFeature?() that did not like switching between layers

PG driver:

  • Write geometries as EWKB by default to avoid precision loss (#4138)
  • Return the table columns in the order they are in the database (#4194)
  • Add a NONE_AS_UNKNOWN layer creation option that can be set to TRUE to force layers with geom type = wkbNone to be created as if it was wkbUnknown (PostGIS GEOMETRY type) to be able to revert to behaviour prior to GDAL 1.8.0 (#4012)
  • Add EXTRACT_SCHEMA_FROM_LAYER_NAME layer creation option that can be set to OFF to disable analysis of layer name as schema_name.table_name
  • Add FID layer creation option to specify the name of the FID column
  • ogr2ogr: make sure that for a PG datasource, -nln public.XXX can also be used with -append
  • Fix CreateFeatureViaInsert?() to emit 'INSERT INTO xx DEFAULT VALUES'
  • Fix handling of Nan with fields with non-zero width (#2112)
  • Use wrapper for PQexec() to use PQexecParams() instead in most cases
  • Add proper escaping of table and column names
  • OGR SQL: add proper column name escaping and quoting for PostgreSQL datasources
  • Launder single quote character in table name
  • Better reporting of error in case of failed ExecuteSQL()
  • Create field of type OFTString and width > 0, as VARCHAR(width) (#4202)
  • Add more compat with Postgis 2.0SVN (geometry_columns- #4217, unknown SRID handling)
  • Better behaviour, in particular in error reporting, of ExecuteSQL() when passed with non-select statements, or with select statements that have side-effects such as AddGeometryColumn?()

PGDump driver:

  • fix handling of Nan with fields with non-zero width (#2112)
  • Add CREATE_SCHEMA and DROP_TABLE layer creation option (#4033)
  • Fix crash when inserting a feature with a geometry in a layer with a geom type of wkbNone;
  • PG and PGDump: fix insertion of features with first field being a 0-charachter string in a non-spatial table and without FID in COPY mode (#4040)
  • Add NONE_AS_UNKNOWN, FID, EXTRACT_SCHEMA_FROM_LAYER_NAME layer creation options
  • Better escaping of column and table names
  • Create field of type OFTString and width > 0, as VARCHAR(width) (#4202)

PGeo driver:

  • Move CreateFromShapeBin?() method to an upper level
  • Only try to open .mdb files that have the GDB_GeomColumns string
  • Decode Z coordinate for a POINTZM shape
  • Aad support for decoding multipoint/multipointz geometries
  • Fix setting of the layer geometry type
  • Add support for zlib compressed streams
  • Implement MultiPatch? decoding

SDE driver:

  • Add support for decoding NSTRING fields (#4053)
  • Add support in CreateLayer?() to clean up partially registered tables that aren't full spatial layers
  • Add logic to force envelope for geographic coordsys objects (#4054)
  • Add USE_STRING layer creation and configuration options information
  • Set SE_MULTIPART_TYPE_MASK for multipolygon layers (#4061).
  • Change how offset and precision are set for geographic coordinate systems to more closely match SDE

SEGUKOOA driver:

  • New for GDAL/OGR 1.9.0
  • Read files in SEG-P1 and UKOOA P1/90 formats

SEGY driver:

  • New for GDAL/OGR 1.9.0
  • Read files in SEG-Y format

Shapefile driver:

  • Encoding support for shapefile/dbf (#882)
  • Allow managing datasources with several hundreds of layers (#4306)
  • Lazy loading of SRS and lazy initialization of attribute index support
  • Use VSI*L API to access .qix spatial index files
  • Add special SQL command 'RECOMPUTE EXTENT ON layer_name' to force recomputation of the layer extent (#4027)
  • Faster implementation of GetFeatureCount?() in some circumstances.
  • Fix crash in CreateField?() if there is no DBF file
  • Fix add field record flushing fix (#4073)
  • Fix decoding of triangle fan in a multipatch made of several parts (#4081)
  • Refuse to open a .shp in update mode if the matching .dbf exists but cannot be opened in update mode too (#4095)
  • Recognize blank values for Date fields as null values (#4265)
  • Recognize 'NULL' as a valid value for SHPT creation option as documented
  • Check that we are not trying to add too many fields.
  • Support reading measure values as Z coordinate.

SQLite/Spatialite driver:

  • Spatialite: major write support improvements (creation/update of Spatialite DB now limited to GDAL builds with libspatialite linking)
  • Spatialite: add support for 3D geometries (#4092)
  • Spatialite: speed-up spatial filter on table layers by using spatial index table (#4212)
  • Spatialite: add support for reading Spatialite views registered in the views_geometry_columns
  • Spatialite: better support for building against amalgamated or not
  • Spatialite: when it exists, use srs_wkt column in spatial_ref_sys when retrieving/inserting SRS
  • Spatialite: add COMPRESS_GEOM=YES layer creation option to generate Spatialite compressed geometries
  • Spatialite: add support for VirtualXLS layers.
  • Spatialite: imported VirtualShape? support, in particular it is now possible to open on-the-fly a shapefile as a VirtualShape? with 'VirtualShape:shapefile.shp' syntax as a datasource
  • Implement RFC35 (DeleteField?, AlterFieldDefn?, ReorderFields?)
  • Implement DeleteDataSource?()
  • Implement DeleteFeature?()
  • Implement SetFeature?() by using UPDATE instead of DELETE / INSERT
  • Add capability to use VSI Virtual File API when needed (if SQLite >= 3.6.0)
  • Make CreateDataSource?(':memory:') work
  • Enforce opening update/read-only mode to allow/forbid create/delete layers, create/update features (#4215)
  • Launder single quote character in table name; properly escape table name if no laundering (#1834)
  • Use ALTER TABLE ADD COLUMN by default to create a new field; older method can still be used by defining the OGR_SQLITE_USE_ADD_COLUMN config option to FALSE in order to provide read-compat by sqlite 3.1.3 or earlier
  • Fix bug in CreateField?() : if there was already one record, the content of the table was not preserved, but filled with the column names, and not their values
  • Map 'DECIMAL' columns to OGR real type (#4346)
  • Add OGR_SQLITE_CACHE configuration option for performance enhancements
  • Try to reuse INSERT statement to speed up bulk loading.

SVG driver:

  • New for GDAL/OGR 1.9.0
  • Read only driver for Cloudmade Vector Stream files

S57 driver:

  • Add support for Dutch inland ENCs (#3881)
  • Allow up to 65536 attributes, use GUInt16 for iAttr (#3881)
  • Be cautious of case where end piont of a line segment has an invalid RCID
  • Correct handling of update that need to existing SG2D into an existing feature without it (#4332)

VRT driver:

  • Do not try to read too big files
  • Lazy initialization of OGRVRTLayer
  • Don't set feature field when source feature field is unset

WFS driver:

  • Add preliminary support for WFS 2.0.0, but for now don't request it by default.
  • Increase performance of layer definition building by issuing a DescribeFeatureType? request for several layers at the same time
  • Better server error reporting
  • Use the layer bounding box for EPSG:4326 layers (restricted to GEOSERVER for now) (#4041)
  • Add capability of opening a on-disk Capabilities document
  • Add special (hidden) layer 'WFSLayerMetadata' to store layer metadata
  • Add special (hidden) layer 'WFSGetCapabilities' to get the raw XML result of the GetCapabilities? request
  • CreateFeature?()/SetFeature(): use GML3 geometries in WFS 1.1.0 (make TinyOWS happy when it validates against the schema)
  • Make spatial filtering work with strict Deegree 3 servers
  • Fix reading when layer names only differ by their prefix

XLS driver:

  • New for GDAL/OGR 1.9.0
  • Read only driver for MS XLS files and relies on FreeXL library.

XPlane driver:

  • Port to VSI*L API

XYZ driver:

  • Ignore comment lines at the beginning of files

SWIG Language Bindings

General :

CSharp bindings:

  • Implement the typemap for utf8_path in C# (#3766)
  • Correcting the signature of OGRDataSource.Open to make the utf8 typemap to work (#3766)

Java bindings:

  • Turn the gdalJNI, gdalconstJNI and osrJNI into package private classes
  • Make Layer.GetExtent?() return null when OGR_L_GetExtent() fails.

Perl bindings:

  • The "Points" method of Geometry was not accepting its own output in the case of a single point. It accepted only a point as a list. Now it accepts a point both as a list containing one point (a ref to a point as a list) and a point as a list.
  • Fixed UTF-8 support in decoding names (datasource, layer, field etc.).
  • Assume all GDAL strings are UTF-8, handle all changes in typemaps.
  • Additions to Perl bindings due to new developments etc: Layer capabilities, GeometryType? method for Layer, improved create, new Export and Set methods for SpatialReference?.
  • Detect context in a typemap which returns a array, this now returns a list in list context; the change affects at least GetExtent? and GetEnvelope? methods, which retain backward compatibility though new and/or changed methods: FeatureDefn::Name, FeatureDefn::GeometryIgnored?, FeatureDefn::StyleIgnored?, Feature::ReferenceGeometry?, Feature::SetFrom?, FieldDefn::Ignored, Geometry::AsJSON
  • Perl typemaps: more correct manipulation of the stack, more cases where a list is returned in a list context, better handling of callback_data @Band::COLORINTERPRETATIONS, Band methods Unit, ScaleAndOffset?, GetBandNumber?, RasterAttributeTable? method LinearBinning?
  • Typemaps for VSIF{Write|Read}L, tests and docs for some VSI* functions.
  • Perl bindings: better by name / by index logics, some checks for silent failures, return schema as a hash if wanted, support ->{field} syntax for features, return list attributes as lists or listrefs as wished so that ->{field} works for lists too (API change)

Python bindings:

  • Improvements for ogr.Feature field get/set
  • Add hack to bring Python 3.2 compatibility
  • First argument of VSIFWriteL() should accept buffers for Python3 compat
  • Fix reference leak in 'typemap(in) char **dict'
  • Add gdal.VSIStatL()
  • swig/python/setup.py : fix for virtualenv setups (#4285)
  • Layer.GetExtent?() : add optional parameter can_return_null that can be set to allow returning None when OGR_L_GetExtent() fails
  • Make gdal.VSIFSeekL(), gdal.VSIFTellL() and gdal.VSIFTruncateL() use GIntBig instead of long for compat with 32bit platforms
  • Add script to build the python extensions with Python 2.7 and a mingw32 cross-compiler under Linux/Unix?

Ruby bindings:

  • Build SWIG Ruby Bindings against modern Ruby versions (1.8.7 and 1.9.2) (#3999)