kopia lustrzana https://github.com/ogre/habboy
108 wiersze
2.7 KiB
Lua
108 wiersze
2.7 KiB
Lua
node_keys = {}
|
|
|
|
G_DEFAULT = 0
|
|
G_COUNTS = {}
|
|
|
|
|
|
function zoom_tile_area(latitude_degrees, zoom_level)
|
|
earth_equatorial_circumference = 40075016.686 -- meters
|
|
latitude_radians = 3.14159265359 * latitude_degrees / 180.0
|
|
tile_width = earth_equatorial_circumference * math.cos(latitude_radians) / (2^zoom_level)
|
|
return tile_width*tile_width
|
|
end
|
|
|
|
-- store m2 area for one tile on each zoom level
|
|
ZOOM_TILES_AREA = {}
|
|
|
|
|
|
function init_function()
|
|
for i=1,16 do
|
|
ZOOM_TILES_AREA[i] = zoom_tile_area(52.0, i)
|
|
print(ZOOM_TILES_AREA[i])
|
|
end
|
|
end
|
|
|
|
|
|
local function is_in (val, tab)
|
|
for index, value in ipairs(tab) do
|
|
if value == val then
|
|
return true
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
|
|
function get_min_zoom(in_area)
|
|
local min_zoom = 1
|
|
for _z=15,1,-1 do
|
|
if in_area < (0.01 * ZOOM_TILES_AREA[_z]) then
|
|
return _z
|
|
end
|
|
end
|
|
return min_zoom
|
|
end
|
|
|
|
|
|
function exit_function()
|
|
for _k,_v in pairs(G_COUNTS)
|
|
do
|
|
print("\n")
|
|
print(_k)
|
|
for k,v in pairs(_v)
|
|
do
|
|
print("\t", k, v)
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
function node_function(node)
|
|
end
|
|
|
|
|
|
function way_function(way)
|
|
local name = way:Find("name");
|
|
|
|
-- Water
|
|
local natural = way:Find("natural")
|
|
if natural ~= nil and natural ~= "" and way:IsClosed() ~= false then
|
|
if G_COUNTS["natural"] == nil then G_COUNTS["natural"] = {} end
|
|
if G_COUNTS["natural"][natural] == nil then G_COUNTS["natural"][natural] = 0 end
|
|
G_COUNTS["natural"][natural] = G_COUNTS["natural"][natural] + 1
|
|
|
|
if is_in( natural, { "water", "wetland", "bay", "mud" } ) then
|
|
local layer = "water"
|
|
if layer ~= "" then
|
|
way:Layer(layer, way:IsClosed())
|
|
way:Attribute("class", natural)
|
|
way:MinZoom( get_min_zoom(way:Area()) )
|
|
if name ~= nil and name ~= "" then way:Attribute("name",name) end
|
|
end
|
|
end
|
|
end
|
|
|
|
-- waterway
|
|
local waterway = way:Find("waterway")
|
|
if waterway ~= nil and waterway ~= "" then
|
|
if G_COUNTS["waterway"] == nil then G_COUNTS["waterway"] = {} end
|
|
if G_COUNTS["waterway"][waterway] == nil then G_COUNTS["waterway"][waterway] = 0 end
|
|
G_COUNTS["waterway"][waterway] = G_COUNTS["waterway"][waterway] + 1
|
|
|
|
-- if is_in( class, { "yes", "water", "river", "riverbank", "stream", "reservoir", "moat", "pond", "canal" } )
|
|
if is_in( waterway, { "yes", "water", "riverbank", "reservoir", "moat", "pond", "canal" } ) then
|
|
layer = "water"
|
|
way:Layer(layer, way:IsClosed())
|
|
way:Attribute("class", waterway)
|
|
-- way:MinZoom( get_min_zoom(way:Area()) )
|
|
if name ~= nil and name ~= "" then way:Attribute("name",name) end
|
|
elseif is_in( waterway, { "river", "stream", "canal" } ) then
|
|
layer = "river"
|
|
way:Layer(layer, way:IsClosed())
|
|
way:Attribute("class", waterway)
|
|
-- way:MinZoom( get_min_zoom(way:Area()) )
|
|
if name ~= nil and name ~= "" then way:Attribute("name",name) end
|
|
end
|
|
end
|
|
|
|
end |