Commit 79bd3336 authored by Eric Duminil's avatar Eric Duminil
Browse files

Check if trees are duplicate.

parent e6ba2d4d
...@@ -5,18 +5,20 @@ from tree import Tree, Forest ...@@ -5,18 +5,20 @@ from tree import Tree, Forest
def get_existing_forest(shp_input): def get_existing_forest(shp_input):
print(f"Importing {shp_input}") print(f"Importing {shp_input}")
df = gpd.read_file(shp_input) df = gpd.read_file(shp_input)
trees = [] forest = Forest()
for tree_row in df.itertuples(): for tree_row in df.itertuples():
point = tree_row.geometry 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, description=tree_row.Bezeichnun,
diameter=tree_row.Kronenbrei, diameter=tree_row.Kronenbrei,
type=tree_row.Baumart, type=tree_row.Baumart,
trunk_diameter=tree_row.Stammumfan, trunk_diameter=tree_row.Stammumfan,
height=tree_row.Baumhöhe, height=tree_row.Baumhöhe,
source=Path(shp_input).name 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__": if __name__ == "__main__":
print(repr(get_existing_forest('existing_trees/Trees_ideal_2_20240227.shp'))) print(repr(get_existing_forest('existing_trees/Trees_ideal_2_20240227.shp')))
......
...@@ -39,11 +39,13 @@ class Forest(UserList): ...@@ -39,11 +39,13 @@ class Forest(UserList):
self.data = existing_trees 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)) _nearest_tree, distance_2 = self.kd_tree.search_nn((x, y))
if distance_2 > min_distance_2: if distance_2 > min_distance_2:
self.kd_tree.add((x, y)) self.kd_tree.add((x, y))
self.append(Tree(x, y, **kparams)) self.append(Tree(x, y, **kparams))
return True
return False
@property @property
def xs_ys_cs(self): def xs_ys_cs(self):
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment