Skip to content

Latest commit

 

History

History
170 lines (129 loc) · 11.3 KB

History.rdoc

File metadata and controls

170 lines (129 loc) · 11.3 KB

0.2.1 / 2010-12-09

  • Now compatible with Rubinius (version 1.1 or later).

  • Now partially compatible with JRuby (1.5 or later). A bunch of tests fail because GEOS and Proj4 are not available, hence there is no projection support and no complete Cartesian implementation. But at least RGeo loads and the basic operations work.

  • Some minor optimizations in the GEOS glue code.

0.2.0 / 2010-12-07

This is the first public alpha version of RGeo. With this version, we are soft-locking the API interfaces and will try to retain backwards compatibility from this point. Incompatible API changes may still be done, but only if considered necessary.

With this release, RGeo has been split into a core library and a set of optional modules. The following modules remain in the core “rgeo” gem:

  • RGeo::Feature

  • RGeo::CoordSys

  • RGeo::Geos

  • RGeo::Cartesian

  • RGeo::Geographic

  • RGeo::WKRep

The following modules have been spun off into separate gems:

  • RGeo::GeoJSON has been spun off into the “rgeo-geojson” gem.

  • RGeo::Shapefile has been spun off into the “rgeo-shapefile” gem.

  • RGeo::ActiveRecord has been spun off into the “rgeo-activerecord” gem.

The ActiveRecord adapters have been spun off into gems according to the recommended ActiveRecord naming scheme:

  • The mysqlspatial adapter is now in the gem “activerecord-mysqlspatial-adapter”.

  • The mysql2spatial adapter is now in the gem “activerecord-mysql2spatial-adapter”.

  • The spatialite adapter is now in the gem “activerecord-spatialite-adapter”.

  • The postgis adapter is now in the gem “activerecord-postgis-adapter”.

Any additional modules likely will be distributed similarly as separate gems.

Other changes in this version:

  • API CHANGE: Renamed UnsupportedCapability to UnsupportedOperation since we’ve done away with the “capability” concept.

  • Proj4 integration wasn’t building into the right location on a gem install. Fixed.

  • Various updates to the rdocs.

  • Minor updates to the Spatial Programming paper.

0.1.22 / 2010-12-05

This should be the last pre-alpha development version. The next version planned is the 0.2 alpha release.

  • API CHANGE: Renamed Geography module to Geographic.

  • API CHANGE: Renamed Factory#has_capability? to Factory#property to generalize the API.

  • API CHANGE: Factory#proj4 and Factory#coord_sys are now required methods.

  • The ZM Geos factory didn’t properly handle proj4. Fixed.

  • The proj4-based projected geographic factory now extracts the cooresponding geographic coordinate system from the projection, rather than always using WGS84.

  • Initial draft of Spatial Programming paper.

0.1.21 / 2010-12-03

  • API CHANGE: Added “_factory” to the end of the Geography toplevel interface methods, for consistency with the rest of the API.

  • API CHANGE: Simplified initializer API for WKTParser and WKBParser.

  • API CHANGE: Removed ActiveRecord::Base.rgeo_default_factory, and provided a reasonable default rgeo_factory_generator.

  • Removed deprecated pluralized names RGeo::Features and RGeo::Errors.

  • First pass implementation of the ActiveRecord adapters for SpatiaLite and PostGIS.

  • Fixed problems with Proj4 equivalence testing.

  • Several more minor fixes and documentation updates.

0.1.20 / 2010-11-30

  • API CHANGE: Methods that raised MethodUnimplemented now raise UnsupportedCapability instead. Removed MethodUnimplemented.

  • API CHANGE: Renamed RGeo::Features to RGeo::Feature, RGeo::Errors to RGeo::Error, and RGeo::ImplHelpers to RGeo::ImplHelper. The old pluralized names are aliased to the new names for now for backward compatibility, though they are deprecated and will be removed shortly.

  • Renamed the tests directory to test. Generally speaking, I’m getting rid of pluralized names.

  • Added RGeo::CoordSys::Proj4 representing a proj4 coordinate system. It uses the proj4 library.

  • Added Factory#proj4 as an optional method indicated by the :proj4 capability.

  • All existing geometry implementations now support proj4.

  • You can now cause casting to transform between proj4 projections by specifying the :project parameter.

  • A Geography implementation with an arbitrary projection backed by proj4 is now available.

0.1.19 / 2010-11-23

  • The GEOS implementation now supports ZM (4-dimensional data), via a wrapper since the underlying GEOS library doesn’t support 4d data natively.

  • Added a BoundingBox tool to the Cartesian module.

  • Fleshed out a few more methods of SimpleCartesian and SimpleSpherical.

  • The simple Cartesian point implementation included a bit more leakage from the Geography implementations (pole equivalence, lat/lon methods). Fixed.

  • Under certain circumstances, collections and polygons using GEOS could lose their Z or M coordinates. Fixed.

  • There were some cases when implementations based on ImplHelpers were pulling in the wrong methods. Fixed.

  • Taking the envelope of an empty GEOS collection yielded an illegal object that could cause a crash. Fixed. It now yields an empty collection.

  • Taking the boundary of an empty GEOS collection yielded nil. Fixed. It now yields an empty collection.

0.1.18 / 2010-11-22

  • API CHANGE: GeoJSON defaults to no JSON parser rather than to the JSON library. GeoJSON also fails better when attempting to use a JSON parser that isn’t installed.

  • Added a decorator tool for FactoryGenerator

  • Added an analysis module for Cartesian geometries, and implemented an algorithm for determining whether a ring is clockwise or counterclockwise. (We needed this to interpret shapefiles.)

  • First pass implementation of shapefile reading. It passes a basic test suite I borrowed from shapelib, but I haven’t yet done an exhaustive test on every case.

  • The simple Cartesian implementation mistakenly clamped x and y to lat/lon limits. Fixed.

