]> rtime.felk.cvut.cz Git - hubacji1/iamcar2.git/blob - scripts/geojson_scenario_to_json_objects_scenario.py
Distinguish path segment (left/right/straight)
[hubacji1/iamcar2.git] / scripts / geojson_scenario_to_json_objects_scenario.py
1 """Load geojson scenario and create json dump of objects for iamcar.
2
3 The geojson file can be easily generated by JOSM. The tags used are:
4 - ``obstacle=yes`` for polygon obstacle.
5 - ``car=yes`` for cars. They are taken as polygon obstacles for now.
6 - ``start=yes`` denotes possible starting point.
7 - ``slot=yes`` denotes possible parking slot.
8 """
9 from json import dumps, loads
10 from pyproj import Proj, transform
11
12 IF = "prague-scenario.geojson"
13 IP = Proj(init="epsg:4326")
14 OF = "sc.json"
15 OP = Proj(init="epsg:5514")
16
17 if __name__ == "__main__":
18     with open(IF) as f:
19         objs = loads(f.read())
20     obsts = []
21     for o in objs["features"]:
22         if "car" in o["properties"] or "obstacle" in o["properties"]:
23             obst = []
24             for (lon, lat) in o["geometry"]["coordinates"]:
25                 obst.append(transform(IP, OP, lon, lat))
26             obsts.append(obst)
27     slots = []
28     for o in objs["features"]:
29         if "slot" in o["properties"]:
30             slot = []
31             for (lon, lat) in o["geometry"]["coordinates"]:
32                 slot.append(transform(IP, OP, lon, lat))
33             slots.append(slot)
34     starts = []
35     for o in objs["features"]:
36         if "start" in o["properties"]:
37             (lon, lat) = o["geometry"]["coordinates"]
38             starts.append(transform(IP, OP, lon, lat))
39     scenario = {}
40     scenario["obst"] = obsts
41     scenario["slot"] = slots
42     scenario["starts"] = starts
43     with open(OF, 'w') as f:
44         f.write(dumps(scenario))