🖥️ IT, 컴퓨터/🐍 Python

[Python] folium :: 폴리움으로 경위도 좌표로 shp 만들어서 동적 지도 만들기

김 홍시 2023. 4. 25.
반응형

[Python] Create an shp with longitude-latitude coordinates and plot it as a map (folium)

1. 점(point) shp인 경우

import shapefile
import geopandas as gpd
from shapely.geometry import Point
import folium
import pandas as pd
charger = pd.read_csv("경위도_들어있는_표.csv", encoding = "UTF-8")
lat = charger["위도"]
lon = charger["경도"]

# 경위도 좌표
geometry = list(zip(lon, lat))

 

 

 

# Point 객체로 변환
geometry = [Point(xy) for xy in geometry]

# GeoDataFrame 생성
gdf = gpd.GeoDataFrame(geometry=geometry, crs="EPSG:4326")

# shp 파일 저장
gdf.to_file("charger.shp", driver="ESRI Shapefile")
# shp 파일 불러오기
gdf = gpd.read_file("charger.shp")

# GeoJson 객체 생성
geojson = folium.GeoJson(gdf)

# 지도 생성
m = folium.Map(location=[37.5,127], zoom_start=11)

# GeoJson 객체 추가
geojson.add_to(m)

# 배경 지도 추가
folium.TileLayer('CartoDB positron', name='Light Map', control=False).add_to(m)

# 지도 보여주기
folium.LayerControl().add_to(m)
m

 

 

 

html을 저장하고 싶다면 아래 코드를 입력하자.

 

m.save("map.html")

그럼 이와 같이 html 파일로 저장된다.

 

https://kimhongsi.tistory.com/entry/Python-Folium%EC%9C%BC%EB%A1%9C-%EB%A7%8C%EB%93%A0-%EB%8F%99%EC%A0%81%EC%A7%80%EB%8F%84%EC%97%90-%EC%9C%84%EC%B9%98-%EC%9D%B4%EB%A6%84-%ED%8C%9D%EC%97%85-%EB%9D%84%EC%9A%B0%EA%B8%B0

 

[Python] Folium으로 만든 동적지도에 위치 이름 팝업 띄우기

문제상황 https://kimhongsi.tistory.com/entry/Python-%EA%B2%BD%EC%9C%84%EB%8F%84-%EC%A2%8C%ED%91%9C%EB%A1%9C-shp-%EB%A7%8C%EB%93%A4%EC%96%B4%EC%84%9C-%EC%A7%80%EB%8F%84%EB%A1%9C-%ED%91%9C%ED%98%84%ED%95%98%EA%B8%B0-follium

kimhongsi.tistory.com

 

툴팁, 팝업 추가하려면 위 링크 참고

 

https://kimhongsi.tistory.com/entry/Python-Folium-%EC%9B%90%ED%95%98%EB%8A%94-%EC%9D%B4%EB%AF%B8%EC%A7%80%EB%A1%9C-%EB%A7%88%EC%BB%A4-%EC%95%84%EC%9D%B4%EC%BD%98-%EB%B0%94%EA%BE%B8%EA%B8%B0

 

[Python] Folium 원하는 이미지로 마커 아이콘 바꾸기

기본 마커 이미지를 내가 원하는 이미지로 바꾸고 싶다. # 각 마커마다 별도의 CustomIcon 인스턴스 생성 icon = CustomIcon("/다이소.png", icon_size=(20, 20)) # Adjust icon size as needed folium.Marker( location=[row.geometr

kimhongsi.tistory.com

마커 아이콘 바꾸려면 위 링크 참고 

 

 

 

 

아래를 입력하면 

import geopandas as gpd
import folium

# charger.shp 파일 불러오기
gdf = gpd.read_file("charger.shp")

# 지도 생성
m = folium.Map(location=[37.5,127], zoom_start=11)

# 배경 지도 추가
folium.TileLayer('CartoDB positron', name='Light Map', control=False).add_to(m)

# feature_group 생성
fg = folium.FeatureGroup(name='markers').add_to(m)

# GeoDataFrame 행 반복
for idx, row in gdf.iterrows():
    # CircleMarker 객체 추가
    folium.CircleMarker(
        location=[row.geometry.y, row.geometry.x],
        radius=8,
        color='blue',
        fill=True,
        fill_color='blue',
        fill_opacity=0.4,
    ).add_to(fg)

# 지도 보여주기
folium.LayerControl().add_to(m)
m

이런 모양으로 구현된다.

2. 면(area) shp인 경우

import geopandas as gpd
shapefile_path = "당신의 경로~~~~.shp"
gdf = gpd.read_file(shapefile_path)

import folium

# 지도 중심 좌표 설정
center = [37.5, 127]

# 지도 객체 생성
map = folium.Map(location=center, zoom_start=10)

# shp 파일을 지도에 추가
folium.GeoJson(gdf).add_to(map)

# 지도 출력
map

 

2. 면(area) shp 여러 파일을 지도에 올리는 경우

import geopandas as gpd
shapefile_path = "첫번째파일.shp"
gdf = gpd.read_file(shapefile_path)
shapefile_path2 = "두번째파일.shp"
gdf2 = gpd.read_file(shapefile_path2)

import folium

# 지도 중심 좌표 설정
center = [37.5, 127]

# 지도 객체 생성
map = folium.Map(location=center, zoom_start=10)

# shp 파일을 지도에 추가
folium.GeoJson(gdf).add_to(map)
folium.GeoJson(gdf2).add_to(map)
# 지도 출력
map

반응형

댓글