X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/4a4d89138c440c7f68369fac12447002cf0cadd5..9fec2fd137619eed257f146542ae44d792cc49dd:/lib/osm.rb diff --git a/lib/osm.rb b/lib/osm.rb index 02aa1a105..f36deb0a8 100644 --- a/lib/osm.rb +++ b/lib/osm.rb @@ -112,7 +112,7 @@ module OSM :conflict end - def rto_s + def to_s "Changeset mismatch: Provided #{@provided} but only #{@allowed} is allowed" end end @@ -187,18 +187,18 @@ module OSM # Raised when a way has more than the configured number of way nodes. # This prevents ways from being to long and difficult to work with class APITooManyWayNodesError < APIError - def initialize(provided, max) - @provided, @max = provided, max + def initialize(id, provided, max) + @id, @provided, @max = id, provided, max end - attr_reader :provided, :max + attr_reader :id, :provided, :max def status :bad_request end def to_s - "You tried to add #{provided} nodes to the way, however only #{max} are allowed" + "You tried to add #{provided} nodes to way #{id}, however only #{max} are allowed" end end @@ -218,6 +218,22 @@ module OSM end end + ## + # raised when bounding box is invalid + class APIBadBoundingBox < APIError + def initialize(message) + @message = message + end + + def status + :bad_request + end + + def to_s + @message + end + end + ## # raised when an API call is made using a method not supported on that URI class APIBadMethodError < APIError @@ -318,6 +334,11 @@ module OSM maxlon = (@lon + lonradius) * 180 / PI return { :minlat => minlat, :maxlat => maxlat, :minlon => minlon, :maxlon => maxlon } end + + # get the SQL to use to calculate distance + def sql_for_distance(lat_field, lon_field) + "6372.795 * 2 * asin(sqrt(power(sin((radians(#{lat_field}) - #{@lat}) / 2), 2) + cos(#{@lat}) * cos(radians(#{lat_field})) * power(sin((radians(#{lon_field}) - #{@lon})/2), 2)))" + end end class GeoRSS