Source code for catatom2osm.geo.tools

[docs]def get_geometry(feat): return feat.geometry() if hasattr(feat, "geometry") else feat
[docs]def is_inside(f1, f2): g1 = get_geometry(f1) g2 = get_geometry(f2) return g2.contains(g1) or g2.overlaps(g1)
[docs]def is_inside_area(f1, f2): g1 = get_geometry(f1) g2 = get_geometry(f2) if g2.contains(g1): return True elif g2.overlaps(g1): inter = g2.intersection(g1) return inter.area() / g1.area() >= 0.5 return False
[docs]def get_attributes(feat): return dict([(i, feat[i]) for i in range(len(feat.fields().toList()))])
[docs]def merge_groups(adjs): """Merge all sets in adjs with common members.""" groups = [] while adjs: group = set(adjs.pop()) lastlen = -1 while len(group) > lastlen: lastlen = len(group) for adj in adjs[:]: for p in adj: if p in group: group |= set(adj) adjs.remove(adj) break groups.append(group) return groups