1. 程式人生 > 其它 >windows下python安裝basemap,畫世界地圖以及根據經緯度標點

windows下python安裝basemap,畫世界地圖以及根據經緯度標點

技術標籤:pythonbasemap畫圖python

環境安裝

1、確定自己的python環境安裝完畢且已配置好環境變數

2、安裝geos:pip install geos

3、直接使用pip3 install pyproj 可能會安裝錯誤,所以需要自己去下載.whl檔案網址https://www.lfd.uci.edu/~gohlke/pythonlibs/
(可以直接ctrl+f搜尋)
依次下載:
(1)pyproj-版本號-
(2)basemap-版本號-
(一定要特別注意自己的是什麼位計算機,什麼版本的python,我第一次就是下了3.9的python檔案,然後安裝出錯)

4、接下來就將下載好的.whl檔案放到python安裝目錄下的scripts資料夾下(兩個都是)

在這裡插入圖片描述

5、開啟cmd進入python安裝目錄的script資料夾下,然後開始安裝
先安裝pyproj:
pip3 install 檔名
再安裝basemap
pip3 install 檔名

6、看到說successfully就安裝成功了

使用basemap畫世界地圖

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt

fig = plt.figure(figsize=(12, 8), facecolor='cornsilk')#視窗大小
m = Basemap()  # 初始化 map

def drawMap
(): #繪製地圖 m.drawcoastlines() # 繪製海岸線 m.drawcountries() # 繪製國界線 # 填充陸地、胡泊、海洋的顏色 m.fillcontinents(color='darkolivegreen', # 陸地顏色 lake_color='aqua', # 湖泊顏色 ) m.drawmapboundary(fill_color='aqua') # 填充海洋 def set_lonlat(_m,
lon_list, lat_list, lon_labels, lat_labels, lonlat_size): """ 為Basemap例項畫帶tick標的經緯度註釋 自帶畫水平線和豎直線標註方式不帶刻度標 當然函式仍呼叫了自帶標註函式只是在此基礎上加了tick標 :param _m: Basemap例項 :param lon_list: 經度 詳見Basemap.drawmeridians函式介紹 :param lat_list: 緯度 同上 :param lon_labels: 標註位置 [左, 右, 上, 下] bool值 預設只標註左上待完善 可使用twinx和twiny實現 :param lat_labels: 同上 :param lonlat_size: 字型大小 :return: """ lon_dict = _m.drawmeridians(lon_list, labels=lon_labels, color='grey', fontsize=lonlat_size) lat_dict = _m.drawparallels(lat_list, labels=lat_labels, color='grey', fontsize=lonlat_size) lon_list = [] lat_list = [] for lon_key in lon_dict.keys(): try: lon_list.append(lon_dict[lon_key][1][0].get_position()[0]) except: continue for lat_key in lat_dict.keys(): try: lat_list.append(lat_dict[lat_key][1][0].get_position()[1]) except: continue ax = plt.gca() ax.xaxis.tick_top() ax.set_yticks(lat_list) ax.set_xticks(lon_list) ax.tick_params(labelcolor='none') drawMap() set_lonlat(m, range(0, 360, 30), range(-90, 90, 30), [0, 0, 1, 0], [1, 0, 0, 0], 12) #你也可以根據經緯度標註點 m.plot(54.23, 65.16, marker='o', color="r") plt.show()