File name
Commit message
Commit date
import pandas as pd
import geopandas as gpd
from pyogrio import read_dataframe, write_dataframe
from shapely.geometry import Point
grid_df = read_dataframe('DATA/refined/geopackage/시군구별/중분류_37100_경산시.gpkg', encoding='utf-8')
light_df = pd.read_csv("DATA/raw/보안등/경상북도_경산시_보안등정보_20230711.csv", encoding="ms949")
grid_df = grid_df.to_crs("epsg:4326")
def is_float(x):
try:
float(x)
return True
except ValueError:
return False
valid_lightings_df = light_df[light_df['경도'].apply(is_float) & light_df['위도'].apply(is_float)]
valid_lightings_df['geometry'] = valid_lightings_df.apply(lambda row: Point(float(row['경도']), float(row['위도'])), axis=1)
valid_lightings_df = gpd.GeoDataFrame(valid_lightings_df, geometry='geometry')
buffer_radius = 50
points_buffered = valid_lightings_df.buffer(buffer_radius)
valid_lightings_df = points_buffered
def calculate_intersection_ratio(polygon, points_buffered):
intersections = points_buffered.intersection(polygon)
intersection_area = intersections.area.sum()
return intersection_area / polygon.area
# Apply the function to each polygon
grid_df['intersection_ratio'] = grid_df.apply(
lambda row: calculate_intersection_ratio(row['geometry'], points_buffered),
axis=1
)
write_dataframe(grid_df, "감시비율(100m).gpkg")