最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python 繪制北上廣深的地鐵路線動態(tài)圖

 更新時間:2021年12月09日 11:10:02   作者:編程簡單學(xué)  
這篇文章主要介紹了用python制作北上廣深——地鐵線路動態(tài)圖,文中的示例代碼講解詳細(xì),對我們的工作或?qū)W習(xí)都有一定的價值,感興趣的同學(xué)可以學(xué)習(xí)一下

今天教大家用python制作北上廣深——地鐵線路動態(tài)圖,這可能是全網(wǎng)最全最詳細(xì)的教程了。

坐標(biāo)點(diǎn)的采集

小五之前做過類似的地理可視化,不過都是使用網(wǎng)絡(luò)上收集到的json數(shù)據(jù)。但很多數(shù)據(jù)其實(shí)是過時的,甚至是錯誤/不全的。所以我們最好還是要自己動手,豐衣足食(爬蟲大法好)。打開高德地圖的地鐵網(wǎng)頁

可以輕松得到北京地鐵數(shù)據(jù)的接口,同理也把其他三個城市的url復(fù)制出來。有了api,解析json即可獲得數(shù)據(jù)

url = 'http://map.amap.com/service/subway?_1615466846985&srhdata=1100_drw_beijing.json'
response = requests.get(url)
result = json.loads(response.text)
stations = []
for i in result['l']:
    station = []
    for a in i['st']:
        station.append([float(b) for b in a['sl'].split(',')])
    stations.append(station)
pprint.pprint(stations)

pprint格式化打印結(jié)果,方便預(yù)覽

坐標(biāo)系的轉(zhuǎn)換

其實(shí)我之前有看到類似地理可視化文章,結(jié)果自己一試發(fā)現(xiàn)縮小看還行,一放大就會發(fā)現(xiàn)坐標(biāo)點(diǎn)飄出二里地了??正好拿上文獲取的坐標(biāo)點(diǎn)給大家演示一下,看看同樣的經(jīng)緯度在不同地圖里的地理位置

可以看到該經(jīng)緯度在高德地圖里指的是金安橋地鐵站,然而在百度地圖里,地理位置則指向了幾公里外的某大廈。為什么會出現(xiàn)這個問題呢?其實(shí)是不同地圖產(chǎn)品的地理坐標(biāo)系導(dǎo)致的。

下面說一下常見的地理坐標(biāo)系:地球坐標(biāo)系是國際通用坐標(biāo)系,比較適合國際地圖可視化。不過在我國范圍內(nèi),一般不會直接使用它,而是使用由國家測繪局在其基礎(chǔ)上加密的火星坐標(biāo)系。另外還有公司會在火星坐標(biāo)系上進(jìn)行二次加密,比如百度坐標(biāo)系、搜狗坐標(biāo)系等。我網(wǎng)上找到了一張圖:

上圖可以作為參考,具體原因我們就不細(xì)究了。重點(diǎn)是什么,如何利用python轉(zhuǎn)換坐標(biāo)系?例如在本文中,我們是在高德地圖中獲得的坐標(biāo)點(diǎn)集合,那么也就是使用的是GCJ-02坐標(biāo)系。而下文可視化中會調(diào)用百度地圖的接口,也就是需要在BD-09坐標(biāo)系中進(jìn)行可視化。幸好我在網(wǎng)上搜到了GCJ-02轉(zhuǎn)BD-09的公式,并用python實(shí)現(xiàn)此公式:

#需要的兩個常量先設(shè)置好
pi = 3.1415926535897932384 #π
r_pi = pi * 3000.0/180.0
 
def gcj02_bd09(lon_gcj02,lat_gcj02):
    b = math.sqrt(lon_gcj02 * lon_gcj02 + lat_gcj02 * lat_gcj02) + 0.00002 * math.sin(lat_gcj02 * r_pi)
    o = math.atan2(lat_gcj02 , lon_gcj02) + 0.000003 * math.cos(lon_gcj02 * r_pi)
    lon_bd09 = b * math.cos(o) + 0.0065
    lat_bd09 = b * math.sin(o) + 0.006
    return [lon_bd09,lat_bd09]

這樣我們就寫好了一個python將GCJ-02坐標(biāo)系轉(zhuǎn)成BD-09的函數(shù),調(diào)用這個函數(shù),就可以將高德地圖獲取的坐標(biāo)點(diǎn)集合統(tǒng)統(tǒng)轉(zhuǎn)換成百度坐標(biāo)系。

