결과물
먼저 아래 게시물들을 보고 오시면 좋을 것 같습니다!
코랩(colab)에 활용할 파일 업로드 하는 법
1. 코랩에 접속해주신 다음에 노트를 열어주시고요. 2. 왼쪽 탭에서 폴더 아이콘 클릭해주시고요. 3. 조금 기다리시면 아래 그림과 같이 탭이 뜹니다. 4. 왼쪽 상단에 있는 아이콘을 클릭해주시고
datanaly.tistory.com
SHP파일 GeoJSON 파일로 변경하는법
1. 먼저 여기서 원하는 shp 파일을 다운로드 해준다. 대한민국 최신 행정구역(SHP) 다운로드 – GIS Developer www.gisdeveloper.co.kr (1) 다운로드한 파일 압축을 풀면 3개의 파일을 확인할 수 있다. 2. 여기서
datanaly.tistory.com
folium(포리움), DivIcon 활용하여 지도에 데이터,텍스트 표시
결과 데이터 시작! 활용 데이터 ff 지하철역별 주변 공시지가.csv name,price,llatitude,longitude 건대입구,524.1,37.5398966800000,127.0706677346700 뚝섬유원지,502.5,37.5315151275315,127.0667961917620 어린이대공원,487.8,37.5
datanaly.tistory.com
참고 블로그
Python Folium을 사용해서, 대한민국 법정동 경계선 시각화해보기
업무에서 지도 데이터를 다룰 일이 많아서 Python folium을 스터디하고 있습니다. folium을 사용해 대한민국 법정동 경계선을 시각화한 경험을 공유합니다! . 저의 🍯꿀팁들도 함께 작성했으니 재밌
velog.io
활용 데이터
활용데이터.zip
drive.google.com
전체 코드
import geopandas as gpd
import pandas as pd
import folium
from folium.features import DivIcon
df_gu= gpd.read_file('/content/sig.json')
df_bdong = gpd.read_file('/content/emd.json')
cc = pd.read_table('/cc.csv', sep=',')
tt = pd.read_table('/tt.csv', sep=',')
result_df = pd.merge(df_gu, df_bdong, left_on=df_gu['SIG_CD'], right_on=df_bdong['EMD_CD'].str[:5], how='left')
gdf_test = result_df[result_df['SIG_KOR_NM'].isin(['광진구'])].reset_index(drop=True)
m = folium.Map(location=[37.54672073122991, 127.08580934446613], zoom_start=13.5)
# 시각화 할 경계선 색상 지정
colors = ['red', 'blue', 'green', 'purple', 'orange', 'darkred', 'darkblue']
# FeatureGroup 사전 생성
layer_dict = {}
# 각 경계선을 지도에 추가
for idx, row in gdf_test.iterrows():
dong_name = row['EMD_KOR_NM']
polygon_wkt = row['geometry_y']
if dong_name in layer_dict:
layer = layer_dict[dong_name]
else:
# 해당 구이름에 대한 FeatureGroup가 없으면 새로 생성
layer = folium.FeatureGroup(name=dong_name,show=True)
layer_dict[dong_name] = layer
layer.add_to(m)
color = colors[len(layer_dict) % len(colors)]
t1 = folium.GeoJson(polygon_wkt,
style_function=lambda feature, color=color: {
'fillColor': color, #채우기 색상
'fillOpacity': 0.5, #채우기 투명도
'color': color, # 테두리 색상
'weight': 2, #테두리 두께
'opacity': 1 # 테두리 투명도
},
tooltip=f'법정동: {dong_name}')
t1.add_to(layer)
for n in cc.index:
lat1, lon1 = cc.loc[n, 'latitude1'], cc.loc[n, 'longitude1']
price1 = cc.loc[n, 'price1']
dong = cc.loc[n, 'dong'] # 이름 데이터
# 이름과 가격을 표시하는 DivIcon 추가, 스타일 변경
folium.Marker(
[lat1, lon1],
icon=DivIcon(
icon_size=(90, 50),
icon_anchor=(25, 25),
html=f'''
<div style="font-size: 10pt; font-weight: bold; color: white;
background: red; padding: 5px; border-radius: 5px;
text-align: center;">
{dong}<br>{price1}
</div>
''',
)
).add_to(m)
for n in tt.index:
lat2, lon2 = tt.loc[n, 'llatitude2'], tt.loc[n, 'longitude2']
price2 = tt.loc[n, 'price2']
name = tt.loc[n, 'name'] # 이름 데이터
# 이름과 가격을 표시하는 DivIcon 추가, 스타일 변경
folium.Marker(
[lat2, lon2],
icon=DivIcon(
icon_size=(110, 50),
icon_anchor=(50, 25),
html=f'''
<div style="font-size: 10pt; font-weight: bold; color: white;
background: navy; padding: 5px; border-radius: 5px;
text-align: center;">
{name}<br>{price2}
</div>
''',
)
).add_to(m)
# folium.LayerControl 추가한 뒤, 지도 표시
folium.LayerControl(collapsed=False).add_to(m)
folium.LatLngPopup().add_to(m)
# html파일로 저장
m.save("법정동시각화_231210.html")
m
51번째 줄 코드부터 91번째 줄 코드 설명은 아래 블로그 글을 참고해주세요!
folium(포리움), DivIcon 활용하여 지도에 데이터,텍스트 표시
결과 데이터 시작! 활용 데이터 ff 지하철역별 주변 공시지가.csv name,price,llatitude,longitude 건대입구,524.1,37.5398966800000,127.0706677346700 뚝섬유원지,502.5,37.5315151275315,127.0667961917620 어린이대공원,487.8,37.5
datanaly.tistory.com
사용할 라이브러리 파일 가져오기!
import geopandas as gpd
# gepandas 라이브러리를 가져오고 gpd라고 할거야!
import pandas as pd
# pandas 라이브러리를 가져오고 pd라고 할거야!
import folium
# folium 라이브러리를 가져올거야!
from folium.features import DivIcon
# folium.features 패키지에서 DivIcon 모듈을 가져올거야
df_gu= gpd.read_file('/content/sig.json')
# sig.json 파일을 geopandas 데이터프레임 형식으로 가져와서 "df_gu"라고 할거야.
df_bdong = gpd.read_file('/content/emd.json')
# emd.json 파일을 geopandas 데이터프레임 형식으로 가져와서 "df_bdong"라고 할거야.
cc = pd.read_table('/cc.csv', sep=',')
# cc.csv 파일을 pandas 데이터프레임 형식으로 가져와서 "cc"라고 할거야.
tt = pd.read_table('/tt.csv', sep=',')
# tt.csv 파일을 pandas 데이터프레임 형식으로 가져와서 "tt"라고 할거야.
각각의 데이터 프레임들을 뽑아보고 데이터 모습과 타입을 확인해보겠습니다.
df_gu.head()
# df_gu 상위 5개 열을 확인해보자!
출력 결과
type(df_gu)
# df_gu의 타입을 확인해보자!
출력 결과
df_bdong.head()
# df_bdong 상위 5개 열을 확인해보자!
출력 결과
type(df_bdong)
# df_bdong의 타입을 확인해보자!
출력 결과
cc.head()
# cc의 상위 5개 열을 확인해보자!
출력 결과
type(cc)
# cc의 타입을 확인해보자!
출력 결과
tt.head()
# tt의 상위 5개 열을 확인해보자!
출력 결과
type(tt)
# tt의 타입을 확인해보자!
출력 결과
다음 글에 이어서 진행하겠습니다!
geopandas, folium을 통하여 지도 시각화하기(2)
먼저 보고 오셔야 하는 게시글 geopandas, folium을 통하여 지도 시각화하기(1) 결과물 먼저 아래 게시물들을 보고 오시면 좋을 것 같습니다! 코랩(colab)에 활용할 파일 업로드 하는 법 1. 코랩에 접속
datanaly.tistory.com
'Today i learned & Week i learned > 프로젝트 관련' 카테고리의 다른 글
geopandas, folium을 통하여 지도 시각화하기(3) (0) | 2023.12.24 |
---|---|
geopandas, folium을 통하여 지도 시각화하기(2) (0) | 2023.12.23 |
SHP파일 GeoJSON 파일로 변경하는법 (1) | 2023.12.22 |
folium(포리움), DivIcon 활용하여 지도에 데이터,텍스트 표시 (0) | 2023.12.21 |