[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 파일로 저장된다.
[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
툴팁, 팝업 추가하려면 위 링크 참고
[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
'🖥️ IT, 컴퓨터 > 🐍 Python' 카테고리의 다른 글
[Python] folium 지도를 html로 저장하기 (0) | 2023.05.09 |
---|---|
[Python] Folium 지도를 png로 내보내기 (0) | 2023.04.27 |
[Python] 인덱스 숫자를 하나의 별도의 열로 바꿔주기 :: .reset_index() (0) | 2023.04.17 |
[Python] join하기 (merge) (0) | 2023.04.17 |
[Python] 열 일부만 추출하여 새로운 표로 만들기 (0) | 2023.04.17 |
댓글