result = []
for station in stations:
    result.append([gcj02_bd09(*point) for point in station])

以其中一個坐標(biāo)點(diǎn)為例:

到此,我們的前期數(shù)據(jù)工作終于準(zhǔn)備齊了。當(dāng)然,如果我們一開始獲取的數(shù)據(jù)就是BD_09(百度地圖)坐標(biāo)系的,轉(zhuǎn)換這步就可以直接省略嘍~

地理可視化

接下來就要利用pyecharts中的BMap來可視化了,不過需要先獲取百度開放平臺的密鑰。百度地圖開放平臺

復(fù)制上圖中的訪問應(yīng)用(AK),保存好,這在后續(xù)的可視化中將要用到。我們使用pyecharts中的BMap,先導(dǎo)入模塊

from pyecharts.charts import BMap 
from pyecharts import options as opts 
from pyecharts.globals import BMapType, ChartType 

在導(dǎo)入數(shù)據(jù)(也就是上文轉(zhuǎn)換后的經(jīng)緯度數(shù)據(jù)result)后,可以調(diào)整一下參數(shù)以及增添一些控件。關(guān)鍵參數(shù)都做了注釋,方便大家查看(其中百度appkey記得替換成自己的)

map_b = (
    BMap(init_opts = opts.InitOpts(width = "800px", height = "600px"))
    .add_schema(
        baidu_ak = '****************', #百度地圖開發(fā)應(yīng)用appkey
        center = [116.403963, 39.915119], #當(dāng)前視角的中心點(diǎn)
        zoom = 10, #當(dāng)前視角的縮放比例
        is_roam = True, #開啟鼠標(biāo)縮放和平移漫游
    )
    .add(
        series_name = "",
        type_ = ChartType.LINES, #設(shè)置Geo圖類型
        data_pair = result, #數(shù)據(jù)項(xiàng)
        is_polyline = True, #是否是多段線,在畫lines圖情況下#
        linestyle_opts = opts.LineStyleOpts(color = "blue", opacity = 0.5, width = 1), # 線樣式配置項(xiàng)
    )
    .add_control_panel(
        maptype_control_opts = opts.BMapTypeControlOpts(type_ = BMapType.MAPTYPE_CONTROL_DROPDOWN), #切換地圖類型的控件
        scale_control_opts = opts.BMapScaleControlOpts(), #比例尺控件
        overview_map_opts = opts.BMapOverviewMapControlOpts(is_open = True), #添加縮略地圖
        navigation_control_opts = opts.BMapNavigationControlOpts() #地圖的平移縮放控件
    )
)
 
map_b.render(path = 'subway_beijing.html')

注:因?yàn)槭潜本┑貓D,所以設(shè)置天安門的經(jīng)緯度[116.403963, 39.915119]為視角中心。

讓我們看一下可視化的結(jié)果吧:

上圖中的四個角都有控件,這是我們在代碼中添加了控件參數(shù),它們分別為:地圖的平移縮放控件、切換地圖類型的控件、縮略地圖、以及比例尺控件。是不是還闊以

其他效果展示

上文已經(jīng)基本實(shí)現(xiàn)了用python制作地鐵線路動態(tài)圖。不過大家都用同一種顏色背景制作動態(tài)圖的話,就顯得就太單調(diào)了。正好我們還要繪制其他三個城市的地鐵圖,那就調(diào)整一些參數(shù),看看能獲得什么效果吧?

上海-變色

上海的數(shù)據(jù)接口是:

http://map.amap.com/service/subway?_1615467204533&srhdata=3100_drw_shanghai.json

上海市的地鐵圖我們改一下line的顏色,可在參數(shù)linestyle_opts中修改color。下圖中的線條顏色是lilac——淺紫色

廣州-衛(wèi)星圖

廣州的數(shù)據(jù)接口是:

http://map.amap.com/service/subway?_1615494419554&srhdata=4401_drw_guangzhou.json

