|
|
|
""" |
|
Created on Tue May 21 13:44:53 2024 |
|
|
|
@author: morit |
|
""" |
|
|
|
import json |
|
from shapely.geometry import Polygon |
|
from shapely.ops import unary_union |
|
import matplotlib.pyplot as plt |
|
from matplotlib.patches import Polygon as MplPolygon |
|
import numpy as np |
|
import pandas as pd |
|
|
|
with open('../data_subset/Tree Crown vector datasets-20240520T095639Z-001/Tree Crown vector datasets/manaus_800.geojson', 'r') as file: |
|
data = json.load(file) |
|
|
|
print(len(data)) |
|
data_list = data['features'] |
|
print(data['features'][0]) |
|
|
|
|
|
polygon1_coords = data_list[0]['geometry']['coordinates'][0] |
|
polygon2_coords = data_list[1]['geometry']['coordinates'][0] |
|
|
|
|
|
def add_extreme_coordinates(polygon_data): |
|
polygon_coords = np.array(data_list[0]['geometry']['coordinates'][0]) |
|
|
|
polygon_data['geometry']['max_lat'] = max(polygon_coords[:,1]) |
|
polygon_data['geometry']['min_lat'] = min(polygon_coords[:,1]) |
|
polygon_data['geometry']['max_lon'] = max(polygon_coords[:,0]) |
|
polygon_data['geometry']['min_lon'] = min(polygon_coords[:,0]) |
|
|
|
|
|
for i in range(len(data_list)): |
|
add_extreme_coordinates(data_list[i]) |
|
|
|
print(data['features'][0]) |
|
|
|
|
|
|
|
|
|
list_polygons = [] |
|
N = 50 |
|
for i in range(N): |
|
polygon_coords = data_list[i]['geometry']['coordinates'][0] |
|
polygon = Polygon(polygon_coords) |
|
list_polygons.append(polygon) |
|
|
|
|
|
|
|
|
|
def plot_polygon(ax, polygon, color, label): |
|
if not polygon.is_empty: |
|
x, y = polygon.exterior.xy |
|
ax.fill(x, y, color=color, alpha=0.5, label=label) |
|
|
|
|
|
fig, ax = plt.subplots() |
|
|
|
|
|
for i,polygon in enumerate(list_polygons): |
|
plot_polygon(ax, polygon, 'blue', f"polygon {i}") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ax.set_aspect('equal') |
|
|
|
|
|
|
|
|
|
ax.set_title('Polygons and their Intersection') |
|
plt.ylabel('lat') |
|
plt.ylabel('lon') |
|
|
|
plt.show() |
|
|
|
df = pd.DataFrame(data_list).drop(columns='type') |
|
|
|
dict_cols = ['properties', 'geometry'] |
|
for dict_col in dict_cols: |
|
dict_df = pd.json_normalize(df[dict_col]) |
|
|
|
df = df.drop(columns=[dict_col]).join(dict_df) |
|
|
|
|
|
|
|
print(dict_df) |
|
print(df) |
|
print(df.columns) |
|
|
|
|
|
|
|
|
|
|
|
|