0.1.17 / 2010-11-20

  • Implemented ActiveRecord adapters that cover MySQL Spatial for the mysql and mysql2 gems. SpatiaLite and PostGIS adapters are coming later.

  • Added and documented FactoryGenerator.

  • API CHANGE: WKRep parsers now take FactoryGenerator rather than the ad-hoc factory_from_srid.

  • API CHANGE: Factory#override_cast now takes its optional flags in a hash so it can be extended more cleanly in the future.

0.1.16 / 2010-11-18

  • Test coverage for WKB generator and parser; fixed a few bugs.

  • Eliminated the hard dependency on the JSON gem, and allow configuration of GeoJSON with an alternate JSON parser such as YAJL or ActiveSupport.

  • API CHANGE: geo factory is now a hash option in GeoJSON, and is now optional.

  • GeoJSON now handles Z and M coordinates, according to the capabilities of the geo factory.

  • GeoJSON feature objects can now handle null geometry and null properties, per the spec.

  • Factory::cast now optionally lets you pass the parameters as a hash.

0.1.15 / 2010-11-08

  • Cleanup, fixes, documentation, and partial test coverage in the WKT/WKB implementations.

  • Implemented autoload for the various modules.

  • A few minor fixes.

0.1.14 / 2010-11-04

  • Introduced capability checking API.

  • Standardized API and semantics for handling of points with Z and/or M coordinates.

  • Fixed several problems with Z coordinates in GEOS.

  • Fixed exceptions and wrong values returned from GEOS LineString#start_point and LineString#end_point.

  • Fixed crash in GEOS LineString#point_n when the index was out of bounds.

  • Fixed GEOS line string closed test.

  • Implemented support for Z and M coordinates in GEOS, SimpleCartesian, SimpleMercator, and SimpleSpherical. GEOS and SimpleMercator support Z or M but not both at once, because the underlying GEOS library supports only 3 dimensions. SimpleCartesian and SimpleSpherical can support both at once.

  • Implemented parsers and generators for WKT/WKB and EWKT/EWKB in Ruby, providing full support for all generally used cases including 3 and 4 dimensional data and embedded SRIDs. This implementation is used by default by all feature implementations except GEOS, which continues to use its own internal WKT/WKB implementation unless the Ruby implementation is invoked explicitly.

0.1.13 / 2010-10-26

  • Reworked the way casting is done. Casting has two dimensions: factory casting and type casting, either or both of which can be done at once. Implemented a standard casting algorithm to handle these cases, and an override mechanism for factories that want to do some of their own casting. Removed Factory#cast and Geometry#cast, and implemented a global Features::cast entry point instead.

  • All factory and relational methods now perform auto-casting on inputs.

  • Removed the “auto-flattening” behavior of Factory#multi_point, Factory#multi_line_string, and Factory#multi_polygon because it seemed overkill for factory methods. These methods now just attempt to auto-cast the immediate objects.

  • Filled out more test cases for SimpleSpherical.

  • Provided SimpleCartesian as a fallback implementation in case Geos is not available. SimpleCartesian is like SimpleSpherical in that some operations are not provided, but it is pure ruby and doesn’t depend on external libraries.

  • Improved feature type checking facilities.

  • Documentation updates.

0.1.12 / 2010-10-23

  • API CHANGE: Factory#coerce renamed to Factory#cast. I think this should be the final name for this function.

  • Some new tests and a lot of fixes in SimpleMercator and SimpleSpherical.

  • Implemented a few more pieces of SimpleSpherical. Notably, LineString#is_simple? (which should now allow LinearRing to work).

  • Classes that included Features::Geometry had their === operator erroneously overridden. Fixed.

  • A few more documentation updates.

0.1.11 / 2010-10-21

  • API CHANGE: Factory#convert renamed to Factory#coerce.

  • Some implementations that inherit from RGeo::Features::Geometry (e.g. the Geography implementations) raised Unimplemented from operator implementations because they had aliased the wrong methods. Fixed.

  • Geos coercer didn’t properly coerce “contained” elements in a compound geometry. Fixed.

  • The SimpleMercator and SimpleSpherical factories failed to properly check and coerce inputs into the typed collection methods. Fixed.

  • The options for the SimpleMercator factory were not documented and didn’t work. Fixed.

  • A bunch of additional test cases and minor fixes for SimpleMercator and SimpleSpherical.

0.1.10 / 2010-10-19

Initial public release. This release is considered pre-alpha quality and is being released for experimentation and feedback. We are using it in production in a limited capacity at GeoPage, but we do not yet recommend general production deployment because there are a number of known bugs and incomplete areas, and many features and APIs are still in flux.

Status:

  • GEOS-based Cartesian implementation is tested and should be fairly stable.

  • GeoJSON parsers and generators are tested and should be fairly stable.

  • Parts of SimpleMercator implementation are fairly stable, but test coverage of more advanced features is still lacking.

  • SimpleSpherical implementation is under construction and not yet available.

  • Rails (ActiveRecord or ActiveModel) integration is pending.

  • Several other integration features, including possible SimpleGeo integration, are pending.

Changes since 0.1.9:

  • Eliminated a few (harmless) compiler warnings when compiling the GEOS bridge under Ruby 1.9.2 on Snow Leopard.

  • Modified file headers, copyright notices, and README files for public release.

  • Changed name from “gp_rgeo” to “rgeo” for public release.

0.1.9

This and earlier versions were tested internally at GeoPage, Inc. but not publicly released.