]> git.openstreetmap.org Git - chef.git/blobdiff - cookbooks/tile/files/default/bin/expire-tiles-single
Try and ensure tile server use an integer number of listen buckets
[chef.git] / cookbooks / tile / files / default / bin / expire-tiles-single
index fa45be9eed6ec7cfd1695a72a55cdf72fd97242f..431021b2e409042e427d6e34d7c778cad7936442 100644 (file)
@@ -1,10 +1,10 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 """
 Expire meta tiles from a OSM change file by resetting their modified time.
 """
 
 import argparse
-import os.path as ospath
+import os
 import osmium as o
 import pyproj
 
@@ -12,8 +12,7 @@ EXPIRY_TIME = 946681200 # 2000-01-01 00:00:00
 # width/height of the spherical mercator projection
 SIZE = 40075016.6855784
 
-proj_wsg84 = pyproj.Proj(init='epsg:4326')
-proj_merc = pyproj.Proj(init='epsg:3857')
+proj_transformer = pyproj.Transformer.from_crs('epsg:4326', 'epsg:3857', always_xy = True)
 
 class TileCollector(o.SimpleHandler):
 
@@ -29,7 +28,7 @@ class TileCollector(o.SimpleHandler):
             return
 
         lat = max(-85, min(85.0, location.lat))
-        x, y = pyproj.transform(proj_wsg84, proj_merc, location.lon, lat)
+        x, y = proj_transformer.transform(location.lon, lat)
 
         # renormalise into unit space [0,1]
         x = 0.5 + x / SIZE
@@ -52,7 +51,7 @@ class TileCollector(o.SimpleHandler):
                 self.done_nodes.add(n.ref)
                 try:
                     self.add_tile_from_node(self.node_cache.get(n.ref))
-                except o.NotFoundError:
+                except KeyError:
                     pass # no coordinate
 
 
@@ -73,17 +72,18 @@ def xyz_to_meta(x, y, z, meta_size):
         if path is None:
             path = (part + ".meta")
         else:
-            path = ospath.join(part, path)
+            path = os.path.join(part, path)
 
-    return ospath.join(str(z), path)
+    return os.path.join(str(z), path)
 
 
 def expire_meta(meta):
     """Expire the meta tile by setting the modified time back.
     """
-    if ospath.exists(meta):
-        print("Expiring " + meta)
+    exists = os.path.exists(meta)
+    if exists:
         os.utime(meta, (EXPIRY_TIME, EXPIRY_TIME))
+    return exists
 
 
 def expire_meta_tiles(options):
@@ -101,14 +101,17 @@ def expire_meta_tiles(options):
             meta = xyz_to_meta(xy[0], xy[1], xy[2], options.meta_size)
 
             for tile_dir in options.tile_dir:
-                meta_set.add(ospath.join(tile_dir, meta))
+                meta_set.add(os.path.join(tile_dir, meta))
 
             # add the parent into the set for the next round
             new_set.add((int(xy[0]/2), int(xy[1]/2), xy[2] - 1))
 
         # expire all meta tiles
+        expired = 0
         for meta in meta_set:
-            expire_meta(meta)
+            if expire_meta(meta):
+                expired += 1
+        print("Expired {0} tiles at zoom {1}".format(expired, z))
 
         # continue with parent tiles
         tile_set = new_set