- min_lon = bbox[0].to_f
- min_lat = bbox[1].to_f
- max_lon = bbox[2].to_f
- max_lat = bbox[3].to_f
-
- # check the bbox is sane
- unless min_lon <= max_lon
- report_error("The minimum longitude must be less than the maximum longitude, but it wasn't")
- return
- end
- unless min_lat <= max_lat
- report_error("The minimum latitude must be less than the maximum latitude, but it wasn't")
- return
- end
- unless min_lon >= -180 && min_lat >= -90 && max_lon <= 180 && max_lat <= 90
- report_error("The latitudes must be between -90 and 90, and longitudes between -180 and 180")
- return
- end
-
- # check the bbox isn't too large
- requested_area = (max_lat-min_lat)*(max_lon-min_lon)
- if requested_area > MAX_REQUEST_AREA
- report_error("The maximum bbox size is " + MAX_REQUEST_AREA.to_s +
- ", and your request was too large. Either request a smaller area, or use planet.osm")
- return
- end
-
- # get all the nodes
- nodes = Node.find_by_area(min_lat, min_lon, max_lat, max_lon, :conditions => "visible = 1")
-
- node_ids = nodes.collect {|node| node.id }
-
- if node_ids.length > 50_000
- report_error("You requested too many nodes (limit is 50,000). Either request a smaller area, or use planet.osm")
- return
- end
-
- if node_ids.length == 0
- render :text => "<osm version='0.5'></osm>", :content_type => "text/xml"
+ node_ids = nodes.collect(&:id)
+ if node_ids.length > MAX_NUMBER_OF_NODES
+ report_error("You requested too many nodes (limit is #{MAX_NUMBER_OF_NODES}). Either request a smaller area, or use planet.osm")