其實(shí)我們還可以調(diào)整可視化背景為衛(wèi)星圖。不過這一操作并不需要額外寫代碼,因?yàn)閯倓偵衔奶岬轿以谡{(diào)整參數(shù)時添加了4個控件,其中右上角的就可以直接切換地圖類型,具體操作見下圖。

深圳-個性化配色

深圳的數(shù)據(jù)接口是:

http://map.amap.com/service/subway?_1615494473615&srhdata=4403_drw_shenzhen.json

如果不滿意百度地圖設(shè)置好的地圖背景,我們還可以個性化設(shè)置mapStyle,調(diào)整自己的配色styleJson。

小結(jié)

今天帶大家學(xué)習(xí)了如何利用python繪制一線城市的地鐵線路動圖。主要分為四個部分:坐標(biāo)點(diǎn)的采集、坐標(biāo)系的轉(zhuǎn)換、利用pyecharts地理可視化、其他效果展示。

?

到此這篇關(guān)于Python 繪制北上廣深的地鐵路線動態(tài)圖的文章就介紹到這了,更多相關(guān)Python 繪制動態(tài)圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python中的hashlib模塊使用實(shí)例

    python中的hashlib模塊使用實(shí)例

    這篇文章主要介紹了python中的hashlib模塊使用實(shí)例,hashlib是一個提供字符串加密功能的模塊,包含MD5和SHA的算法,MD5和SHA是摘要算法,文中以實(shí)例代碼講解hashlib模塊的基本用法,需要的朋友可以參考下
    2023-08-08
  • Pandas提取含有指定字符串的行(完全匹配,部分匹配)

    Pandas提取含有指定字符串的行(完全匹配,部分匹配)

    本文主要介紹了Pandas提取含有指定字符串的行(完全匹配,部分匹配),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Python實(shí)現(xiàn)自動清理電腦垃圾文件詳解

    Python實(shí)現(xiàn)自動清理電腦垃圾文件詳解

    經(jīng)常存在在我們的電腦中的垃圾文件主要是指系統(tǒng)在運(yùn)行過程中產(chǎn)生的tmp臨時文件、日志文件、臨時備份文件等。本文將利用Python實(shí)現(xiàn)自動清理這些垃圾文件,需要的可以參考一下
    2022-03-03
  • Python中range()與np.arange()的具體使用

    Python中range()與np.arange()的具體使用

    本文主要介紹了Python中range()與np.arange()的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Python中實(shí)現(xiàn)定時任務(wù)詳解

    Python中實(shí)現(xiàn)定時任務(wù)詳解

    這篇文章主要介紹了Python中實(shí)現(xiàn)定時任務(wù)詳解的相關(guān)資料,需要的朋友可以參考下
    2023-07-07
  • opencv鎖定鼠標(biāo)定位的實(shí)現(xiàn)

    opencv鎖定鼠標(biāo)定位的實(shí)現(xiàn)

    本文主要介紹了opencv鎖定鼠標(biāo)定位的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • python讀寫csv文件的方法

    python讀寫csv文件的方法

    這篇文章主要介紹了python讀寫csv文件的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-08-08
  • Python內(nèi)置的HTTP協(xié)議服務(wù)器SimpleHTTPServer使用指南

    Python內(nèi)置的HTTP協(xié)議服務(wù)器SimpleHTTPServer使用指南

    這篇文章主要介紹了Python內(nèi)置的HTTP協(xié)議服務(wù)器SimpleHTTPServer使用指南,SimpleHTTPServer本身的功能十分簡單,文中介紹了需要的朋友可以參考下
    2016-03-03
  • python中os模塊和sys模塊的使用詳解

    python中os模塊和sys模塊的使用詳解

    本文主要介紹了python中os模塊和sys模塊的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Python連接字符串過程詳解

    Python連接字符串過程詳解

    這篇文章主要介紹了python連接字符串過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01

最新評論

阜南县| 临清市| 福贡县| 洛隆县| 镶黄旗| 营口市| 朝阳市| 陇川县| 沅江市| 连云港市| 儋州市| 宜兴市| 唐海县| 苍溪县| 新巴尔虎右旗| 贵州省| 东港市| 定安县| 永年县| 合肥市| 武平县| 广灵县| 闻喜县| 饶河县| 贺州市| 高清| 曲麻莱县| 开阳县| 聂拉木县| 科技| 万州区| 洛川县| 龙川县| 那曲县| 玉山县| 宜章县| 石狮市| 潮州市| 和顺县| 麻栗坡县| 额敏县|