diff --git a/src/c3nav/mapdata/utils/svg.py b/src/c3nav/mapdata/utils/svg.py
index 2734fd48..802ce295 100644
--- a/src/c3nav/mapdata/utils/svg.py
+++ b/src/c3nav/mapdata/utils/svg.py
@@ -56,6 +56,10 @@ class SVGImage:
self.altitudes = {}
self.last_altitude = None
+ # for fast numpy operations
+ self.np_scale = np.array((self.scale, -self.scale))
+ self.np_offset = np.array((-self.left*self.scale, self.top*self.scale))
+
# keep track of created blur filters to avoid duplicates
self.blurs = set()
@@ -134,19 +138,16 @@ class SVGImage:
return re.sub(r'L (-?([0-9]+)(.[0-9]+)?,(-?[0-9]+)(.[0-9]+)?) L', r'L \1 ', data)
def _geometry_to_svg(self, geom):
+ # scale and move geometry geometry and create svg code for it
if isinstance(geom, Polygon):
return ('').replace('.0 ', ' ')
if isinstance(geom, LineString):
return (('') %
- tuple((np.array(geom)
- * np.array((self.scale, -self.scale))
- + np.array((-self.left*self.scale, self.top*self.scale))).flatten())).replace('.0 ', ' ')
+ tuple((np.array(geom)*self.np_scale+self.np_offset).flatten())).replace('.0 ', ' ')
try:
geoms = geom.geoms
except AttributeError: