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
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')))
......
......@@ -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):
......
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