X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/40e920bd52619f549ff829296865f87f89f2fd2a..9fec2fd137619eed257f146542ae44d792cc49dd:/lib/osm.rb?ds=sidebyside diff --git a/lib/osm.rb b/lib/osm.rb index 5be2da56a..f36deb0a8 100644 --- a/lib/osm.rb +++ b/lib/osm.rb @@ -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 @@ -334,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