在使用Basemap过程中发现它不能添加指南针,自带的添加经纬度只能画经纬度线和添加text,却不能像arcmap那样显示刻度。
由于Basemap基于matplotlib,可以手动实现这两个功能。
代码如下:
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
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='none', fontsize=lonlat_size)
lat_dict = _m.drawparallels(lat_list, labels=lat_labels, color='none', fontsize=lonlat_size)
在使用Basemap过程中发现它不能添加指南针,自带的添加经纬度只能画经纬度线和添加text,却不能像arcmap那样显示刻度。由于Basemap基于matplotlib,可以手动实现这两个功能。代码如下:from mpl_toolkits.basemap import Basemapimport matplotlib.pyplot as pltimport matplotlib.p...
两个函数:
Base
map
.drawparallels ##纬度
Base
map
.drawmeridians ##
经度
from mpl_toolkits.
base
map
import
Base
map
import
matplotlib
.pyplot as plt
import numpy as np
# setup Lambert Conformal
base
map
.
m =
Base
map
(width=12000000,height=9000000,projection='lcc',
resolution='c',lat_1=45.,lat_2=55,la
地图
投影是将球体或椭球体表面上位置的纬度和
经度
系统地转换为平面上的位置。 —()
简单地
使用
笛卡尔坐标在那个平面上画一个圆会导致一些……东西。
Thomas Lecoq 帮助一些成
Python
,以便正确计算的大圆距离。 我在这里复制了一些小的改动,以 Circles 的形式,一个小型的便利库。 它旨在与
matplotlib
的扩展一起
使用
,并且需要库。
使用
pip 安装它: pip install circles
Circles公开了一个方法circle() 。 将您的
Base
map
实例、您希望作为圆心的点的
经度
和纬度以及半径传递给它。 它将返回
地图
投影坐标中的 lon、lat 元组列表,可以将其传递给您的
Base
map
实例进行绘图,或
使用
转换为多边形,然后
使用
进行绘图。
一个简单的例子:
# the shaded circle has the wrong
使用
base
map
、cartopy等包在
python
中绘制
地图
添加
比例尺有投影限制,不太方便。
本博文
使用
最基础的
matplotlib
画线实现比例尺的
添加
,为大家提供一种可选思路。
提供了三种可选风格,根据自己需要进行选择。
原理为根据1°=111千米的原理计算需要绘制的长度,因此本代码主要适用于低纬度地区的wgs84投影的绘图。高纬度地区投影变形太大,
使用
这种方法会不准确。
大家也可以根据这种思路自己修改代码。
详细代码:
#-----------函数:
添加
比例尺------------
刚接触
Python
的
base
map
库时,被它所能产生的效果震撼了。
但是在深入的学习时发现网上很难找到系统的中文教程,仅能搜到一些博客文章里讲到的某些知识点,不成体系,就难以运用自如。
在网上看了看官方文档,又找到了这一
使用
手册《
Base
map
tutorial Documentation Release 0.1
Roger Veciana i Rovira》,原作者在这里深入浅出的系统讲解
第12章
base
map
地图
绘制
地图
绘制也是
数据可视化
的一部分,常用的
地图
绘制库为
base
map
工具包,其为
matplotlib
的子包。本章将讲解如何利用whl文件在
Python
3环境下安装
base
map
;学会
使用
base
map
绘制
地图
;学会缩放区域和绘制散点图;通过综合案例,巩固
base
map
的绘制
地图
方法和技巧。
本章主要涉及到的知识点有:
base
map
安装:学会
base
map
的安装方法。
base
map
使用
:学会利用
base
map
绘制简单
地图
。
缩放区域与绘图:学会通过定位
经纬度
缩放区域与
原网页:http://
matplotlib
.org/
base
map
/users/graticule.html
两个函数:
Base
map
.drawparallels ##纬度
Base
map
.drawmeridians ##
经度
from mpl_toolkits.
base
map
import
Base
map
import
matplotlib
.pyplot as plt
base
map
绘制投影影像参看前面的博客。
下面两句是分别是绘制经纬线,查看它俩的方法和属性,发现并没有控制标签角度的部分。
但是
base
map
是基于
matplotlib
库的,所以可以通过操作
matplotlib
来实现目的。
drawparallels = m.drawparallels(parallels,labels=[True,False,False,
常用
地图
底图的绘制一般由
Base
map
或者cartopy模块完成,由于
Base
map
库是基于
python
2开发的一个模块,目前已经不开发维护。故简单介绍cartopy模块的一些基础操作。
将地球三维球体投影到二维面上,减少失真。主要方式有默认投影(PlateCarree)、兰勃脱投影(Lambert)、墨卡托投影(Mercator)、极投影。
import cartopy.crs as ccrs
import
matplotlib
.pyplot as plt
#plt.axes是创建一个轴
# 创建
地图
对象
m =
Base
map
(llcrnrlon=-119, llcrnrlat=22, urcrnrlon=-64, urcrnrlat=49, projection='lcc', lat_1=33, lat_2=45, lon_0=-95)
# 绘制州界
m.drawstates()
# 绘制海岸线
m.drawcoastlines()
# 绘制国界线
m.drawcountries()
#
添加
比例尺
m.draw
map
scale(-119, 22, -119, 22, 500, barstyle='fancy')
#
显示
地图
plt.show()
这段代码
使用
Base
map
库创建了一个
地图
对象,设置了
地图
的投影方式和范围,然后绘制了美国的州界、海岸线和国界线,并
添加
了一个比例尺。最后调用 `plt.show()`
显示
地图
。