gma 1.1.5 (2023.04.13) 更新日志

2023-10-28 09:10
文章标签 日志 更新 13 1.1 gma 2023.04

本文主要是介绍gma 1.1.5 (2023.04.13) 更新日志,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

优化

 1、LogLogistic 分布

  优化标准化气候指数 LogLogistic 分布内部拟合/变换算法,提高拟合结果的精度 。

 2、【栅格处理】

  将进度条回调函数外置——包括 CallBack 和 CallBackData(已测试可以配合 PyQT 实现进图条界面(如果这个回调函数基于 gdal 原生方法))。

 3、Layer

  重构了 Layer 类(移除了 95% ogr.Layer 的内容,因为其可能导致 Python 内核崩溃,但整体用法和功能不变)。

  • 现在,gma 打开的矢量数据 Layer 和 Feature 已经完全不同于 ogr。
  • 如果希望将 gma.~.Feature 转为 ogr.Feature,请探索 gma.algorithm.core.gcreate._GMAFeatureToOGR 函数!

 4、内置数据

  a、内置栅格数据格式由.tif改为 .jp2 和 .webp ,使文件大小减小最多75%。
  b、除 DEM 数据之外,其他数据更换为 Natural Earth(1:50M)数据。

新增

 1、io 模块

  将 gma 内部输入输出相关函数入口调整至 io 模块,开放使用。主要包括(功能同名称):

  • CreateFeatureFromPoints:从点创建要素(Feature)。
  • CreateLayerFromFeature:从点创建图层(Layer)。
  • Open:打开文件。同 gma.Open
  • RasterOpen:打开栅格文件。
  • VectorOpen:打开矢量文件。
  • ReadArrayAsDataSet:将 Numpy 数组读取为数据集(DataSet)。
  • SaveArrayToRaster:将 Numpy 数组保存到栅格文件。
  • TranslateFeatureToDataSet:将要素(Feature)转换为数据集(DataSet)。
  • TranslateLayerToDataSet:将图层(Layer)转换为数据集(DataSet)。

已开放但不在 io模块的同功能函数将在未来的某个版本移除(例如:rasp.WriteRaster 与 SaveArrayToRaster 功能完全一致)。

 2、inres 模块

  为 map 增加 inres模块,用以提供内置资源(世界陆地、大型河流、大型湖泊、自然地球等数据)。原有方法依旧可用,但会发出弃用警告。

 3、plot 模块

  a、增加【GetPreDefinedCMaps】。列出并绘制 matplotlib 所有默认色带。

  b、增加【CreatePlotFeature】。将坐标点转换为绘图要素。与 io.CreateFeatureFromPoints 不同,此方法生成的线、面要素会在点之间插值形成一系列的连续点,以保证更换投影时绘制线的位置不会发生改变并且是空间连续的。

修复

 1、SetFrame

  修复了一个因显示区域过小进而导致配置经度或纬度刻度总是忽略不显示(即 ShowXXX 总是= False)的问题。

 2、ET0.Hargreaves

  修复了 ET0.Hargreaves 函数在 2 维气温数据条件下,不支持对应 1 维纬度数据的问题。(感谢反馈:su*****77)

 3、MultiSDSToTif

  由于重构了 Open 函数导致此方法异常。因此,基于 gma 当前版本的整体逻辑对此方法进行简化重构。(感谢反馈:a2*****20)


简单示例

示例数据下载:

链接:https://pan.baidu.com/s/1VMsDxzogCvN8Fj0Unb8LCg?pwd=4gij
提取码:4gij

