Update util.lua
now polygons with holes are recognized correctly. also a mix of nested polygons and boxes should be possible as shapes[]
This commit is contained in:
parent
a34617ca25
commit
8d17f1583e
@ -100,22 +100,24 @@ end
|
|||||||
|
|
||||||
-- Return domain from the domain list based on geo position or nil if no geo based domain could be
|
-- Return domain from the domain list based on geo position or nil if no geo based domain could be
|
||||||
-- determined. First check if an area has > 2 points and is hence a polygon. Else assume it is a
|
-- determined. First check if an area has > 2 points and is hence a polygon. Else assume it is a
|
||||||
-- rectangular box defined by two points (south-west and north-east)
|
-- rectangular box defined by two points (south-west and north-east). Furthermore keep record of
|
||||||
|
-- how many nested shapes we are in, e.g. a polyon with holes.
|
||||||
function M.get_domain_by_geo(jdomains,geo)
|
function M.get_domain_by_geo(jdomains,geo)
|
||||||
for _, domain in pairs(jdomains) do
|
for _, domain in pairs(jdomains) do
|
||||||
if domain.domain_code ~= site.default_domain() then
|
if domain.domain_code ~= site.default_domain() then
|
||||||
|
local nesting = 1
|
||||||
for _, area in pairs(domain.domain.hoodselector.shapes) do
|
for _, area in pairs(domain.domain.hoodselector.shapes) do
|
||||||
if #area > 2 then
|
if #area > 2 then
|
||||||
if (M.point_in_polygon(area,geo) == 1) then
|
if (M.point_in_polygon(area,geo) == 1) then
|
||||||
return domain
|
nesting = nesting * (-1)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if ( geo.lat >= area[1].lat and geo.lat < area[2].lat and geo.lon >= area[1].lon
|
if ( geo.lat >= area[1].lat and geo.lat < area[2].lat and geo.lon >= area[1].lon and geo.lon < area[2].lon ) then
|
||||||
and geo.lon < area[2].lon ) then
|
nesting = nesting * (-1)
|
||||||
return domain
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
if nesting == -1 then return domain end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return nil
|
return nil
|
||||||
|
Loading…
Reference in New Issue
Block a user