diff --git a/scripts/geodata/openaddresses/formatter.py b/scripts/geodata/openaddresses/formatter.py index 2228860d..e34a441f 100644 --- a/scripts/geodata/openaddresses/formatter.py +++ b/scripts/geodata/openaddresses/formatter.py @@ -255,6 +255,9 @@ class OpenAddressesFormatter(object): latitude_index = headers.index('LAT') longitude_index = headers.index('LON') + # Clear cached polygons + self.components.osm_admin_rtree.clear_cache() + for row in reader: try: latitude = float(row[latitude_index]) diff --git a/scripts/geodata/polygons/index.py b/scripts/geodata/polygons/index.py index 4e3ebd33..702643d1 100644 --- a/scripts/geodata/polygons/index.py +++ b/scripts/geodata/polygons/index.py @@ -1,4 +1,5 @@ import fiona +import gc import geohash import os import rtree @@ -86,6 +87,12 @@ class PolygonIndex(object): def setup(self): pass + def clear_cache(self, garbage_collect=True): + if self.persistent_polygons and self.cache_size > 0: + self.polygons.clear() + if garbage_collect: + gc.collect() + def simplify_polygon(self, poly, simplify_tolerance=None, preserve_topology=None): if simplify_tolerance is None: simplify_tolerance = self.simplify_tolerance