X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/51c11f2ef522182ef5ac8a74b3165f29762771d2..889ee9e3680ea693351801a0f041852389a24db6:/app/controllers/amf_controller.rb diff --git a/app/controllers/amf_controller.rb b/app/controllers/amf_controller.rb index 421444869..4eda7b00a 100644 --- a/app/controllers/amf_controller.rb +++ b/app/controllers/amf_controller.rb @@ -638,8 +638,8 @@ class AmfController < ApplicationController # which means the SWF needs to allocate new ids # - if it's an invisible node, we can reuse the old node id - # get node list from specified version of way, - # and the _current_ lat/long/tags of each node + # ----- get node list from specified version of way, + # and the _current_ lat/long/tags of each node row=ActiveRecord::Base.connection.select_one("SELECT timestamp FROM ways WHERE version=#{version} AND id=#{id}") waytime=row['timestamp'] @@ -654,31 +654,31 @@ class AmfController < ApplicationController EOF rows=ActiveRecord::Base.connection.select_all(sql) - # if historic (full revert), get the old version of each node - # - if it's in another way now, generate a new id - # - if it's not in another way, use the old ID + # ----- if historic (full revert), get the old version of each node + # - if it's in another way now, generate a new id + # - if it's not in another way, use the old ID + if historic then rows.each_index do |i| sql=<<-EOF SELECT latitude*0.0000001 AS latitude,longitude*0.0000001 AS longitude,tags,cwn.id AS currentway FROM nodes n - LEFT JOIN current_way_nodes cwn - ON cwn.node_id=n.id + LEFT JOIN current_way_nodes cwn + ON cwn.node_id=n.id AND cwn.id!=#{id} WHERE n.id=#{rows[i]['id']} AND n.timestamp<="#{waytime}" - AND cwn.id!=#{id} - ORDER BY n.timestamp DESC + ORDER BY n.timestamp DESC LIMIT 1 EOF row=ActiveRecord::Base.connection.select_one(sql) - unless row.nil? then - nx=row['longitude'].to_f - ny=row['latitude'].to_f + nx=row['longitude'].to_f + ny=row['latitude'].to_f + if (!row.nil?) if (row['currentway'] && (nx!=rows[i]['longitude'].to_f or ny!=rows[i]['latitude'].to_f or row['tags']!=rows[i]['tags'])) then rows[i]['id']=-1 end - rows[i]['longitude']=nx - rows[i]['latitude' ]=ny - rows[i]['tags' ]=row['tags'] - end + end + rows[i]['longitude']=nx + rows[i]['latitude' ]=ny + rows[i]['tags' ]=row['tags'] end end rows