폴리곤 인코딩 자동감지.
from shapely.wkt import loads
import geopandas as gpd
import folium
# 파일 인코딩 자동감지
with open('D:/파이썬/분석/폴리곤_list.csv', 'rb') as file:
result = chardet.detect(file.read())
encoding = result['encoding']
# 파일 불러오기, 파일의 위/경도 좌표는 POLYGON ((경도 위도 , 126.94260 37.5141)) 형식이어야함
whkvy = pd.read_csv(' D:/파이썬/분석/폴리곤_list.csv ', encoding=encoding)
# 빈 리스트 생성
geometry_list = []
# 파일내 좌표값의 오류가 있을경우, 해당 행(폴리곤 제외)
for i in range(len(whkvy)):
try:
polygon_data = whkvy['geometry2'][i]
polygon = loads(polygon_data)
geometry_list.append(polygon)
except Exception as e:
print(f"Error at index {i}: {e}")
# 리스트를 GeoDataFrame으로 변환
gdf = gpd.GeoDataFrame(geometry=geometry_list, crs='EPSG:4326')
# 백그라운드 지도를 포함한 플로트 생성
fig, ax = plt.subplots(figsize=(10, 10))
gdf.plot(ax=ax, alpha=0.5, edgecolor='k')
# contextily를 사용하여 OpenStreetMap 추가
ctx.add_basemap(ax, crs=gdf.crs.to_string(), source=ctx.providers.OpenStreetMap.Mapnik)
# Matplotlib 플로트을 folium 지도로 변환
m = folium.Map(location=[gdf.geometry.centroid.y.mean(), gdf.geometry.centroid.x.mean()], zoom_start=12)
folium.GeoJson(gdf).add_to(m)
# folium 지도를 HTML 파일로 저장하거나 표시
m.save("D:/파이썬/분석/20240119_배달_폴리곤/map.html")
# m.show() # 주피터 노트북에서 실행하는 경우 사용
'코딩' 카테고리의 다른 글
SQL 컬럼별, 행별 합/평균/최대/최소 집계값 계산법 (0) | 2024.05.09 |
---|---|
연관성 분석(장바구니 분석) 예제 (0) | 2024.02.08 |