0.7-14 (see ChangeLog for more details) Depecating direct access to Map objectswhich will be removed from the namespace very soon. Started on merging readShape* and write*Shape functions 0.7-1 GSHHS binary file reading support changed from release 1.3 to 1.5 and shipped coarse shorelines changed to 1.5, released 3 April 2007 0.6-19 changed sp access to *apply and slot 0.6-18 Change shapelib license from MIT to LGPL 0.6-17 Added gcDestination based on contributions from Eric Archer and a list thread for finding a longlat destination given a longlat starting point and bearing, and elide methods to re-scale, reflect, translate and shift coordinates, permitting their relative positions to be retained but their actual locations to be (moderately) masked; a new version of pointLabel from Tom Short is also included 0.6-16 pass through max_nchar to write.dbf() - thanks to Don MacQueen, updated sp2Mondrian to new format polygon files (with argument to use old format) 0.6-15 map2* error when the final two coordintes in the input object are NAs - gambia.borders 0.6-14 added .spatstat_check hack to "SpatialPolygons" to "owin" coercion, and corrected erroneous code for writing line shapefiles (multiple line segments not handled at all until now); write.polylistShape(..., force=TRUE) now default to set nDims attribute on polylist for passing to 3D polygon shapefile. 0.6-13 Added pointLabel function contributed by Tom Short 0.6-9 Added skeleton readGPS function using external gpsbabel through system, thanks to Patrick Giraudoux. 0.6-7 Added GE_SpatialGrid and kmlOverlay preparation of PNG image overlays for Google Earth made by plotting out using the PNG graphics device, suggested by Duncan Golicher and David Forrest. 0.6-6 Added im object exchange with spatstat, changed sun ephemerides documentation to single page ?"sun-methods". 0.6-1 Added sun ephemerides by Sebastian P. Luque. In addition, code from off-CRAN packages on the r-spatial sourceforge repository has been added to maptools. This code includes reading GSHHS shoreline data, importing maps package line and polygon objects to Spatial* formats, importing ArcInfo vector data through the RArcInfo package into Spatial* formats, exporting Spatial* objects tp PBSmapping format, exchanging window and point objects with the spatstat package, and using the gpclib package for topology on polygons. The relationship with these packages is given as "Suggests:", so their installation is not required unless the specific functions they interface are used. 0.5-16 Fixed bug in dotsInPolys() for returned NULL point objects. 0.5-13 Passing through 3rd dimension in reading POINTZ shapefiles (bug report thanks to Michael Toews), POINTZ are also now written for 3D point coordinates. 0.5-12 Added repair= argument to read.shape(), readShape*() functions, and bug fixes to prevent problems caused by shapefiles with malformed *.shx files; the repair= argument is FALSE by default, equivalent to function behaviour until now, but when TRUE, it tries to repair malformed *.shx files typically found in data provided by Geolytics Inc. Bug report thanks to Jon Wakefield. 0.5-11 sp2WB now no longer emits 1e5 style coordinates, which WinBUGS cannot read; readAsciiGrid and writeAsciiGrid now have dec= arguments to cater for unusual locale handling in ArcGIS 9 (ArcGIS 8 and ArcView 3.2 read "." even in "," decimal mark locales, ArcGIS 9 is not as predictable); trackAzimuth is a wrapper for gzAzimuth to give directions along a track. 0.5-9 Added azimuth-finding function, a function to output polygon maps for Mondrian, and made plot.Map deprecated; a fuzz factor has been added to writeAsciiGrid() to force cell resolution to equality if the difference is less than the square root of machine precision. 0.5-6 Added guard functionality and traps for malformed polylist objects and force= argument to write.polylistShape(), thanks to excellent bug report from Marian Eriksson. 0.5-5 Added function sp2tmap to create a data frame for export to Stata's tmap function from SpatialPolygons objects 0.5-4 Added function sp2WB() to write SpatialPolygons objects to file for reading in SPlus format by WinBUGS, added argument to readShapePoly() to insert polygon IDs from DBF file column. 0.5-2 The suggested dependency on splancs has been removed, and the dotsInPolys() and symbolsInPolys() function have been re-written to use sample.Polygons() from sp. Because sp respects holes, users may find that if polygon rings are taken (wrongly) to be holes, they will not receive any dots/symbols. The examples on the help pages show how to use wrapper package spgpc from the r-spatial repository to remedy this. Also the lwd= argument is now passed through in plot.Map(). 0.5-1 Moved functions from off-CRAN spmaptools to maptools, and introduced dependency on the sp package. The functions reading shapefiles directly into sp class objects will become the principal way of getting vector spatial data into R. Helper functions letting this happen step-by-step are not currently exposed in the maptools namespace, but may be if needed. Simple functions to read and write Arc ASCII grid files have also been added. 0.4-15 Now using C code for ring direction, area and centroids; following a suggestion by Rick Reeves, read.shapes() now reads type 15 (POLYGONZ) shapefiles - confirmed, and should read types 11 POINTZ and 13 ARCZ. For types 13 and 15, it silently drops the third dimension, for type 11, the returned point has three dimensions. 0.4-14 relieved 8 character file basename limit on writing shapefiles 0.4-13 subset.polylist() now accepts both old and new polylists (without and with an area attribute) 0.4-12 Changed condition in tests from 0-4.9 from any() to all(); the plotting order heuristic in Map2poly is replaced with plotting only in strict decreasing order of top-level (multi)polygon area (thanks to Paul Bivand for reporting a malformed plot order from the previous heuristic, involving one polygon disappearing). In multipolygons, the components are plotted in decreasing area order. The multpolygons themselves are assigned their area sum for plotting order. Ring directions are all set to clockwise - very many shapefiles have been observed with quite unrealistic ring orders, so respecting input ring orders seems worse than imposing uniformity. The previous plot order assignment mechanism is retained using Map2poly1. The subset.polylist() function uses the decreasing area heuristic for assigning plot order. 0.4-11 Adding checks for length() being zero 0.4-10 Function write.linelistShape() added to output a list of lines to a shapefile, as suggested by Patrick Giraudoux. 0.4-9 A bug in write.polylistShape() found by Greg Snow, provoked by not checking that numeric attributes were integer, has been resolved - they are now set to the required types. 0.4-8 Functions dbf.read() and dbf.write() replaced by read.dbf() and write.dbf() in the foreign >= 0.8 package; references now made to those functions and package dependency on foreign (which is a recommended package and so not a problem in the course of time). This version of foreign is new, and so will take time to diffuse. 0.4-7 The dbf.read() and dbf.write() functions have been revised and added to the user-visible namespace. New functions write.pointShape() and write.polylistShape() using dbf.write() has been added to let data.frames be written as point-type shapefiles, or as polygon-type shapefiles with an S3 polylist object, respectively - all these functions should be treated as alpha-quality until they have been in use for some time; reports on software that reads ESRI-generated shapefiles but does not read these files should be sent to the package maintainer. Minor changes to plot.polylist() to painting of background with pbg= argument; corrections to plot.Map() to make sure color= and type= are passed to color.ramp() (thanks to Johannes SCHNITZLER), and to make sure rec= is respected (thanks to Tony Olsen); dotsInPolys() added for dot density maps (suggested by Johannes SCHNITZLER); symbolsInPolys() added to place grids of points over polygons with chosen density and/or symbols (suggested by Michael Wolf) - the two latter functions use functions from the splancs package internally. 0.4-6 Allow axis labels to be passed through plot.polylist() (thanks to Lukas Meier) 0.4-5 Corrected C code underlying the reading of DBF files to allow character fields to be arbitrarily wide (bug report Trondheim diamonds with fields over 200 characters wide - buffer overflow from unchecked max width 49); Added access to CHANGELOG through maptools() function. 0.4-4 Corrected C code for reading SHP/SHX files to reduce danger of mismatched PROTECT/UNPROTECT pairs, and hopefully resolve issues with crashes on Windows platforms in some cases. 0.4-3 Back out of a too-aggressive heuristic for guessing ring-directions and plot-ordering 0.4-2 Introduced changes including warnings in Map2poly() and plot.polylist() with regard to rind-direction and plot-order heuristics - Map2poly() tries to determine which polygons and sub-polygons are wholly contained within each other, to note the order in which they should be plotted in plot.polygon() to avoid over-plotting when painting polygons, and, if the raw= argument is FALSE, to correct possible wrong ring directions (lakes are not usually found in the sea etc.). plot.polylist() then tries to use this information to avoid over-painting polygons by painting enclosed units after their enclosing units, and, if the forcefill= argument is FALSE, will paint anti-clockwise rings (aka holes) with background colour rather than fill colour. At the present, raw= and forcefill= defaults are TRUE, and warnings are issued that this behaviour will change. The underlying problem is that most shapefiles in circulation do not follow ESRI specifications for polygons, many have at least some rings in the wrong direction, over and above slivers and dangles. This is unlikely to change, so defensive code is required.