Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Vẽ Google Map bằng gói folium trong Python

Folium là thư viện Python mạnh mẽ cho phép tạo nhiều loại bản đồ Leaflet. Vì bản đồ Leaflet/folium có tính tương tác, chúng rất lý tưởng để xây dựng dashboard.

Cài đặt

Cài folium rất dễ bằng pip:

$pip install folium


Như ảnh chụp màn hình dưới đây, chỉ cần gõ lệnh trên trong console/cmd và pip sẽ cài folium cùng các phụ thuộc cho Python.

Vẽ Google Map bằng gói folium trong Python


Bản đồ cơ bản

# Nhập thư viện
import folium

# Dùng lat sau đó lon. & zoomlevel 4. Số zoom càng lớn, nhìn càng gần.
mapOBJ = folium.Map(location=[17.3616, 78.4747], zoom_start=4, tiles='Stamen Terrain')

# Phương thức save của đối tượng Map, sẽ tạo file bản đồ
mapOBJ.save('map2.html')

Kết quả

Vẽ Google Map bằng gói folium trong Python

Trường hợp 2: GeoJson

import folium
import os
from folium import features
import numpy as np
import pandas as pd

N = 1000
lons = +5 - np.random.normal(size=N)
lats = 48 - np.random.normal(size=N)

data = {
    'type': 'FeatureCollection',
    'features': [
        {
            'type': 'Feature',
            'geometry': {
                'type': 'MultiPoint',
                'coordinates': [[lon, lat] for (lat, lon) in zip(lats, lons)],
            },
            'properties': {'prop0': 'value0'}
        },
    ],
}

m = folium.Map([17.3616, 78.4747], zoom_start=10)
m.add_child(features.GeoJson(data))
m.save('Features.html')

Kết quả:

Vẽ Google Map bằng gói folium trong Python

Trường hợp 3: Marker, Icon, Popup

import folium
from folium import features

m = folium.Map([17.3616, 78.4747], zoom_start=15)
mk = features.Marker([17.3616, 78.4747])
pp = folium.Popup('Charminar')
ic = features.Icon(color='red')
mk.add_child(ic)
mk.add_child(pp)
m.add_child(mk)
m.save('Features_1.html')

Kết quả

Vẽ Google Map bằng gói folium trong Python

Trường hợp 4

Tôi dùng thư viện mới - vincent. Vincent chuyển cấu trúc dữ liệu Python (tuple, list, dict, DataFrame Pandas) thành ngữ pháp trực quan hóa Vega.

Cài vincent bằng pip rất dễ:

$pip install vincent
C:\WINDOWS\system32>pip install vincent
Collecting vincent
Downloading https://files.pythonhosted.org/packages/11/bf/a12ecaa21a2e376a16de67e09f64a38a4acd95e04e5dc35ad2f13a6f0bfd/vincent-0.4.4.tar.gz
Requirement already satisfied: pandas in c:\python\python361\lib\site-packages (from vincent) (0.20.2)
Requirement already satisfied: pytz >= 2011k in c:\python\python361\lib\site-packages (from pandas -> vincent) (2017.2)
Requirement already satisfied: python-dateutil >= 2 in c:\python\python361\lib\site-packages (from pandas -> vincent) (2.6.0)
Requirement already satisfied: numpy >= 1.7.0 in c:\python\python361\lib\site-packages (from pandas -> vincent) (1.16.0)
Requirement already satisfied: six >= 1.5 in c:\python\python361\lib\site-packages (from python-dateutil >= 2 -> pandas -> vincent) (1.10.0)
Building wheels for collected packages: vincent
Running setup.py bdist_wheel for vincent ... done
Stored in directory: C:\Users\rajesh\AppData\Local\pip\Cache\wheels\4c\0d\8a\65f34c765c6094a71cce3e42a49a26533eef61695e9b505f03
Successfully built vincent
Installing collected packages: vincent
Successfully installed vincent-0.4.4


import folium
from folium import features
import numpy as np
import json
import vincent

N = 100
multi_iter2 = {
    'x': np.random.uniform(size=(N,)),
    'y': np.random.uniform(size=(N,)),
}

scatter = vincent.Scatter(multi_iter2, iter_idx='x', height=100, width=200)
data = json.loads(scatter.to_json())

m = folium.Map([17.3616, 78.4747], zoom_start=10)
mk = features.Marker([17.3616, 78.4747])
p = folium.Popup('Charminar')
v = features.Vega(data, width='100%', height='100%')
mk.add_child(p)
p.add_child(v)
m.add_child(mk)
m.save('Features_2.html')

Kết quả

Vẽ Google Map bằng gói folium trong Python