Skip to content

Commit b5416f8

Browse files
committed
Added point and methods to areas
1 parent 835b618 commit b5416f8

File tree

2 files changed

+38
-0
lines changed

2 files changed

+38
-0
lines changed

area.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ def assignPolygon(self, candidates: 'MultiAreas', assign: str):
3232
self.metadata.update(best_match.metadata)
3333
self.metadata[assign] = best_match.name
3434

35+
def assignCentroid(self):
36+
self.metadata["CENTROID"] = self.polygon.centroid.coords[0]
37+
3538
class MultiAreas:
3639
def __init__(self, areas: list):
3740
if not all(isinstance(area, Area) for area in areas):

point.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
from shapely.geometry import Point
2+
from area import MultiAreas
3+
4+
5+
class Point:
6+
def __init__(self, name: str, point: Point, metadata: dict):
7+
self.name = name
8+
self.point = point
9+
self.metadata = metadata
10+
11+
def __repr__(self):
12+
return f"Point(name={self.name}, point={self.point}, metadata={self.metadata})"
13+
14+
def pointToArray(self):
15+
coords = list(self.point.coords)
16+
return [[x, y] for x, y in coords]
17+
18+
def assignPolygon(self, candidates: 'MultiAreas', assign: str):
19+
max_intersection_area = 0
20+
best_match = None
21+
22+
for candidate in candidates:
23+
if self.point.within(candidate.polygon):
24+
best_match = candidate
25+
break
26+
intersection = self.point.intersection(candidate.polygon)
27+
intersection_area = intersection.area
28+
if intersection_area > max_intersection_area:
29+
max_intersection_area = intersection_area
30+
best_match = candidate
31+
32+
if best_match:
33+
self.metadata.update(best_match.metadata)
34+
self.metadata[assign] = best_match.name
35+

0 commit comments

Comments
 (0)