openstreetmap-website/lib/map_boundary.rb
Kai Krueger 59a6ed0e20 Don't limit get map_bugs to a small Area, by disabling the quadtile index for those searches
The volumn of bugs seem small enough to get away with normal or GiST indexes (not included yet)

Also includes some other fixes
2010-03-20 11:59:23 +00:00

34 lines
1.5 KiB
Ruby

module MapBoundary
# Take an array of length 4, and return the min_lon, min_lat, max_lon and
# max_lat within their respective boundaries.
def sanitise_boundaries(bbox)
min_lon = [[bbox[0].to_f,-180].max,180].min
min_lat = [[bbox[1].to_f,-90].max,90].min
max_lon = [[bbox[2].to_f,+180].min,-180].max
max_lat = [[bbox[3].to_f,+90].min,-90].max
return min_lon, min_lat, max_lon, max_lat
end
def check_boundaries(min_lon, min_lat, max_lon, max_lat, limit_small_area = :true)
# check the bbox is sane
unless min_lon <= max_lon
raise OSM::APIBadBoundingBox.new("The minimum longitude must be less than the maximum longitude, but it wasn't")
end
unless min_lat <= max_lat
raise OSM::APIBadBoundingBox.new("The minimum latitude must be less than the maximum latitude, but it wasn't")
end
unless min_lon >= -180 && min_lat >= -90 && max_lon <= 180 && max_lat <= 90
# Due to sanitize_boundaries, it is highly unlikely we'll actually get here
raise OSM::APIBadBoundingBox.new("The latitudes must be between -90 and 90, and longitudes between -180 and 180")
end
return unless limit_small_area == :true
# check the bbox isn't too large
requested_area = (max_lat-min_lat)*(max_lon-min_lon)
if requested_area > APP_CONFIG['max_request_area']
raise OSM::APIBadBoundingBox.new("The maximum bbox size is " + APP_CONFIG['max_request_area'].to_s +
", and your request was too large. Either request a smaller area, or use planet.osm")
end
end
end