+ [way_ids, points, relation_ids]
+ end
+
+ # Find deleted ways in current bounding box (similar to whichways, but ways
+ # with a deleted node only - not POIs or relations).
+
+ def whichways_deleted(xmin, ymin, xmax, ymax) #:doc:
+ xmin -= 0.01; ymin -= 0.01
+ xmax += 0.01; ymax += 0.01
+
+ # check boundary is sane and area within defined
+ # see /config/application.yml
+ begin
+ check_boundaries(xmin, ymin, xmax, ymax)
+ rescue Exception => err
+ # FIXME: report an error rather than just return an empty result
+ return [[]]
+ end
+
+ nodes_in_area = Node.find_by_area(ymin, xmin, ymax, xmax, :conditions => ["current_ways.visible = ?", false], :include => :ways_via_history)
+ way_ids = nodes_in_area.collect { |node| node.ways_via_history_ids }.flatten.uniq
+
+ [way_ids]
+ end
+
+ # Get a way including nodes and tags.
+ # Returns 0 (success), a Potlatch-style array of points, and a hash of tags.
+
+ def getway(wayid) #:doc:
+ if POTLATCH_USE_SQL then
+ points = sql_get_nodes_in_way(wayid)
+ tags = sql_get_tags_in_way(wayid)
+ else
+ # Ideally we would do ":include => :nodes" here but if we do that
+ # then rails only seems to return the first copy of a node when a
+ # way includes a node more than once
+ begin
+ way = Way.find(wayid)
+ rescue ActiveRecord::RecordNotFound
+ return [wayid,[],{}]
+ end
+
+ # check case where way has been deleted or doesn't exist
+ return [wayid,[],{}] if way.nil? or !way.visible
+
+ points = way.nodes.collect do |node|
+ nodetags=node.tags_as_hash
+ nodetags.delete('created_by')
+ [node.lon, node.lat, node.id, nodetags]
+ end
+ tags = way.tags