def test_get_highway_names2(self): """127x faster than test_get_highway_names1""" highway_names = defaultdict(list) for feat in self.obj.getFeatures(): highway_names[feat['TN_text']].append(feat.geometry().asPoint()) for name, points in highway_names.items(): bbox = QgsGeometry().fromMultiPoint(points).boundingBox() choices = [self.features[fid]['name'] for fid in self.index.intersects(bbox)] highway_names[name] = hgwnames.match(name, choices)
def _test_get_highway_names1(self): highway_names = {} for feat in self.obj.getFeatures(): name = feat['TN_text'] if name not in highway_names: query = self.obj.search("TN_text='%s'" % self.ad['TN_text']) points = [f.geometry().asPoint() for f in query] bbox = QgsGeometry().fromMultiPoint(points).boundingBox() choices = [self.features[fid]['name'] for fid in self.index.intersects(bbox)] name = hgwnames.match(name, choices)
def test_nonfyzzy_match(self): self.assertEqual(hgwnames.match('CL FOOBAR', self.choices), 'Calle Foobar')
def test_fuzzy_match(self): self.assertEqual(hgwnames.match('FOOB', self.choices), 'Foobar') self.assertEqual(hgwnames.match('CL FRANCIA', self.choices), 'Calle Francia')
def test_get_highway_names2b(self): for name, points in self.highway_names.items(): bbox = QgsGeometry().fromMultiPoint(points).boundingBox() choices = [self.features[fid]['name'] for fid in self.index.intersects(bbox)] self.highway_names[name] = hgwnames.match(name, choices)
def test_get_highway_names1c(self): name = hgwnames.match(self.ad['TN_text'], self.choices)