Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Dynamic Exposure
OpenBuildingMap
rabotnik-obm
Commits
ba438333
Commit
ba438333
authored
Apr 29, 2021
by
Marius Kriegerowski
Browse files
Added floorspace calculation rule
parent
ede57bfc
Pipeline
#23996
passed with stage
in 1 minute and 14 seconds
Changes
1
Pipelines
3
Hide whitespace changes
Inline
Side-by-side
rabotnikobm/rules/get_floorspace.py
0 → 100644
View file @
ba438333
#!/usr/bin/env python3
import
logging
from
rabotnik.storages.base
import
StorageBase
as
RabotnikStorage
from
rabotnik
import
Rule
# pylint: disable=import-error
logger
=
logging
.
getLogger
()
class
Floorspace
(
Rule
):
def
__init__
(
self
,
storage
:
RabotnikStorage
):
"""Calculate floorspace of buildings.
Args:
storage: Storage serving building data.
"""
self
.
storage
=
storage
async
def
evaluate
(
self
,
payload
:
dict
)
->
tuple
:
building_id
=
payload
[
"building_id"
]
async
for
data
in
self
.
storage
.
iter_results
(
f
"""
SELECT ST_Area(ST_Transform(geometry, 4326)) *
CAST(br.tags->'building:levels' AS float)
FROM osm_building_relations AS br
UNION ALL
SELECT ST_Area(ST_Transform(geometry, 4326)) *
CAST(bp.tags->'building:levels' AS float)
FROM osm_building_polygons AS bp
WHERE id =
{
building_id
}
;
"""
):
yield
data
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment