add map renderer
add map renderer
This commit is contained in:
parent
7f5372da70
commit
3c01b620fa
1 changed files with 38 additions and 0 deletions
38
src/c3nav/mapdata/management/commands/createsvg.py
Normal file
38
src/c3nav/mapdata/management/commands/createsvg.py
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
import os
|
||||||
|
from django.core.management.base import BaseCommand
|
||||||
|
|
||||||
|
from c3nav.mapdata.models import Level
|
||||||
|
|
||||||
|
svg_template = """<svg
|
||||||
|
width="{width}"
|
||||||
|
height="{height}"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
>
|
||||||
|
{data}
|
||||||
|
</svg>"""
|
||||||
|
|
||||||
|
|
||||||
|
class Command(BaseCommand):
|
||||||
|
help = 'create svgs for each level'
|
||||||
|
|
||||||
|
def add_arguments(self, parser):
|
||||||
|
parser.add_argument('folder', help='folder, where the svgs should be stored')
|
||||||
|
|
||||||
|
def handle(self, *args, **options):
|
||||||
|
folder = options['folder']
|
||||||
|
os.chdir(folder)
|
||||||
|
|
||||||
|
for level in Level.objects.all():
|
||||||
|
level_name = "level-{}.svg".format(level.name)
|
||||||
|
data = []
|
||||||
|
for building in level.buildings.all():
|
||||||
|
data.append(building.geometry.svg(fill_color="#c0c0c0"))
|
||||||
|
for area in level.areas.all():
|
||||||
|
data.append(area.geometry.svg(fill_color="#a0a0a0"))
|
||||||
|
for obstacle in level.obstacles.all():
|
||||||
|
data.append(obstacle.geometry.svg(fill_color="#ffa0a0"))
|
||||||
|
for door in level.doors.all():
|
||||||
|
data.append(door.geometry.svg(fill_color="#f0a0f0"))
|
||||||
|
with open(level_name, 'w') as fh:
|
||||||
|
fh.write(svg_template.format(width=400, height=200, data='\n'.join(data)))
|
Loading…
Add table
Add a link
Reference in a new issue