<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          geopandas輕松繪制交互式在線地圖

          共 5163字,需瀏覽 11分鐘

           ·

          2021-11-26 21:11


          導(dǎo)讀:今天的文章我就將為大家詳細介紹新版geopandas中,利用explore()制作在線地圖可視化的方法。


          作者:費弗里
          來源:Python大數(shù)據(jù)分析(ID:pydatas)

          explore()方法類似我們熟悉的plot()方法,是GeoSeriesGeoDataFrame對象皆有的方法,下面我們遞進式地介紹:

          01 GeoSeries.explore()方法的使用

          GeoSeries.explore()的主要參數(shù)如下:

          • color:str或數(shù)組,用于設(shè)置所繪制矢量的顏色,當傳入數(shù)組時可一一對應(yīng)按順序設(shè)置每個矢量的顏色

          • m:類似plot()方法中的ax參數(shù),用于傳入已存在的地圖對象,從而實現(xiàn)多圖層疊加

          • tiles:str型,用于設(shè)置底圖來源,默認為'OpenStreetMap',其他可用的有'Stamen Terrain''Stamen Toner''Stamen Watercolor''CartoDB positron''CartoDB dark_matter',亦可傳入格式類似http://{s}.yourtiles.com/{z}/{x}/{y}.png的自定義地圖服務(wù),注意,當自定義tiles時,必須設(shè)置attr參數(shù)

          • attr:str型,用于設(shè)置底圖對應(yīng)的attribution信息

          • highlight:bool型,用于設(shè)置是否在鼠標懸浮于矢量上時展示高亮效果,默認為True

          • width:int或str型,int型時用于設(shè)置地圖像素寬度,字符型時用于設(shè)置地圖相對于容器的百分比寬度,此參數(shù)在參數(shù)m設(shè)置時會失效

          • height:int或str型,int型時用于設(shè)置地圖像素高度,字符型時用于設(shè)置地圖相對于容器的百分比高度,此參數(shù)在參數(shù)m設(shè)置時會失效

          • control_scale:bool型,用于設(shè)置是否展示比例尺,默認為True

          • zoom_control:bool型,用于設(shè)置是否展示縮放組件,默認為True

          • marker_type:str型,用于設(shè)置點要素的樣式類型,可選的有'marker''circle''circle_marker'

          • marker_kwds:dict型,用于設(shè)置點要素的更多細節(jié)參數(shù),常用的有:
          • radius:float型,用于設(shè)置點要素的半徑,當marker_type='circle'時單位為米,當marker_type='circle_marker'時單位為像素
          • icon:folium.map.Icon型,當marker_type='marker'時,用于自定義點圖標,詳細用法參考:
            https://python-visualization.github.io/folium/modules.html#folium.map.Icon
          • draggable:bool型,用于設(shè)置點圖標是否可自由拖拽,默認為False

          • style_kwds:dict型,用于設(shè)置矢量的樣式細節(jié)參數(shù),常用的參數(shù)有:
          • stroke:bool型,設(shè)置是否繪制矢量輪廓,默認為True
          • color:str型,用于設(shè)置輪廓顏色
          • weight:int型,用于設(shè)置輪廓像素寬度
          • opacity:float型,取值0~1之間,用于設(shè)置輪廓透明度,默認為1.0
          • fill:bool型,用于設(shè)置是否繪制矢量填充,默認為True
          • fillColor:str型,用于設(shè)置矢量填充色
          • fillOpacity:float型,用于設(shè)置填充色透明度,默認為0.5

          • highlight_kwds:dict型,參數(shù)結(jié)構(gòu)同style_kwds,用于設(shè)置鼠標懸浮高亮狀態(tài)下的各樣式參數(shù)

          • min_zoom、max_zoom、zoom_start:int型,分別用于設(shè)置地圖的最小、最大及初始化縮放層級,默認值分別為0、18、10

          • location:元組或列表,用于設(shè)置地圖初始化時的中心坐標,格式為[緯度, 經(jīng)度]

          get到這些參數(shù)之后,我們就可以非常快捷地制作在線可視化作品,以環(huán)渝地區(qū)為例:


          m?=?shp.geometry.explore(
          ????color='#40a9ff',
          ????tiles='https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}',
          ????attr='?',
          ????width='80%',
          ????tooltip=False,?#?關(guān)閉鼠標懸浮時的空白tooltip
          ????style_kwds={
          ????????'color':?'white',
          ????????'fillOpacity':?0.4
          ????},
          ????highlight_kwds={
          ????????'fillColor':?'white',
          ????????'fillOpacity':?0.6
          ????}
          )
          m


          疊加多個圖層:

          import?folium

          m?=?shp.geometry.explore(
          ????color='#40a9ff',
          ????tiles='https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}',
          ????attr='?',
          ????width='80%',
          ????tooltip=False,?#?關(guān)閉鼠標懸浮時的空白tooltip
          ????style_kwds={
          ????????'color':?'white',
          ????????'fillOpacity':?0.4
          ????},
          ????highlight_kwds={
          ????????'fillColor':?'white',
          ????????'fillOpacity':?0.6
          ????}
          )

          shp.representative_point().explore(
          ????color='red',
          ????tooltip=False,?#?關(guān)閉鼠標懸浮時的空白tooltip
          ????m=m,?#?疊加已有地圖
          ????marker_type='marker',
          ????marker_kwds={
          ????????'icon':?folium.map.Icon(icon='beer',?prefix='fa')
          ????}
          )



          02 GeoDataFrame.explore()方法的使用

          GeoSeries.explore()相比,GeoDataFrame除了矢量字段之外,還可以快捷地利用數(shù)據(jù)框中其他字段的信息,來輔助視覺元素的映射,因此在GeoSeries.explore()的參數(shù)體系基礎(chǔ)上,GeoDataFrame.explore()新增了如下參數(shù),與plot()方法非常相似:

          • column:str型或數(shù)組,用于指定繪圖映射基于的字段名,亦或是額外傳入的與矢量一一對應(yīng)的數(shù)組

          • cmap:str型或matplotlib中的colormap對象,用于設(shè)置色彩映射方案

          • tooltip:bool、str或list型,用于自定義鼠標懸浮時提示框內(nèi)顯示的字段信息,True表示展示全部字段,F(xiàn)alse表示關(guān)閉提示框,str型時可指定單個要展示的字段名,list型時指定多個要展示的字段

          • popup:用于設(shè)置鼠標點擊觸發(fā)展示的信息框內(nèi)容,格式同tooltip

          • categorical:bool型,用于設(shè)置是否開啟類別映射模式,默認為False

          • legend:bool型,設(shè)置是否顯示圖例,默認為True

          • scheme:字符型,同plot()中的同名參數(shù),用于設(shè)定分層設(shè)色規(guī)則,參考我的過往文章:https://www.cnblogs.com/feffery/p/12381322.html

          • k:int型,用于設(shè)置分層設(shè)色分段數(shù)量,默認為5

          • vmin:float型,用于手動設(shè)置色彩映射最小值

          • vmax:float型,用于手動設(shè)置色彩映射最大值

          • categories:list型,用于傳入順序類別列表

          • tooltip_kwds:dict型,用于自定義設(shè)置tooltip樣式,詳細參考:
            https://python-visualization.github.io/folium/modules.html#folium.features.GeoJsonTooltip

          • popup_kwds:dict型,用于自定義設(shè)置popup樣式,詳細參考:
            https://python-visualization.github.io/folium/modules.html#folium.features.GeoJsonPopup

          • legend_kwds:dict型,用于自定義設(shè)置圖例,主要的參數(shù)有:
          • caption:str型,自定義圖例標題,默認為映射字段名
          • colorbar:bool型,用于設(shè)置是否開啟colorbar模式,設(shè)置為False時會開啟分段模式
          • fmt:str型,用于自定義圖例項數(shù)值格式,默認為'{:.2f}'
          • labels:list型,自定義圖例項標簽文字,來覆蓋原始自動生成內(nèi)容
          • max_labels:int型,設(shè)置colorbar圖例中刻度數(shù)量
          • scale:bool型,設(shè)置是否以真實尺度來渲染每段分層設(shè)色區(qū)間,False時每段色階長度會強制相同

          下面我們來基于這些實用的參數(shù),繪制幾個示例:

          m?=?shp.explore(
          ????column='area',
          ????cmap='Blues',
          ????tiles='https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}',
          ????attr='?',
          ????scheme='NaturalBreaks',
          ????k=3,
          ????vmin=0,
          ????legend_kwds={
          ????????'caption':?'面積(平方千米)',
          ????????'scale':?False,
          ????????'colorbar':?False
          ????},
          ????style_kwds={
          ????????'color':?'white',
          ????????'weight':?1,
          ????????'fillOpacity':?0.8
          ????}
          )
          m


          m?=?shp.explore(
          ????column='area',
          ????cmap='Reds',
          ????tiles='https://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/tile/{z}/{y}/{x}',
          ????attr='?',
          ????scheme='NaturalBreaks',
          ????k=3,
          ????vmin=0,
          ????legend_kwds={
          ????????'caption':?'面積(平方千米)',
          ????????'scale':?False
          ????},
          ????style_kwds={
          ????????'color':?'white',
          ????????'weight':?1,
          ????????'fillOpacity':?0.7
          ????}
          )
          m



          03 保存在線底圖

          如果我們想要持久化保存繪制好的在線地圖作品,可以利用地圖對象的save()方法,將其保存為離線html文件:

          m.save('demo.html')

          瀏覽器中查看已保存的html文件:


          本文示例代碼及文件已上傳至我的Github倉庫
          https://github.com/CNFeffery/DataScienceStudyNotes


          延伸閱讀??

          延伸閱讀《深入淺出Pandas

          干貨直達??



          更多精彩??

          在公眾號對話框輸入以下關(guān)鍵詞
          查看更多優(yōu)質(zhì)內(nèi)容!

          讀書?|?書單?|?干貨?|?講明白?|?神操作?|?手把手
          大數(shù)據(jù)?|?云計算?|?數(shù)據(jù)庫?|?Python?|?爬蟲?|?可視化
          AI?|?人工智能?|?機器學(xué)習(xí)?|?深度學(xué)習(xí)?|?NLP
          5G?|?中臺?|?用戶畫像?|?數(shù)學(xué)?|?算法?|?數(shù)字孿生

          據(jù)統(tǒng)計,99%的大咖都關(guān)注了這個公眾號
          ??
          瀏覽 147
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  丰满大乳露双乳呻吟 | 天天色小说 | 人妻夜夜爽天天爽4区 | 亚洲精品乱码久久久久久蜜桃91 | 亚洲成人网站视频 |