Profile debug script to fetch a way from OSM
This commit is contained in:
parent
370081ec14
commit
9a20e8e614
44
profiles/debug_way.lua
Normal file
44
profiles/debug_way.lua
Normal file
@ -0,0 +1,44 @@
|
||||
--
|
||||
-- Fetch a way from the OpenStreetMap API and run the given profile over it.
|
||||
--
|
||||
-- You'll need to install luasec and xml2lua first:
|
||||
-- > luarocks-5.1 install xml2lua
|
||||
-- > luarocks-5.1 install luasec
|
||||
-- [may require admin privileges]
|
||||
--
|
||||
-- Then to test way 2606296 using the foot profile:
|
||||
-- > lua5.1 debug_way.lua foot 2606296
|
||||
--
|
||||
|
||||
-- initialise libraries
|
||||
local pprint = require('lib/pprint')
|
||||
local Debug = require('lib/profile_debugger')
|
||||
local xml2lua = require('xml2lua')
|
||||
local handler = require('xmlhandler.tree')
|
||||
local https = require('ssl.https')
|
||||
|
||||
-- load the profile
|
||||
Debug.load_profile(arg[1])
|
||||
|
||||
-- load way from the OSM API
|
||||
local url = 'https://www.openstreetmap.org/api/0.6/way/'..arg[2]
|
||||
local body, statusCode, headers, statusText = https.request(url)
|
||||
|
||||
-- parse way tags
|
||||
local parser = xml2lua.parser(handler)
|
||||
parser:parse(body)
|
||||
|
||||
-- convert XML-flavoured table to a simple k/v table
|
||||
local way = {}
|
||||
for i, p in pairs(handler.root.osm.way.tag) do
|
||||
way[p._attr.k] = p._attr.v
|
||||
end
|
||||
|
||||
-- call the way function
|
||||
local result = {}
|
||||
Debug.process_way(way,result)
|
||||
|
||||
-- print input and output
|
||||
pprint(way)
|
||||
print("=>")
|
||||
pprint(result)
|
@ -52,7 +52,7 @@ end
|
||||
function canonicalizeStringList(str)
|
||||
return str
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
-- debug helper
|
||||
@ -123,11 +123,14 @@ function Debug.process_way(way,result)
|
||||
result.forward_classes = {}
|
||||
result.backward_classes = {}
|
||||
|
||||
-- intercept tag function normally provided via C++
|
||||
-- intercept tag functions normally provided via C++
|
||||
function way:get_value_by_key(k)
|
||||
Debug.register_tag_fetch(k)
|
||||
return self[k]
|
||||
end
|
||||
function way:get_location_tag(k)
|
||||
return nil
|
||||
end
|
||||
|
||||
-- reset tag counts
|
||||
Debug:reset_tag_fetch_counts()
|
||||
|
Loading…
Reference in New Issue
Block a user