diff --git a/python_scripts/add_trees_to_open_street_map/import_existing_trees.py b/python_scripts/add_trees_to_open_street_map/import_existing_trees.py index c45078378536f4ad2846676f124439dd82d5df94..4c5d45e4531804d639f2b8318753e55710fbbb19 100644 --- a/python_scripts/add_trees_to_open_street_map/import_existing_trees.py +++ b/python_scripts/add_trees_to_open_street_map/import_existing_trees.py @@ -5,18 +5,20 @@ from tree import Tree, Forest def get_existing_forest(shp_input): print(f"Importing {shp_input}") df = gpd.read_file(shp_input) - trees = [] + forest = Forest() for tree_row in df.itertuples(): point = tree_row.geometry - trees.append(Tree(point.x, point.y, + added = forest.add_tree_if_possible(0.1, point.x, point.y, description=tree_row.Bezeichnun, diameter=tree_row.Kronenbrei, type=tree_row.Baumart, trunk_diameter=tree_row.Stammumfan, height=tree_row.Baumhöhe, source=Path(shp_input).name - )) - return Forest(trees) + ) + if not added: + print(f"Warning, tree seems to be too close to others! Is it a duplicate?\n\t{tree_row}") + return forest if __name__ == "__main__": print(repr(get_existing_forest('existing_trees/Trees_ideal_2_20240227.shp'))) diff --git a/python_scripts/add_trees_to_open_street_map/tree.py b/python_scripts/add_trees_to_open_street_map/tree.py index 8bc316277862643ba96e8d20a744aeff40dc5832..3a801794fb59c2f7d7bf259452c057a3f59e8150 100644 --- a/python_scripts/add_trees_to_open_street_map/tree.py +++ b/python_scripts/add_trees_to_open_street_map/tree.py @@ -39,11 +39,13 @@ class Forest(UserList): self.data = existing_trees - def add_tree_if_possible(self, min_distance_2, x, y, **kparams): + def add_tree_if_possible(self, min_distance_2, x, y, **kparams) -> bool: _nearest_tree, distance_2 = self.kd_tree.search_nn((x, y)) if distance_2 > min_distance_2: self.kd_tree.add((x, y)) self.append(Tree(x, y, **kparams)) + return True + return False @property def xs_ys_cs(self):