X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/63e0486ca13f2fc444eec195105727f52b25b06b..86b4d1bc2c05a68053c7485217144a7fcf8ef4e8:/lib/osm.rb diff --git a/lib/osm.rb b/lib/osm.rb index 24df7a35d..a8cb103d2 100644 --- a/lib/osm.rb +++ b/lib/osm.rb @@ -1,13 +1,6 @@ +# The OSM module provides support functions for OSM. module OSM - # This piece of magic reads a GPX with SAX and spits out - # lat/lng and stuff - # - # This would print every latitude value: - # - # gpx = OSM::GPXImporter.new('somefile.gpx') - # gpx.points {|p| puts p['latitude']} - require 'time' require 'rexml/parsers/sax2parser' require 'rexml/text' @@ -15,11 +8,36 @@ module OSM require 'digest/md5' require 'RMagick' + # The base class for API Errors. + class APIError < RuntimeError + end + + # Raised when an API object is not found. + class APINotFoundError < APIError + end + + # Raised when a precondition to an API action fails sanity check. + class APIPreconditionFailedError < APIError + end + + # Raised when to delete an already-deleted object. + class APIAlreadyDeletedError < APIError + end + + # Raised when the provided version is not equal to the latest in the db. + class APIVersionMismatchError < APIError + def initialize(provided, latest) + @provided, @latest = provided, latest + end + + attr_reader :provided, :latest + end + + # Helper methods for going to/from mercator and lat/lng. class Mercator include Math #init me with your bounding box and the size of your image - def initialize(min_lat, min_lon, max_lat, max_lon, width, height) xsize = xsheet(max_lon) - xsheet(min_lon) ysize = ysheet(max_lat) - ysheet(min_lat) @@ -62,6 +80,13 @@ module OSM end + # This piece of magic reads a GPX with SAX and spits out + # lat/lng and stuff + # + # This would print every latitude value: + # + # gpx = OSM::GPXImporter.new('somefile.gpx') + # gpx.points {|p| puts p['latitude']} class GPXImporter # FIXME swap REXML for libXML attr_reader :possible_points