亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python怎么繪制中國地圖

發布時間:2021-11-26 11:57:48 來源:億速云 閱讀:800 作者:iii 欄目:大數據

這篇文章主要講解了“python怎么繪制中國地圖”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“python怎么繪制中國地圖”吧!

前言

氣象、海洋、地球科學相關的分析必然少不了地圖的可視化。
Python中我常用的繪制地圖和空間信息分析的庫是Cartopy。
Cartopy有一個非常嚴重的問題,那就是自帶的中國國界數據有問題,這也是很多國外開源庫的普遍問題。
在做中國區域的分析時,由于九段線的位置很偏南,因此最標準的做法是同時繪制南海區域的子圖。
在做一些站點展示的時候,如果只單獨畫上幾個站點總覺得很丑,可以加上一些地形背景。

綜上,今天想要用一個小例子解決這3個問題:

  1. 正確的中國國界線及九段線繪制
  2. 南海小地圖繪制
  3. 全球地形圖添加
 

準備工作

  1. 獲取正確的中國矢量文件:公眾號后臺留言“中國行政區劃”    
    (這個矢量文件來自資源環境平臺,并和權威機構的標準地圖做了比對,吻合一致。)
  2. 獲取全球地形圖像:公眾號后臺留言“全球地形”    
    (提供的是全球50m分辨率的tif圖,如果對分辨率要求不高可以直接使用stock_img())
 

代碼

# -*- coding: utf-8 -*-
import numpy as np
import pandas as pd
import cartopy
import cartopy.crs as ccrs
import cartopy.feature as cfeat
from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER
from cartopy.io.shapereader import Reader, natural_earth
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker
from matplotlib.image import imread


def create_map():
    shp_path = './cn_shp/Province_9/'
    # --創建畫圖空間
    proj = ccrs.PlateCarree()  # 創建坐標系
    fig = plt.figure(figsize=(6, 8), dpi=400)  # 創建頁面
    ax = fig.subplots(1, 1, subplot_kw={'projection': proj})  

    # --設置地圖屬性
    provinces = cfeat.ShapelyFeature(
        Reader(shp_path + 'Province_9.shp').geometries(),
        proj, edgecolor='k',
        facecolor='none'
    )
    # 加載省界線
    ax.add_feature(provinces, linewidth=0.6, zorder=2)
    # 加載分辨率為50的海岸線
    ax.add_feature(cfeat.COASTLINE.with_scale('50m'), linewidth=0.6, zorder=10)
    # 加載分辨率為50的河流~
    ax.add_feature(cfeat.RIVERS.with_scale('50m'), zorder=10)
     # 加載分辨率為50的湖泊
    ax.add_feature(cfeat.LAKES.with_scale('50m'), zorder=10)
    ax.set_extent([105, 133, 15, 45])
    # ax.stock_img()
    ax.imshow(
        imread('./NE1_50M_SR_W.tif'),
        origin='upper',
        transform=proj,
        extent=[-180, 180, -90, 90]
    )
    # --設置網格點屬性
    gl = ax.gridlines(
        crs=ccrs.PlateCarree(),
        draw_labels=True,
        linewidth=1.2,
        color='k',
        alpha=0.5,
        linestyle='--'
    )
    gl.xlabels_top = False  # 關閉頂端的經緯度標簽
    gl.ylabels_right = False  # 關閉右側的經緯度標簽
    gl.xformatter = LONGITUDE_FORMATTER  # x軸設為經度的格式
    gl.yformatter = LATITUDE_FORMATTER  # y軸設為緯度的格式
    gl.xlocator = mticker.FixedLocator(np.arange(95, 145 + 5, 5))
    gl.ylocator = mticker.FixedLocator(np.arange(-5, 45 + 5, 5))

    # --設置小地圖
    left, bottom, width, height = 0.67, 0.15, 0.23, 0.27
    ax2 = fig.add_axes(
        [left, bottom, width, height], 
        projection=proj
    )
    ax2.add_feature(provinces, linewidth=0.6, zorder=2)
    ax2.add_feature(cfeat.COASTLINE.with_scale('50m'), linewidth=0.6, zorder=10)
    ax2.add_feature(cfeat.RIVERS.with_scale('50m'), zorder=10)
    ax2.add_feature(cfeat.LAKES.with_scale('50m'), zorder=10)
    ax2.set_extent([105, 125, 0, 25])
    # ax2.stock_img()
    ax2.imshow(
        imread('./NE1_50M_SR_W.tif'),
        origin='upper',
        transform=proj,
        extent=[-180, 180, -90, 90]
    )
    return ax

def main():
    ax = create_map()
    title = f'distribution of station around China'
    ax.set_title(title, fontsize=18)

    df = pd.read_csv('buyo_position.csv')
    df['lon'] = df['lon'].astype(np.float64)
    df['lat'] = df['lat'].astype(np.float64)
    ax.scatter(
        df['lon'].values,
        df['lat'].values,
        marker='o',
        s=10 ,
        color ="blue"
    )
    for i, j, k in list(zip(df['lon'].values, df['lat'].values, df['name'].values)):
        ax.text(i - 0.8, j + 0.2, k, fontsize=6)
    plt.savefig('station_distribute_map.png')

if __name__ == '__main__':
    main()
    

感謝各位的閱讀,以上就是“python怎么繪制中國地圖”的內容了,經過本文的學習后,相信大家對python怎么繪制中國地圖這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新田县| 道真| 青海省| 阿城市| 沁源县| 静海县| 全州县| 周宁县| 丹寨县| 连南| 炎陵县| 贵德县| 安国市| 河源市| 临夏县| 霍林郭勒市| 比如县| 兴海县| 工布江达县| 敖汉旗| 赤峰市| 宣化县| 泽州县| 石林| 搜索| 洱源县| 洪雅县| 武城县| 兴化市| 手机| 巴青县| 永安市| 鞍山市| 雅安市| 闽侯县| 玉屏| 涟水县| 木里| 邳州市| 安塞县| 印江|