重大更新:从本版本开始, gma 逐步 支持空间绘图功能(依赖 matplotlib)!
获取 gma 1.1.2
1、百度网盘:
链接:https://pan.baidu.com/s/1eT2rJRiUDJuJkWeLJNL-cw?pwd=b07n
提取码:b07n
2、pypi 官网:
https://pypi.org/project/gma/
优化内容:
1、SPEI、SPI
修改 Periodicity 参数默认值 为 1。
2、Feature
为配合 空间绘图 功能,重构了此类,并增加 Intersection(相交)、Reproject(重投影)等方法。
新增 map 地图工具包
1、adjust 模块
自适应计算。主要用于地图框刻度位置抽取与计算。
2、appearance 模块
地图整饰要素。主要用于定义指北针和比例尺的样式。
3、feature 模块
要素绘制。主要用于绘制 gma.~.Feature。
4、layer 模块
图层绘制。主要用于绘制 gma.~.Layer。
5、layout 模块(主要模块)
地图布局(参考 ArcGIS 地图布局)。通过地图布局,实现地图绘制功能。主要的功能包括:
-
5.1 MapFrame:初始化地图框,用于绘图(类,5.2 及以下均为类方法)
-
5.2 AddLayer:添加图层(可以重复添加多个图层)
- 5.2.1 AddLabel:添加地图标注,为 layer 模块的功能
-
5.3 AddGridLines:添加经纬网
-
5.4 SetFrame:设置地图框(包括刻度和经纬度的标注等)
-
5.5 SetBackground:设置背景颜色
-
5.6 AddCompass:添加指北针
-
5.7 AddScaleBar:添加比例尺
-
5.8 AddLegend:添加图例
6、plot 模块(推荐导入模块)
整合其他绘图模块中的主要功能,导入此模块可直接引入主要的绘图功能。
6.1 MapFrame:来自 layout。
6.2 GetWorldDataSource:获取 gma 提供的低精度世界国家和政区界。
7、rcs 模块(主要模块)
空间参考的创建和变换,并内建了4个可配置的坐标系统。主要的功能包括:
-
7.1 SpatRef: 空间参考类。可将 EPSG,MICoordSys,PCI,PROJJSON,PrettyWkt,Proj4,USGS,Wkt,XML 或部分主要坐标系名称(例如 WGS84)等初始化为 gma 可识别的空间参考!
-
7.2 AlbersEqualArea:创建阿尔伯斯投影等面积投影。
-
7.3 CustomGCS:创建一个类 WGS84 坐标系(修改中央子午线)。
-
7.4 Mollweide:创建摩尔威德投影。
-
7.5 Robinson:创建伪圆柱投影。
8、tools 模块
经纬网和地图框范围等生成。
9、utils 模块
matplotlib 子图初始化和自定义参数配置。
简单示例 1
底图投影为 EPSG 代码表示:底图坐标系 EPSG: 2163 (NAD27 / US National Atlas Equal Area)
from gma.map import plot
WorldDS = plot.GetWorldDataSource()
WorldLayer = WorldDS.GetLayer(0)
## 初始化一个地图框,用于绘图
MapF = plot.MapFrame(BaseMapProj = 2163, Extent = None)
# 1.添加图层(可以重复添加多个图层)
MapL1 = MapF.AddLayer(WorldLayer, FaceColor = None, EdgeColor = 'gray', LineWidth = 0.1)
## 1.1 为此图层添加标注(标注属性表 'Name' 列)
MapL1.AddLabel(FieldName = 'Name', FontSize = 4)
# 2.添加经纬网
Grid = MapF.AddGridLines(LONRange = (-180, 180, 30), LATRange = (-90, 90, 15), LineWidth = 0.2)
# 3.设置地图框(包括刻度和经纬度的标注)
Frame = MapF.SetFrame(FrameWidth = 0.5, LabelFontSize = 7, TickLength = 0.008)
# 4.设置底图颜色
Background = MapF.SetBackground(Color = '#BEE8FF')
# *5.地图整饰要素
## 5.1 添加指北针
Compass = MapF.AddCompass(LOC = (0.06, 0.86), Width = 0.05, Color = 'black')
## 5.2 添加比例尺
ScaleBar = MapF.AddScaleBar(LOC = (0.02, 0), Width = 0.22, Color = 'black')
## 5.3 添加图例
Legend = MapF.AddLegend(LOC = (1, 0), NColumns = 1, TitleAlignment = 'left')
简单示例 2
自定义底图投影:底图坐标系 AlbersEqualArea (中央经线 112°E,标准纬线:25°N,47°N)
from gma.map import plot, rcs
WorldDS = plot.GetWorldDataSource()
WorldLayer = WorldDS.GetLayer(0)
Spat = rcs.AlbersEqualArea(CentralLongitude=112, StandardParallels=(25, 47))
## 初始化一个地图框,用于绘图
MapF = plot.MapFrame(BaseMapProj = Spat, Extent = None)
# 1.添加图层(可以重复添加多个图层)
MapL1 = MapF.AddLayer(WorldLayer, FaceColor = None, EdgeColor = 'gray', LineWidth = 0.1)
# 2.添加经纬网
Grid = MapF.AddGridLines(LONRange = (-180, 180, 30), LATRange = (-90, 90, 30), LineWidth = 0.2)
# 3.设置地图框(包括刻度和经纬度的标注)
Frame = MapF.SetFrame(FrameWidth = 0.5, LabelFontSize = 5, TickLength = 0.008)
简单示例 3
绘制部分区域:底图坐标系 AlbersEqualArea (中央经线 15°E,标准纬线:30°N,60°N)
from gma.map import plot, rcs
WorldDS = plot.GetWorldDataSource()
WorldLayer = WorldDS.GetLayer(0)
Spat = rcs.AlbersEqualArea(CentralLongitude = 15, StandardParallels = (30, 60))
## 初始化一个地图框,用于绘图
MapF = plot.MapFrame(BaseMapProj = Spat, Extent = [-10, 30, 40, 60])
# 1.添加图层(可以重复添加多个图层)
MapL1 = MapF.AddLayer(WorldLayer, FaceColor = None, EdgeColor = 'gray', LineWidth = 0.1)
MapL1.AddLabel(FieldName = 'Name', FontSize = 4)
# 2.添加经纬网
Grid = MapF.AddGridLines(LONRange = (-180, 180, 20), LATRange = (-90, 90, 15), LineWidth = 0.2)
# 3.设置地图框(包括刻度和经纬度的标注)
Frame = MapF.SetFrame(FrameWidth = 0.5, LabelFontSize = 6, TickLength = 0.008)