from pyogrio import write_dataframe, read_dataframe
import pandas as pd
import geopandas as gpd
import numpy as np
import glob


SIG_CODE = [
    ["경산", "47290"],
    ["경주", "47130"],
    ["구미", "47190"],
    ["김천", "47150"],
    ["안동", "47170"],
    ["영주", "47210"],
    ["영천", "47230"],
    ["예천", "47900"],
    ["칠곡", "47850"],
    ["포항_남구", "47111"],
    ["포항_북구", "47113"]
]

# origin = read_dataframe("DATA/refined/geopackage/100x100/100m격자총인구.gpkg")
# print(origin.columns)
boarder = read_dataframe("DATA/refined/geopackage/음영구역_격자/100m격자총인구.gpkg격자_경계.gpkg")
print(boarder.columns)
negative = read_dataframe("DATA/refined/geopackage/음영구역_격자/100m격자_음영구역_CPTED.gpkg")
print(negative.columns)

print("dataframe_loaded!")

for SIG in SIG_CODE:
    boarder_SIG = boarder[boarder["EMD_CD"].str.contains(SIG[1])]
    negative_SIG = negative[negative["EMD_CD"].str.contains(SIG[1])]
    # origin_SIG = origin[origin["EMD_CD"].str.contains(SIG[1])]
    boarder_SIG = boarder_SIG.dissolve(by="GID")
    negative_SIG = negative_SIG.dissolve(by="GID")
    boarder_SIG["boarder_area"] = boarder_SIG["geometry"].area
    negative_SIG["negative_area"] = negative_SIG["geometry"].area

    boarder_SIG = boarder_SIG.rename(columns={"geometry" : "boarder_geometry"})
    negative_SIG = negative_SIG.rename(columns={"geometry": "negative_geometry"})

    merged = pd.merge(boarder_SIG, negative_SIG, on="GID").reset_index()

    merged["area_ratio"] = merged["negative_area"] / merged["boarder_area"]
    merged = merged.set_geometry("negative_geometry")
    merged = merged.drop(columns="boarder_geometry")


    write_dataframe(merged, f"DATA/refined/geopackage/100x100음영구역_비율/음영구역비율_{SIG[0]}.gpkg")
