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日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

golang 日志log与logrus示例详解

《golang日志log与logrus示例详解》log是Go语言标准库中一个简单的日志库,本文给大家介绍golang日志log与logrus示例详解,感兴趣的朋友一起看看吧... 目录一、Go 标准库 log 详解1. 功能特点2. 常用函数3. 示例代码4. 优势和局限二、第三方库 logrus 详解1.

MySQL新增字段后Java实体未更新的潜在问题与解决方案

《MySQL新增字段后Java实体未更新的潜在问题与解决方案》在Java+MySQL的开发中,我们通常使用ORM框架来映射数据库表与Java对象,但有时候,数据库表结构变更(如新增字段)后,开发人员可... 目录引言1. 问题背景:数据库与 Java 实体不同步1.1 常见场景1.2 示例代码2. 不同操作

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各

SpringBoot项目使用MDC给日志增加唯一标识的实现步骤

《SpringBoot项目使用MDC给日志增加唯一标识的实现步骤》本文介绍了如何在SpringBoot项目中使用MDC(MappedDiagnosticContext)为日志增加唯一标识,以便于日... 目录【Java】SpringBoot项目使用MDC给日志增加唯一标识,方便日志追踪1.日志效果2.实现步

SQL Server清除日志文件ERRORLOG和删除tempdb.mdf

《SQLServer清除日志文件ERRORLOG和删除tempdb.mdf》数据库再使用一段时间后,日志文件会增大,特别是在磁盘容量不足的情况下,更是需要缩减,以下为缩减方法:如果可以停止SQLSe... 目录缩减 ERRORLOG 文件(停止服务后)停止 SQL Server 服务:找到错误日志文件:删除

一文详解SQL Server如何跟踪自动统计信息更新

《一文详解SQLServer如何跟踪自动统计信息更新》SQLServer数据库中,我们都清楚统计信息对于优化器来说非常重要,所以本文就来和大家简单聊一聊SQLServer如何跟踪自动统计信息更新吧... SQL Server数据库中,我们都清楚统计信息对于优化器来说非常重要。一般情况下,我们会开启"自动更新

grom设置全局日志实现执行并打印sql语句

《grom设置全局日志实现执行并打印sql语句》本文主要介绍了grom设置全局日志实现执行并打印sql语句,包括设置日志级别、实现自定义Logger接口以及如何使用GORM的默认logger,通过这些... 目录gorm中的自定义日志gorm中日志的其他操作日志级别Debug自定义 Loggergorm中的

SpringBoot项目注入 traceId 追踪整个请求的日志链路(过程详解)

《SpringBoot项目注入traceId追踪整个请求的日志链路(过程详解)》本文介绍了如何在单体SpringBoot项目中通过手动实现过滤器或拦截器来注入traceId,以追踪整个请求的日志链... SpringBoot项目注入 traceId 来追踪整个请求的日志链路,有了 traceId, 我们在排

Spring Boot整合log4j2日志配置的详细教程

《SpringBoot整合log4j2日志配置的详细教程》:本文主要介绍SpringBoot项目中整合Log4j2日志框架的步骤和配置,包括常用日志框架的比较、配置参数介绍、Log4j2配置详解... 目录前言一、常用日志框架二、配置参数介绍1. 日志级别2. 输出形式3. 日志格式3.1 PatternL