본문 바로가기
Python 파이썬/Folium

Folium ) 지도 만들기

by 하이방가루 2022. 3. 31.
728x90
반응형

지도만들기 Map()

folium.Map(location=[위도, 경도], zoom_start=줌 횟수) 으로 원하는 위치를 중심으로 확대하여 볼 수 있다.

tiles 옵션을 적용하면 지도에 적용하는 스타일을 변경하여 지정할 수 있다.

  • “OpenStreetMap” (default)
  • “Mapbox Bright” (Limited levels of zoom for free tiles)
  • “Mapbox Control Room” (Limited levels of zoom for free tiles)
  • “Stamen” (Terrain, Toner, and Watercolor)
    •   'Stamen Terrain' - 산악지형 등의 지형이 보다 선명하게 드러난다.
    •   'Stamen Toner' - 흑백 스타일로 도로망을 강조해서 보여준다.
  • “Cloudmade” (Must pass API key)
  • “Mapbox” (Must pass API key)
  • “CartoDB” (positron and dark_matter)

 

전체 매개변수

  • location (tuple or list, default None) – 지도의 위도(Latitude)와 경도(Longitude) ; 
  • width (pixel int or percentage string (default: '100%')) – 지도의 너비를 지정한다.
  • height (pixel int or percentage string (default: '100%')) – 지도의 높이를 지정한다.
  • tiles (str, default 'OpenStreetMap') – 기본 제공 타일 목록에서 선택하거나 사용자 지정 URL을 전달하거나 None을 전달하여 타일 없이 지도를 생성할 수도 있다. 고급 타일 레이어 옵션의 경우 TileLayer 클래스를 사용한다.
  • attr (string, default None) – 사용자 지정 타일 URL을 전달하는 경우 지도 타일 속성
  • min_zoom (int, default 0) – 생성되는 타일 레이어에 허용되는 최소 확대 수준
  • max_zoom (int, default 18) – 생성되는 타일 레이어에 허용되는 최대 확대 수준
  • zoom_start (int, default 10) – 지도의 초기 확대/축소 수준 ; location이 잘못되거나 None일 경우 세계지도를 1번 확대한 상태로 만들어진다.
  • min_lat (float, default -90) - 최소 위도
  • max_lat (float, default 90) - 최대 위도
  • min_lon (float, default -180) - 최소 경도
  • max_lon (float, default 180) - 최대 경도
  • max_bounds (bool, default False) - 지도 보기를 지정된 경계로 제한한다.
  • crs (str, default 'EPSG3857') – Defines coordinate reference systems for projecting geographical points into pixel (screen) coordinates and back. You can use Leaflet’s values : * EPSG3857 : The most common CRS for online maps, used by almost all free and commercial tile providers. Uses Spherical Mercator projection. Set in by default in Map’s crs option. * EPSG4326 : A common CRS among GIS enthusiasts. Uses simple Equirectangular projection. * EPSG3395 : Rarely used by some commercial tile providers. Uses Elliptical Mercator projection. * Simple : A simple CRS that maps longitude and latitude into x and y directly. May be used for maps of flat surfaces (e.g. game maps). Note that the y axis should still be inverted (going from bottom to top).
  • control_scale (bool, default False) – True일 경우 오른쪽 아래 축척을 표시한다.
  • prefer_canvas (bool, default False) – Leaflet의 Canvas back-end에 SVG대신 Vector layer (사용가능할 경우에만)를  사용하게 합니다. 경우에 따라서 성능을 상당히 향상시킬 수 있다. ( 예: 지도에 수천 개의 원 마커를 표시할 경우)
  • no_touch (bool, default False) – Leaflet이 터치 이벤트를 감지하더라도 사용하지 않도록 한다.
  • disable_3d (bool, default False) – Leaflet가 CSS 3D 변환을 사용하지 않도록 한다. 일부 드문 환경에서 결함이 발생할 수 있다.
  • png_enabled (bool, default False) - 
  • zoom_control (bool, default True) – 지도에 확대/축소 컨트롤을 표시한다.
  • **kwargs – 추가 키워드 인수가 Leaflets Map 클래스에 전달된다. : Leaflets Map 클래스 정보는 여기

예시

import folium

seoul_map = folium.Map(
	location=[37.55,126.98],
	zoom_start=12,
    control_scale=True, # 축척표시 default : False
)
# location이 잘못되면 세계지도크기로 가져온다. 오류발생안함

# 파일로 저장
seoul_map.save('./output/seoul.html')

실행결과 다음과 같은 코드를 가진 html이 만들어진다.

<!DOCTYPE html>
<head>    
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    
        <script>
            L_NO_TOUCH = false;
            L_DISABLE_3D = false;
        </script>
    
    <style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
    <style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
    <script src="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js"></script>
    <script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css"/>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"/>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css"/>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css"/>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
    
            <meta name="viewport" content="width=device-width,
                initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
            <style>
                #map_4d55a341987d48b0b21604ba0a743377 {
                    position: relative;
                    width: 100.0%;
                    height: 100.0%;
                    left: 0.0%;
                    top: 0.0%;
                }
            </style>
        
</head>
<body>    
    
            <div class="folium-map" id="map_4d55a341987d48b0b21604ba0a743377" ></div>
        
</body>
<script>    
    
            var map_4d55a341987d48b0b21604ba0a743377 = L.map(
                "map_4d55a341987d48b0b21604ba0a743377",
                {
                    center: [37.55, 126.98],
                    crs: L.CRS.EPSG3857,
                    zoom: 12,
                    zoomControl: true,
                    preferCanvas: false,
                }
            );
            L.control.scale().addTo(map_4d55a341987d48b0b21604ba0a743377);

            

        
    
            var tile_layer_d8dad308fa204c849b9cae896fe8784d = L.tileLayer(
                "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
                {"attribution": "Data by \u0026copy; \u003ca href=\"http://openstreetmap.org\"\u003eOpenStreetMap\u003c/a\u003e, under \u003ca href=\"http://www.openstreetmap.org/copyright\"\u003eODbL\u003c/a\u003e.", "detectRetina": false, "maxNativeZoom": 18, "maxZoom": 18, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
            ).addTo(map_4d55a341987d48b0b21604ba0a743377);
        
</script>

seoul.html
0.00MB

728x90
반응형

'Python 파이썬 > Folium' 카테고리의 다른 글

Folium ) 단계구분도 Choropleth Map  (0) 2022.04.04
Folium ) 지도에 다양한 마커 표시하기  (0) 2022.04.01
Folium ) 소개  (0) 2022.03.31

댓글