from gma import io
from gma.smc import Interpolate
from gma.map import rcs, plot, inres
import pandas as pd# 步骤一:读取数据
## 0.若为 Excel 数据
Data = pd.read_excel("Interpolate.xlsx")
Points = Data.loc[:, ['经度','纬度']].values
Values = Data.loc[:, ['值']].values##可选################### 从矢量文件读取坐标点(经度、维度)和值
## 1.若为矢量文件
DataSource = io.Open("Interpolate.shp")
Layer = DataSource.GetLayer(0)
### 1.1 如果属性表包含经度、维度和值
Data = Layer.GetAttributeTable()
Points = Data.loc[:, ['经度','纬度']].values
Values = Data.loc[:, ['值']].values
### 1.2 如果属性表仅包含值,可读取每个点要素的坐标及其对应的值
Points = [Layer.GetFeature(i).Points[:2] for i in range(Layer.FeatureCount)]
Values = [Layer.GetFeature(i).Fields['值'] for i in range(Layer.FeatureCount)]
##可选#################### 步骤二:克里金插值,并将插值结果转换为 gma 数据集(DataSet)
KGD = Interpolate.Kriging(Points, Values, Resolution = 0.01, InProjection = 'WGS84')
KGDataSet = io.ReadArrayAsDataSet(KGD.Data, Projection = 'WGS84', Transform = KGD.Transform)# 步骤三:绘图
# 0.使用 gma 定义一个中心经线为 125°E ,两条标准纬线为 40°N, 52°N 的 Albers 等面积投影
Proj = rcs.AlbersEqualArea(CentralLongitude = 125, StandardParallels = (40, 52))# 1.初始化一个地图框,并配置视图范围 
MapF = plot.MapFrame(Axes = None, BaseMapProj = Proj, Extent = [112, 38, 138, 54])# 2.将内置的世界矢量图层(国界和海洋)添加到地图框
MapL1 = MapF.AddLayer(inres.WorldLayer.Country, FaceColor = 'none', LineWidth = 0.2, EdgeColor = 'black', Zorder = 2)
MapL2 = MapF.AddLayer(inres.WorldLayer.Ocean, FaceColor = '#BEE8FF', EdgeColor = 'none')# 3.添加插值结果数据集
MapD1 = MapF.AddDataSetClassify(KGDataSet,CMap = 'jet',Remap = [[-25, 0], [-20, 1], [-15, 2], [-10, 3],[-5, 4], [100, 5]],Method = 'Range', Labels = ['<= -25', '-25 ~ -20', '-20 ~ -15','-15 ~ -10','-10 ~ -5',' > -5'],Zorder = 1     )# 4.地图整饰要素
## 4.1 经纬网
GridLines = MapF.AddGridLines(LONRange = (100, 150, 5), LATRange = (30, 60, 5))
## 4.2 指北针
AddCompass = MapF.AddCompass(LOC = (0.1, 0.8), Color = 'black')
## 4.3 比例尺
ScaleBar = MapF.AddScaleBar(LOC = (0.1, 0.02), Width = 0.3, Color = 'black', FontSize = 7)
## 4.4 图例
Legend = MapF.AddLegend(LegendName = '气温(℃)', TitleAlignment = 'left', PlotID = [2], LOC = (0.75, 0.5), TitleFont = 'SimSun')# 5.设置地图框边框
Frame = MapF.SetFrame()

这篇关于gma 1.1.5 (2023.04.13) 更新日志的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/292206

相关文章

SpringBoot日志级别与日志分组详解

《SpringBoot日志级别与日志分组详解》文章介绍了日志级别(ALL至OFF)及其作用,说明SpringBoot默认日志级别为INFO,可通过application.properties调整全局或... 目录日志级别1、级别内容2、调整日志级别调整默认日志级别调整指定类的日志级别项目开发过程中,利用日志

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据

linux安装、更新、卸载anaconda实践

《linux安装、更新、卸载anaconda实践》Anaconda是基于conda的科学计算环境,集成1400+包及依赖,安装需下载脚本、接受协议、设置路径、配置环境变量,更新与卸载通过conda命令... 目录随意找一个目录下载安装脚本检查许可证协议,ENTER就可以安装完毕之后激活anaconda安装更

java -jar example.jar 产生的日志输出到指定文件的方法

《java-jarexample.jar产生的日志输出到指定文件的方法》这篇文章给大家介绍java-jarexample.jar产生的日志输出到指定文件的方法,本文给大家介绍的非常详细,对大家的... 目录怎么让 Java -jar example.jar 产生的日志输出到指定文件一、方法1:使用重定向1、

c++日志库log4cplus快速入门小结

《c++日志库log4cplus快速入门小结》文章浏览阅读1.1w次,点赞9次,收藏44次。本文介绍Log4cplus,一种适用于C++的线程安全日志记录API,提供灵活的日志管理和配置控制。文章涵盖... 目录简介日志等级配置文件使用关于初始化使用示例总结参考资料简介log4j 用于Java,log4c

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

Nginx禁用TLSv1.0 1.1改为TLSv1.2 1.3的操作方法

《Nginx禁用TLSv1.01.1改为TLSv1.21.3的操作方法》使用MozillaSSL配置工具生成配置,修改nginx.conf的ssl_protocols和ssl_ciphers,通... 目录方法一:方法二:使用 MoziChina编程lla 提供的 在线生成SSL配置工具,根据自己的环境填充对应的

nginx配置错误日志的实现步骤

《nginx配置错误日志的实现步骤》配置nginx代理过程中,如果出现错误,需要看日志,可以把nginx日志配置出来,以便快速定位日志问题,下面就来介绍一下nginx配置错误日志的实现步骤,感兴趣的可... 目录前言nginx配置错误日志总结前言在配置nginx代理过程中,如果出现错误,需要看日志,可以把