1. Python + folium 制作美美的地圖~

        共 8274字,需瀏覽 17分鐘

         ·

        2022-01-08 16:40


        ??????關(guān)注我,和老表一起學(xué)Python、云服務(wù)器


        今天跟大家介紹一下何使用folium更換地圖底圖樣式

        1. 準(zhǔn)備工作


        有朋友可能沒用過(guò)folium,它其實(shí)就是python的一個(gè)專業(yè)繪制地圖的第三方庫(kù),所以在使用之前需要先安裝它。

        pip?install?folium

        在安裝完成之后,我們可以在jupyterlab進(jìn)行演示如下:

        import?folium

        m?=?folium.Map()
        m
        默認(rèn)

        對(duì)于上面的輸出,其實(shí)是一個(gè)可交互的地圖,支持放大縮寫拖拽等等。

        如果你想將輸出存在本地,可以這樣來(lái):

        m.save('map.html')

        可以看到本地就存了這個(gè)一個(gè)文件,瀏覽器打開就可以進(jìn)行交互式操作了。

        map文件

        以上就是一個(gè)平平淡淡的過(guò)程......


        2. 關(guān)于folium.Map()


        在上一部分我們可以看到這個(gè)map玩意直接就是一個(gè)地圖啦,這里我們就介紹一下它常用的幾個(gè)參數(shù)。

        folium.Map(
        ????location=None,
        ????width='100%',
        ????height='100%',
        ????left='0%',
        ????top='0%',
        ????position='relative',
        ????tiles='OpenStreetMap',
        ????attr=None,
        ????min_zoom=0,
        ????max_zoom=18,
        ????zoom_start=10,
        ????min_lat=-90,
        ????max_lat=90,
        ????min_lon=-180,
        ????max_lon=180,
        ????max_bounds=False,
        ????crs='EPSG3857',
        ????control_scale=False,
        ????prefer_canvas=False,
        ????no_touch=False,
        ????disable_3d=False,
        ????png_enabled=False,
        ????zoom_control=True,
        ????**kwargs,
        )

        參數(shù)可真多?。?!

        沒有參數(shù)的folium.Map()將得到一張世界地圖。

        • location:地圖中心,[40.002694, 116.322373]是清華大學(xué)校區(qū);
        • zoom_start:比例尺,默認(rèn)為10級(jí),大約是一個(gè)城市的范圍;

        其他常用參數(shù)包括:

        • widthheight:地圖的長(zhǎng)寬,如果是int則表示像素值,如果是str則表示百分比;
        • max_zoom:地圖可以手動(dòng)調(diào)節(jié)的最大比例,默認(rèn)為18級(jí);
        • control_scale:是否在地圖上添加比例尺,默認(rèn)為False;
        • no_touch:是否禁止手動(dòng)操作,默認(rèn)為False;
        • tiles:地圖樣式,默認(rèn)為OpenStreetMap
        • attr:如果設(shè)置非內(nèi)建地圖樣式,則需要傳入這個(gè)值,可以理解為你選擇的地圖樣式名稱

        以上是常用的一些參數(shù),而最常用的莫過(guò)于 locationzoom_starttiles等。

        內(nèi)建地圖樣式還有一下幾種:

        -?"OpenStreetMap"
        -?"Mapbox?Bright"?(Limited?levels?of?zoom?for?free?tiles)
        -?"Mapbox?Control?Room"?(Limited?levels?of?zoom?for?free?tiles)
        -?"Stamen"?(Terrain,?Toner,?and?Watercolor)
        -?"Cloudmade"?(Must?pass?API?key)
        -?"Mapbox"?(Must?pass?API?key)
        -?"CartoDB"?(positron?and?dark_matter)

        我們簡(jiǎn)單試下locationzoo_start參數(shù):

        import?folium

        m?=?folium.Map([40.002694,?116.322373],
        ???????????????zoom_start=15,
        ???????????????control_scale=True
        ??????????????)
        m

        可以看到清華大學(xué)校區(qū)

        清華大學(xué)校區(qū)

        以上對(duì)Map的參數(shù)進(jìn)行了簡(jiǎn)單的介紹,接下來(lái),我們就來(lái)看看地圖底圖樣式的選取情況吧~


        3. 內(nèi)建地圖底圖樣式


        我們看到folium其實(shí)有好幾種內(nèi)建地圖底圖樣式,其中部分需要去申請(qǐng)key,由于我這邊沒有申請(qǐng)成功就不做演示了。

        • "OpenStreetMap"
        • "Mapbox Bright" (Limited levels of zoom for free tiles)
        • "Mapbox Control Room" (Limited levels of zoom for free tiles)
        • "Stamen" (Terrain, Toner, and Watercolor)
        • "Cloudmade" (Must pass API key)
        • "Mapbox" (Must pass API key)
        • "CartoDB" (positron and dark_matter)

        地勢(shì)地形底圖

        m?=?folium.Map([40.002694,?116.322373],
        ???????????????tiles='Stamen?Terrain',
        ???????????????zoom_start=15,
        ???????????????control_scale=True
        ??????????????)
        m

        黑白無(wú)標(biāo)記底圖

        m?=?folium.Map([40.002694,?116.322373],
        ???????????????tiles='Stamen?Toner',
        ???????????????zoom_start=15,
        ???????????????control_scale=True
        ??????????????)
        m

        水墨畫底圖

        m?=?folium.Map([40.002694,?116.322373],
        ???????????????tiles='Stamen?Watercolor',
        ???????????????zoom_start=15,
        ???????????????control_scale=True
        ??????????????)
        m

        以上就是內(nèi)建地圖底圖樣式的一些展示,部分需要key的大家可以去這個(gè)網(wǎng)站申請(qǐng):

        http://openwhatevermap.xyz/(可惜我上不去)

        另外,在這里也可以找到一些地圖底圖

        http://leaflet-extras.github.io/leaflet-providers/preview/

        我后續(xù)也會(huì)去研究這些地圖底圖樣式,試著分享更多有趣的地圖分享給大家。

        當(dāng)然了,國(guó)內(nèi)咱們用的較多的地圖是高德、百度和騰訊地圖等,接下來(lái)我們就來(lái)玩玩!


        4. 多種第三方地圖底圖樣式


        這里我將演示高德地圖、智圖GeoQ和騰訊地圖等

        4.1. 高德地圖

        高德地圖的 中英文地圖、衛(wèi)星影像圖、街道圖與常規(guī)圖

        中英文地圖

        folium.Map([40.002694,?116.322373],
        ???????????tiles='https://webrd02.is.autonavi.com/appmaptile?lang=zh_en&size=1&scale=1&style=8&x={x}&y={y}&z={z}',
        ???????????attr='高德-中英文對(duì)照',
        ???????????zoom_start=15,
        ??????????)

        純英文地圖

        folium.Map([40.002694,?116.322373],
        ???????????tiles='https://webrd02.is.autonavi.com/appmaptile?lang=en&size=1&scale=1&style=8&x={x}&y={y}&z={z}',
        ???????????attr='高德-純英文對(duì)照',
        ???????????zoom_start=15,
        ??????????)

        衛(wèi)星影像圖

        tiles?=?'https://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}'
        folium.Map([40.002694,?116.322373],
        ???????????tiles=?tiles,
        ???????????attr='高德-衛(wèi)星影像圖',
        ???????????zoom_start=15,
        ??????????)

        街道圖
        folium.Map([40.002694,?116.322373],
        ???????????tiles=?'https://wprd01.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scl=1&style=8<ype=11',
        ???????????attr='高德-街道路網(wǎng)圖',
        ???????????zoom_start=10,
        ??????????)

        常規(guī)圖

        folium.Map([40.002694,?116.322373],
        ???????????tiles=?'https://wprd01.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scl=1&style=7',
        ???????????attr='高德-常規(guī)圖',
        ???????????zoom_start=15,
        ??????????)

        4.2. 智圖GeoQ

        反正我覺得這個(gè)蠻好的,用起來(lái)簡(jiǎn)單

        多種風(fēng)格地圖,即拿即用

        彩色版

        m?=?folium.Map([40.002694,?116.322373],
        ???????????????tiles='http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineCommunity/MapServer/tile/{z}/{y}/{x}',
        ???????????????attr='彩色版',
        ???????????????zoom_start=15,
        ??????????????)
        m

        暖色版

        m?=?folium.Map([40.002694,?116.322373],
        ???????????????tiles='http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetWarm/MapServer/tile/{z}/{y}/{x}',
        ???????????????attr='暖色版',
        ???????????????zoom_start=15,
        ??????????????)
        m

        灰色版

        m?=?folium.Map([40.002694,?116.322373],
        ???????????????tiles='http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetGray/MapServer/tile/{z}/{y}/{x}',
        ???????????????attr='灰色版',
        ???????????????zoom_start=15,
        ??????????????)
        m

        藍(lán)黑版

        m?=?folium.Map([40.002694,?116.322373],
        ???????????????tiles='http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer/tile/{z}/{y}/{x}',
        ???????????????attr='藍(lán)黑版',
        ???????????????zoom_start=15,
        ??????????????)
        m

        英文版

        m?=?folium.Map([40.002694,?116.322373],
        ???????????????tiles='http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineCommunityENG/MapServer/tile/{z}/{y}/{x}',
        ???????????????attr='英文版',
        ???????????????zoom_start=15,
        ??????????????)
        m

        中國(guó)行政區(qū)劃邊界

        m?=?folium.Map([40.002694,?116.322373],
        ???????????????tiles='http://thematic.geoq.cn/arcgis/rest/services/ThematicMaps/administrative_division_boundaryandlabel/MapServer/tile/{z}/{y}/{x}',
        ???????????????attr='中國(guó)行政區(qū)劃邊界',
        ??????????????)
        m

        水系專題

        m?=?folium.Map([40.002694,?116.322373],
        ???????????????tiles='http://thematic.geoq.cn/arcgis/rest/services/ThematicMaps/WorldHydroMap/MapServer/tile/{z}/{y}/{x}',
        ???????????????attr='水系專題',
        ??????????????)
        m

        街道網(wǎng)圖

        m?=?folium.Map([40.002694,?116.322373],
        ???????????????tiles='http://thematic.geoq.cn/arcgis/rest/services/StreetThematicMaps/Gray_OnlySymbol/MapServer/tile/{z}/{y}/{x}',
        ???????????????attr='街道網(wǎng)圖',
        ??????????????)
        m

        暖色街道網(wǎng)圖

        m?=?folium.Map([40.002694,?116.322373],
        ???????????????tiles='http://thematic.geoq.cn/arcgis/rest/services/StreetThematicMaps/Warm_OnlySymbol/MapServer/tile/{z}/{y}/{x}',
        ???????????????attr='暖色-街道網(wǎng)圖',
        ??????????????)
        m

        4.3. 騰訊地圖

        tiles?=??'https://rt0.map.gtimg.com/tile?z={z}&x={x}&y={-y}'
        folium.Map([39.904989,?116.405285],
        ???????????tiles=?tiles,
        ???????????attr='騰訊地圖'??????????
        ??????????)

        4.4. 天地圖

        https://www.tianditu.gov.cn/

        需要注冊(cè)一個(gè)key

        天地圖影像

        m?=?folium.Map([40.002694,?116.322373],
        ???????????????tiles='http://t7.tianditu.gov.cn/img_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=',
        ???????????????attr='天地圖-影像'
        ??????????????)
        m

        天地圖影像注記

        m?=?folium.Map([40.002694,?116.322373],
        ???????????????tiles='http://t7.tianditu.gov.cn/cia_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cia&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=',
        ???????????????attr='天地圖-影像標(biāo)注'
        ??????????????)
        m

        天地圖矢量

        m?=?folium.Map([40.002694,?116.322373],
        ???????????????tiles='http://t7.tianditu.gov.cn/vec_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=',
        ???????????????attr='天地圖-矢量',
        ???????????????zoom_start=10,
        ??????????????)
        m

        天地圖矢量注記

        m?=?folium.Map([40.002694,?116.322373],
        ???????????????tiles='http://t7.tianditu.gov.cn/cva_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cva&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=',
        ???????????????attr='天地圖-矢量注記'
        ??????????????)
        m

        天地圖地形

        m?=?folium.Map([40.002694,?116.322373],
        ???????????????tiles='http://t7.tianditu.gov.cn/ter_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=ter&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=',
        ???????????????attr='天地圖-地形',
        ???????????????zoom_start=3,
        ??????????????)
        m

        天地圖地形注記

        m?=?folium.Map([40.002694,?116.322373],
        ???????????????tiles='http://t7.tianditu.gov.cn/cta_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cta&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=',
        ???????????????attr='天地圖-地形標(biāo)記',
        ???????????????zoom_start=3,
        ??????????????)
        m

        百度地圖我這邊測(cè)試失敗了,暫時(shí)沒有找到合適的替換方案。


        5. 補(bǔ)充


        其實(shí),我們還可以找更多的地圖底圖瓦片URL來(lái)進(jìn)行替換,多樣化我們的地圖繪制。

        另外,大家在用經(jīng)緯度坐標(biāo)點(diǎn)進(jìn)行地圖繪制的時(shí)候,比如標(biāo)記點(diǎn)、繪制區(qū)域、熱力圖繪制等等,需要考慮經(jīng)緯度坐標(biāo)是哪個(gè)地圖系下面的,然后再用對(duì)應(yīng)地圖系的相關(guān)底圖進(jìn)行繪制才準(zhǔn)確!

        如何找到我:

        瀏覽 96
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 靠逼网站免费看 | 天天摸天天做天天爽水多 | 色吊操| 香蕉av福利| 亚洲无码福利导航 |