X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/4a4d89138c440c7f68369fac12447002cf0cadd5..f5d86037823b21631cb114cf5bac611ab861ac19:/lib/osm.rb diff --git a/lib/osm.rb b/lib/osm.rb index 02aa1a105..789a5f439 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 @@ -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