private
+ # Return presets (default tags and crap) to potlatch
+ # Global is set up in config/environment.rb on startup, code is in lib/osm.rb
+ def getpresets
+ return POTLATCH_PRESETS
+ end
# ====================================================================
# Remote calls
- # ----- getpresets
- # in: none
- # does: reads tag preset menus, colours, and autocomplete config files
- # out: [0] presets, [1] presetmenus, [2] presetnames,
- # [3] colours, [4] casing, [5] areas, [6] autotags
- # (all hashes)
-
- def getpresets
- RAILS_DEFAULT_LOGGER.info(" Message: getpresets")
-
- # Read preset menus
- presets={}
- presetmenus={}; presetmenus['point']=[]; presetmenus['way']=[]; presetmenus['POI']=[]
- presetnames={}; presetnames['point']={}; presetnames['way']={}; presetnames['POI']={}
- presettype=''
- presetcategory=''
- # StringIO.open(txt) do |file|
- File.open("#{RAILS_ROOT}/config/potlatch/presets.txt") do |file|
- file.each_line {|line|
- t=line.chomp
- if (t=~/(\w+)\/(\w+)/) then
- presettype=$1
- presetcategory=$2
- presetmenus[presettype].push(presetcategory)
- presetnames[presettype][presetcategory]=["(no preset)"]
- elsif (t=~/^(.+):\s?(.+)$/) then
- pre=$1; kv=$2
- presetnames[presettype][presetcategory].push(pre)
- presets[pre]={}
- kv.split(',').each {|a|
- if (a=~/^(.+)=(.*)$/) then presets[pre][$1]=$2 end
- }
- end
- }
- end
-
- # Read colours/styling
- colours={}; casing={}; areas={}
- File.open("#{RAILS_ROOT}/config/potlatch/colours.txt") do |file|
- file.each_line {|line|
- t=line.chomp
- if (t=~/(\w+)\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)/) then
- tag=$1
- if ($2!='-') then colours[tag]=$2.hex end
- if ($3!='-') then casing[tag]=$3.hex end
- if ($4!='-') then areas[tag]=$4.hex end
- end
- }
- end
-
- # Read auto-complete
- autotags={}; autotags['point']={}; autotags['way']={}; autotags['POI']={};
- File.open("#{RAILS_ROOT}/config/potlatch/autocomplete.txt") do |file|
- file.each_line {|line|
- t=line.chomp
- if (t=~/^(\w+)\/(\w+)\s+(.+)$/) then
- tag=$1; type=$2; values=$3
- if values=='-' then autotags[type][tag]=[]
- else autotags[type][tag]=values.split(',').sort.reverse end
- end
- }
- end
-
- [presets,presetmenus,presetnames,colours,casing,areas,autotags]
- end
# ----- whichways
basey = args[5]
masterscale = args[6]
+
+
sql=<<-EOF
SELECT DISTINCT current_ways.id
FROM current_nodes,way_nodes,current_ways
# Find a way given it's ID, and in a single SQL call also grab its nodes
#
+
# You can't pull in all the tags too unless we put a sequence_id on the way_tags table and have a multipart key
def self.find_eager(id)
- way = Way.find(id, :include => {:way_nodes => :node})
+ way = Way.find(id, :include => [:way_tags, {:way_nodes => :node}])
end
# Find a way given it's ID, and in a single SQL call also grab its nodes and tags
set_primary_keys :id, :sequence_id
belongs_to :node
+
+ belongs_to :way, :foreign_key => :id
end
class WayTag < ActiveRecord::Base
set_table_name 'current_way_tags'
+ # false multipart key
+ set_primary_keys :id, :k, :v
+
belongs_to :way, :foreign_key => 'id'
end
# Make Active Record use UTC-base instead of local time
# config.active_record.default_timezone = :utc
end
+
+# This has to be after the above block for some reason (doesnt pull in /lib/osm.rb?)
+POTLATCH_PRESETS = OSM::Potlatch.get_presets()
+
+
return "#{tilesql} AND #{prefix}latitude BETWEEN #{minlat} AND #{maxlat} AND #{prefix}longitude BETWEEN #{minlon} AND #{maxlon}"
end
+
+ class Potlatch # crazy shit
+
+ # ----- getpresets
+ # in: none
+ # does: reads tag preset menus, colours, and autocomplete config files
+ # out: [0] presets, [1] presetmenus, [2] presetnames,
+ # [3] colours, [4] casing, [5] areas, [6] autotags
+ # (all hashes)
+ def self.get_presets
+ RAILS_DEFAULT_LOGGER.info(" Message: getpresets")
+
+ # Read preset menus
+ presets={}
+ presetmenus={}; presetmenus['point']=[]; presetmenus['way']=[]; presetmenus['POI']=[]
+ presetnames={}; presetnames['point']={}; presetnames['way']={}; presetnames['POI']={}
+ presettype=''
+ presetcategory=''
+ # StringIO.open(txt) do |file|
+ File.open("#{RAILS_ROOT}/config/potlatch/presets.txt") do |file|
+ file.each_line {|line|
+ t=line.chomp
+ if (t=~/(\w+)\/(\w+)/) then
+ presettype=$1
+ presetcategory=$2
+ presetmenus[presettype].push(presetcategory)
+ presetnames[presettype][presetcategory]=["(no preset)"]
+ elsif (t=~/^(.+):\s?(.+)$/) then
+ pre=$1; kv=$2
+ presetnames[presettype][presetcategory].push(pre)
+ presets[pre]={}
+ kv.split(',').each {|a|
+ if (a=~/^(.+)=(.*)$/) then presets[pre][$1]=$2 end
+ }
+ end
+ }
+ end
+
+ # Read colours/styling
+ colours={}; casing={}; areas={}
+ File.open("#{RAILS_ROOT}/config/potlatch/colours.txt") do |file|
+ file.each_line {|line|
+ t=line.chomp
+ if (t=~/(\w+)\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)/) then
+ tag=$1
+ if ($2!='-') then colours[tag]=$2.hex end
+ if ($3!='-') then casing[tag]=$3.hex end
+ if ($4!='-') then areas[tag]=$4.hex end
+ end
+ }
+ end
+
+ # Read auto-complete
+ autotags={}; autotags['point']={}; autotags['way']={}; autotags['POI']={};
+ File.open("#{RAILS_ROOT}/config/potlatch/autocomplete.txt") do |file|
+ file.each_line {|line|
+ t=line.chomp
+ if (t=~/^(\w+)\/(\w+)\s+(.+)$/) then
+ tag=$1; type=$2; values=$3
+ if values=='-' then autotags[type][tag]=[]
+ else autotags[type][tag]=values.split(',').sort.reverse end
+ end
+ }
+ end
+
+ [presets,presetmenus,presetnames,colours,casing,areas,autotags]
+ end
+ end
+
end