经过几个月的测试,gma 2 的功能趋于稳定。从本月开始,gma 正式发布 2.0 的正式版,并且,在未来的数十年内,gma 不会大的用法改动。
相较于 1.x 版本,2.x 更像是第一个完整的 gma 版本,因为其构建逻辑更加统一,思路更加完善,功能间的继承关系更加明确,功能拓展和优化更加方便。
pip install gma==2.0.0
1、底层算法逻辑彻底重构,类继承关系更加明确。
2、功能函数重新归类,部分函数进行更名或移除。
包括数据打开、信息查看、转换、提取,栅格/矢量内存数据创建等。
包括地理/投影坐标系创建、基准面/椭球体创建、投影方法配置、初始化现有空间参考等。
包括栅格、矢量数据绘图,指北针、比例尺等生成。
包括数据平滑、评估、滤波、拉伸、增强、变换等。
包括气候指数(SPEI、SPI等)、多种潜在蒸散算法(Penman-Monteith法等)、气候诊断(M-K突变检验等)和一些其他相关指数(日地相对距离等)算法等。
包括NDVI、EVI、TVDI等遥感植被指数计算。
包括基础处理(重采样、重投影等)、提取分析(等值线提取、重分类等)、栅格融合(Pansharpen融合等)、滤波运算(高斯滤波等)、栅格分解(波段分解等)、多维处理(多维数据转为普通栅格等)、表面分析(坡度、坡向等)等工具。
包括基础处理(几何修复、简化、重投影等)、矢量提取(要素分割等)、几何处理(裁剪、相交、擦除等)。
包括空间查询(长度测量、坐标转换等)、空间插值(反距离权重法、克里金法等)。
包括常用的文件查找、压缩文件操作、多线程等。
在 gma 2 完整支持了 栅格/矢量驱动格式类(gft中的函数),可以通过修改驱动格式的参数,从而配置栅格/矢量数据的创建选项。与gdal相比,gma的配置逻辑更加简单和清晰。
gma 2 打开的(io.Open)栅格/矢量文件增加了更多的方法和属性,包括但不限于重投影、重采样、另存、裁剪、擦除、属性表更新和修改等。
gma 2 的坐标参考系统,基于 ArcGIS 的坐标系创建思路,提供了完整的坐标系相关参数的配置过程,例如:椭球体、基准面、线性和角度单位、几十种投影方法,方便数据变换和空间绘图使用。
from gma import crs
# 创建一个地理坐标系 ==> 坐标系名称:'GMA GCS';角度单位:'Degree'(度);中央子午线:'Greenwich'(格林威治,0°);
# 椭球体:'CGCS2000'(中国国家大地坐标系 2000 椭球体)
GCS = crs.GeogCS(Name = 'GMA GCS', AngularUnit = 'Degree', PRIMEM = 'Greenwich', Ellipsoid = 'CGCS2000')
# 创建一个阿尔伯斯等积圆锥投影方法 ==> 中央经线:112°E;标准纬线1:25°N;标准纬线2:47°N
ACEA = crs.ProjMethod.AlbersConicEqualArea(CentralLongitude = 112, StandardParallels1 = 25, StandardParallels2 = 47)
# 创建一个投影坐标系 ==> 坐标系名称:'GMA PCS';线性单位:'Meter'(米);投影方法:ACEA;地理坐标系:GCS
PCS = crs.ProjCS(Name = 'GMA PCS', LinearUnit = 'Meter', ProjMethod = ACEA, GCS = GCS)
from gma.map import plot, inres
# 创建一个地图框,地图坐标系使用示例1创建的投影坐标系
MapF = plot.MapFrame(BaseMapProj = PCS)
# 添加一个世界国家底图,填充色为随机颜色,边线宽度 0.3
L1 = MapF.AddLayer(inres.WorldLayer.Country, FaceColor = None, LineWidth = 0.3)
# 添加一个默认经纬网
GridLines = MapF.AddGridLines()
# 设置地图边框,标签字体4号字
Frame = MapF.SetFrame(LabelFontSize = 4)