T/SZAEPI 003-2024 生态环境数据质量监控规范 第2部分:规范性和一致性 ,该文件为pdf格式 ,请用户放心下载!
尊敬的用户你们好,你们的支持是我们前进的动力,网站收集的文件并免费分享都是不容易,如果你觉得本站不错的话,可以收藏并分享给你周围的朋友。
如果你觉得网站不错,找不到本网站,可以百度、360搜搜,搜狗, 神马搜索关键词“文档天下”,就可以找到本网站。也可以保存到浏览器书签里。
收费文件即表明收集不易,也是你们支持,信任本网站的理由!真心非常感谢大家一直以来的理解和支持!
CCS Z.04
团体标准
T/SZAEPI 003—2024
生态环境数据质量监控规范 第2部分:规范性和一致性
Specification for data quality monitoring and control of ecologicalenvironment—Part 2: Standardability and consistency
2024-12-30发布2024-12-30实施
深圳市环境保护产业协会发布
目 次
前言.............................................................................. II
引言............................................................................. III
1 范围............................................................................. 1
2 规范性引用文件................................................................... 1
3 术语与定义....................................................................... 2
4 生态环境数据规范性监控内容....................................................... 3
5 生态环境数据一致性监控内容....................................................... 7
附录A(资料性) 生态环境数据规范性监控方法示例..................................... 9
附录B(资料性) 生态环境数据一致性监控方法示例.................................... 16
T/SZAEPI 003—2024
II
前 言
本文件按照GB/T 1.1—2020《标准化工作导则第1 部分:标准化文件的结构和起草规则》的规
定起草。
本文件是T/SZAEPI《生态环境数据质量监控规范》的第2 部分。T/SZAEPI 已经发布了以下部分:
——第1 部分:总则;
——第2 部分:规范性和一致性;
——第3 部分:完整性和时效性;
——第4 部分:准确性和有效性。
本文件由深圳市环境保护产业协会提出并归口。
本文件由深圳市环境保护产业协会解释。
本文件起草单位:深圳市生态环境智能管控中心、深圳深态环境科技有限公司。
本文件主要起草人:徐怀洲、刘琳琳、李佳聪、梁常德、黄为炜、张厚武、毛庆国、尹民、罗晓霞、
陈燕、蒋宇、黎荣清、郭小马、林同坚、董佩兹、蔡志生、曾旭强。
T/SZAEPI 003—2024
III
引 言
为强化生态环境数据管理,提高生态环境数据规范性、一致性,促进生态环境数据共享与应用,制
定《生态环境数据质量监控规范第2 部分:规范性和一致性》标准。
《生态环境数据质量监控规范第2 部分:规范性和一致性》明确了生态环境数据规范性、一致性
的监控规则和监控方法,对推动生态环境数据质量监控体系建设,提升生态环境管理水平具有重要支撑
作用。
T/SZAEPI 003—2024
1
生态环境数据质量监控规范第2 部分:规范性和一致性
1 范围
本文件规定了深圳市生态环境数据规范性和一致性的监控规则和监控方法。
本文件适用于深圳市生态环境信息系统中数据规范性和一致性的事后监控,监控对象包含但不限于
污染源数据、生态环境质量数据、生态环境管理数据等。其他地区可参照执行。
2 规范性引用文件
下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日期的引用文件,
仅该日期对应的版本适用于本文件;不注日期的引用文件,其最新版本(包括所有的修改单)适用于本
文件。
GB/T 2261.1 个人基本信息分类与代码第1 部分:人的性别代码
GB/T 4754 国民经济行业分类
GB/T 7408.1 日期和时间信息交换表示法第1 部分:基本原则
GB 11643 公民身份号码
GB 11714 全国组织机构代码编制规则
GB 12348 工业企业厂界环境噪声排放标准
GB/T 14848 地下水质量标准
GB 15618 土壤环境质量农用地土壤污染风险管控标准(试行)
GB/T 19488.1 电子政务数据元第1 部分:设计和管理规范
GB 32100 法人和其他组织统一社会信用代码编码规则
GB 36600 土壤环境质量建设用地土壤污染风险管控标准(试行)
HJ 2.1 环境影响评价技术导则总纲
HJ 520 废水类别代码(试行)
HJ 523 废水排放去向代码
HJ 608 排污单位编码规则
HJ 1238 汽车排放定期检验信息采集传输技术规范
HJ 1301 排污许可证申请与核发技术规范工业噪声
SL 249 中国河流代码
DB44/ 27 广东省大气污染物排放限值
T/SZAEPI 003—2024
2
DB4403/T 164.1 行政执法监督数据规范第1 部分:数据元
T/SZAEPI 001 生态环境数据质量监控规范第1 部分:总则
《中华人民共和国环境保护法》
《中华人民共和国行政诉讼法》
《中华人民共和国行政复议法》
《建设项目环境保护管理条例》
《企业名称登记管理规定》
《生态环境部建设项目环境影响报告书(表)审批程序规定》(2020 年生态环境部令第14 号)
《企业事业单位环境信息公开办法》(2014 年环境保护部令第31 号)
《危险废物转移管理办法》(2021 年生态环境部、公安部、交通运输部令第23 号)
《环境监管重点单位名录管理办法》(2022 年生态环境部令第27 号)
《企业名称登记管理规定实施办法》(2023 年市场监督管理总局令第82 号)
《国家危险废物名录(2025 年版)》(2024 年生态环境部、国家发展和改革委员会、公安部、交
通运输部、国家卫生健康委员会令第36 号)
《广东省机动车遥感监测管理系统联网规范(试行)》(粤环函〔2020〕70 号)
3 术语与定义
T/SZAEPI 001—2024 界定的以及下列术语和定义适用于本文件。
3.1
字符型数据string data
通过字符形式表达的值的数据类型。
[来源:GB/T 19488.1—2004,5.5.2,有修改]
3.2
数字型数据numeric data
通过从“0”到“9”数字形式表达的值的数据类型。
[来源:GB/T 19488.1—2004,5.5.2,有修改]
3.3
日期型数据date data
通过YYYYMMDD 的形式表达的值的数据类型,符合GB/T 7408.1。
[来源:GB/T 19488.1—2004,5.5.2,有修改]
T/SZAEPI 003—2024
3
3.4
日期时间型数据datetime data
通过YYYYMMDDhhmmss 的形式表达的值的数据类型,符合GB/T 7408.1。
[来源:GB/T 19488.1—2004,5.5.2,有修改]
3.5
布尔型数据boolean data
两个且只有两个表明条件的值(如On/Off、True/False)的数据类型。
[来源:GB/T 19488.1—2004,5.5.2,有修改]
3.6
通用监控规则general monitoring and control rules
适用于各种数据集和应用场景的数据质量监控规则。
3.7
专用监控规则specialized monitoring and control rules
依据特定的数据标准、行业政策或业务逻辑,为具体的业务需求和数据使用场景制定的数据质量监
控规则。
4 生态环境数据规范性监控内容
4.1 字符型数据
4.1.1 字符型数据通用监控规则
字符型数据通用的规范性监控规则包括但不限于以下内容。
a) 禁止无意义的干扰字符。不允许出现无意义的干扰字符,如逗号、句号、空格等。例如:“公
民身份号码”“电话号码”等字符型数据不应包含逗号、句号、空格等无关字符。
b) 符号类型的统一。一个字符型数据内只能使用一种符号类型,不允许半角和全角符号混合使用。
例如:“固定电话号码”应统一使用半角字符,如“0755-12345678”,而不是“0755-1
2345678”或“0755-12345678”。
c) 有相关标准规范的字符型数据应遵循行业或国家标准。例如:“企业名称”应遵循《中华人民
共和国市场主体登记管理条例》《企业名称登记管理规定》《企业名称登记管理规定实施办法》
等要求,避免使用非标准的简称或别名。
d) 字符类型的标准规范。对字符类型有标准规范的数据,不允许出现规定以外的字符。例如:“公
T/SZAEPI 003—2024
4
民身份号码”应遵循GB 11643《公民身份号码》要求,不允许出现汉字或其他字符。
e) 字符长度的标准规范。对字符长度有标准规范的数据,数据长度应严格遵守相关标准规范的要
求。例如:“统一社会信用代码”应符合GB 32100《法人和其他组织统一社会信用代码编码规
则》,长度为18位。
f) 字符值域的标准规范。字符型数据的值域应符合相关标准规范设定的范围。例如:“性别”应
符合根据GB/T 2261.1《个人基本信息分类与代码第1部分:人的性别代码》要求,只能填写
“男”“女”“未知的性别”“未说明的性别”其中之一。
g) 预定义的格式。某些字符型数据应符合预定义的格式。例如:“电子信箱”应符合
“user@domain.com”的格式。
h) 字符集的限制。某些字符型数据只允许特定的字符集。例如:Windows系统通常不允许“文件名
称”中包含特殊字符(如“/”“\”“:”“*”“?”“<”“>”“|”等)。
4.1.2 字符型数据专用监控规则
字符型数据专用的规范性监控规则包括但不限于以下内容。
a) “统一社会信用代码”应符合GB 32100《法人和其他组织统一社会信用代码编码规则》。
b) “组织机构代码”应符合GB 11714《全国组织机构代码编制规则》。
c) 固定污染源的“行业代码”应符合GB/T 4754《国民经济行业分类》要求,将行业划分为大类、
中类和小类三级,其中大类代码由2位阿拉伯数字组成,中类代码由3位阿拉伯数字组成,小类
代码由4位阿拉伯数字组成。例如:豆类种植的“行业代码(小类)”为“0121”。
d) “固定污染源编码”应符合HJ 608《排污单位编码规则》,由18位排污单位代码、3位顺序码(001
—999)和1位特别标识码组成。
e) “生产设施编码”应符合HJ 608《排污单位编码规则》,由2位生产设施标识码和4位顺序码(0001
—9999)组成,即格式为“MF+4位顺序码”。
f) “污染治理设施代码”应符合HJ 608《排污单位编码规则》,由1位污染治理设施标识码、1位
环境要素标识码和3位顺序码(001—999)组成。例如:废水治理设施编码为“TW+3位顺序码”,
废气治理设施编码为“TA+3位顺序码”。
g) “排放口代码”应符合HJ 608《排污单位编码规则》,由1位排放口标识码、1位环境要素标识
码和3位顺序码(001—999)组成。例如:废水排放口编码为“DW+3位顺序码”,废气排放口编
码为“DA+3位顺序码”。
h) “废水类别代码”应符合HJ 520《废水类别代码(试行)》中废水类别代码表中的要求。例如:
施工废水的“废水类别代码”为“147”。
i) 涉废水排放信息中的“受纳水体代码”应符合SL 249《中国河流代码》中规定的编码规则。例
如:深圳河流域的代码为“HD18000000”。
j) 工业噪声的“产噪单元编号”应符合HJ 1301《排污许可证申请与核发技术规范工业噪声》中
规定的编码规则,格式为“CZ+四位流水顺序码(0001—9999)”。
T/SZAEPI 003—2024
5
k) 环境影响评价文件的“审批文号”应符合《生态环境部建设项目环境影响报告书(表)审批程
序规定》和HJ 2.1《环境影响评价技术导则总纲》要求,格式为“审批机关简称+字〔年份〕
序号”。例如:深环审〔2024〕51号。
l) 根据《国家危险废物名录(2025年版)》,固体废物管理信息中的“废物代码”为8位数字。其
中,第1—3位为危险废物产生行业代码(依据GB/T 4754—2017《国民经济行业分类》确定),
第4—6位为危险废物顺序代码,第7—8位为危险废物类别代码。
m) 危险废物的“转移联单编号”应符合《危险废物转移管理办法》要求,由十四位阿拉伯数字组
成。第一至四位数字为年份代码,第五、六位数字为移出地省级行政区划代码,第七、八位数
字为移出地设区的市级行政区划代码,其余六位数字以移出地设区的市级行政区域为单位进行
流水编号。例如:20241015130004。
n) 涉废水监测监控信息中的“排水去向代码”应符合HJ 523《废水排放去向代码》中“废水排放
去向代码表”的规定。例如:“直接进入海域”的废水排放去向代码为“A”。
o) 根据《广东省机动车遥感监测管理系统联网规范(试行)》中规定的编码规则,机动车遥感监
测信息中的“监测点位编号”格式为“1位点位类型+6位行政区划代码+3位顺序号”,例如:
A130128001;机动车尾气遥感监测信息中的“轨迹信息编号”数据格式为“YYMMDD+6位流水号”,
例如:202401000048。
4.2 数字型数据
4.2.1 数字型数据通用监控规则
数字型数据通用的规范性监控规则包括但不限于以下内容。
数字型数据在数据存储、交换、共享等过程中,不允许将其设置为字符型等其他类型数据。例如:
“企业数量”的值应始终设置为数字型,如int(整数型)或float(浮点型),而不是string(字符
型)。
4.2.2 数字型数据专用监控规则
数字型数据专用的规范性监控规则包括但不限于以下内容。
a) 水环境监测指标信息中的“评价标准值”应符合相关标准规范要求。例如:地下水“评价标准
值”应符合GB/T 14848《地下水质量标准》要求,I类、Ⅱ类、Ⅲ类地下水的pH值范围在6.5—
8.5之间。
b) 土壤监测指标信息中的“评价筛选值”应符合GB 36600《土壤环境质量建设用地土壤污染风
险管控标准(试行)》和GB 15618《土壤环境质量农用地土壤污染风险管控标准(试行)》
中关于筛选值的要求。例如:水田的汞在pH值小于等于5.5时,“评价筛选值(mg/kg)”为“0.5”。
c) 噪声手工监测信息中的“厂界噪声排放限值”应符合GB 12348《工业企业厂界环境噪声排放标
准》要求。例如:厂界外声环境功能区类别为0时,昼间的“厂界噪声排放限值(dB(A))”为
T/SZAEPI 003—2024
6
“50”。
d) 排污单位废水自动监测信息中的“废水排放浓度限值”应符合国家、省、市等相关标准规范要
求。
e) 排污单位废气自动监测信息中的“废气排放浓度限值”“废气排放速率限值”应符合国家、省、
市等相关标准规范要求。
4.3 日期型数据
4.3.1 日期型数据通用监控规则
日期型数据通用的规范性监控规则包括但不限于以下内容。
a) 根据GB/T 7408.1《日期和时间信息交换表示法第1部分:基本原则》,公历日期的数据格
式应为“YYYYMMDD”或“YYYY-MM-DD”。例如:2024年10月28日表示为“20241028”或“2024-10-28”。
b) 根据GB/T 7408.1《日期和时间信息交换表示法第1部分:基本原则》,公历中含有365个日
历日的日历年为平年;公历中含有366个日历日的日历年是闰年,闰年能被4整除且不能被100
整除,但世纪年若能被400整除也是闰年;每个日历年被划分为12个连续的日历月,每个月由如
下所示的特定日历日数组成:一月(31天),二月(平年28天,闰年29天),三月(31天),
四月(30天),五月(31天),六月(30天),七月(31天),八月(31天),九月(30天),
十月(31天),十一月(30天),十二月(31天)。例如:不允许出现“20230229”或“2023-02-29”。
4.4 日期时间型数据
4.4.1 日期时间型通用监控规则
日期时间型数据通用的规范性监控规则包括但不限于以下内容。
根据GB/T 7408.1《日期和时间信息交换表示法第1 部分:基本原则》,日期时间的数据格式
应为“YYYYMMDDThhmmss”或“YYYY-MM-DDThh:mm:ss”,日历日内的时间应使用24 小时制来表示,其
中日历日的时长定为24 小时,时钟小时的时长定为60 分,时钟分的时长一般为60 秒(插入正闰秒或
负闰秒的情况除外)。例如:2024 年10 月28 日17 时14 分32 秒应表示为“20241028T171432”或
“2024-10-28T17:14:32”。
4.5 布尔型数据
4.5.1 布尔型数据通用监控规则
布尔型数据通用的规范性监控规则包括但不限于以下内容。
a) 布尔型数据不应存在空值或缺失值。例如:表示“是/否”状态的布尔型数据,应明确标记为“真
(True)”或“假(False)”,而不是留空。
b) 布尔型数据仅包含有效的真值或假值,如:字符串“true”“false”,数字“0”“1”。
T/SZAEPI 003—2024
7
4.5.2 布尔型数据专用监控规则
布尔型数据专用的规范性监控规则包括但不限于以下内容。
a) 根据《建设项目环境保护管理条例》中“编制环境影响报告书、环境影响报告表的建设项目,
其配套建设的环境保护设施经验收合格,方可投入生产或者使用”的要求,建设项目信息中的
“是否通过验收”取值为“0”或“1”,其中0表示否,1表示是。
b) 根据DB4403/T 164.1《行政执法监督数据规范第1部分:数据元》,行政处罚决定信息中的“是
否集体讨论”、行政检查案件信息中的“是否责令改正”、行政处罚执行信息中的“是否分期”
“是否延期”取值均为“0”或“1”,其中0表示否,1表示是。
c) 根据《中华人民共和国行政复议法》中“公民、法人或者其他组织认为行政机关的行政行为侵
犯其合法权益,向行政复议机关提出行政复议申请”的要求,行政处罚决定信息中的“是否复
议”取值为“0”或“1”,其中0表示否,1表示是。
d) 根据《中华人民共和国行政诉讼法》中“公民、法人或者其他组织认为行政机关和行政机关工
作人员的行政行为侵犯其合法权益,有权依照本法向人民法院提起诉讼”的要求,行政处罚决
定信息中的“是否诉讼”取值为“0”或“1”,其中0表示否,1表示是。
e) 根据HJ 1238《汽车排放定期检验信息采集传输技术规范》,机动车排放定期检验信息中的“最
终判定结果”取值为“0”或“1”,其中0表示不通过,1表示通过。
f) 根据《环境监管重点单位名录管理办法》中“对污染物产生量、排放量或者对环境的影响程度
较大的排污单位,实行排污许可重点管理”的要求,排污许可信息中的“是否纳入重点管理”
取值为“0”或“1”,其中0表示否,1表示是。
g) 根据《企业事业单位环境信息公开办法》中“企业事业单位应当按照强制公开和自愿公开相结
合的原则,及时、如实地公开其环境信息”的要求,企业环境信息中的“是否公开”取值为“0”
或“1”,其中0表示否,1表示是。
5 生态环境数据一致性监控内容
5.1 通用监控规则
通用的一致性监控规则包括但不限于以下内容。
a) 在数据同步时,各系统间的数据应保持一致。例如:两个系统在进行数据同步时,字符型数据
的值、数据格式、数据编码等都应保持一致。
b) 同一时间周期或固定更新频率内,同一数据在不同位置保存或被不同的业务系统使用时,数据
应保持一致。例如:同一时间段内各系统同一企业的“经营状态”应保持一致。
c) 同一时间周期或固定更新频率内,不同数据中记录相同事项的内容应保持一致。例如:排污单
位的生产经营场所地址中的行政区划内容应与排污单位的“行政区划名称”保持一致。
d) 日期型和日期时间型数据的时区应一致。例如:同一个数据库的日期型数据和日期型时间型数
T/SZAEPI 003—2024
8
据应使用同一时区的时间。
e) 各系统界面展示的数据应与数据源头保持一致。
5.2 专用监控规则
5.2.1 字符型数据专用监控规则
字符型数据专用的一致性监控规则包括但不限于以下内容。
a) 同一个排污单位的排污许可管理系统和移动执法系统的“排污许可证编号”应保持一致。
b) 当排污单位的排污许可证已完成地址变更业务后,各系统中的该排污单位的“生产经营场所地
址”应同步更新,保持一致。
5.2.2 数字型数据专用监控规则
数字型数据专用的一致性监控规则包括但不限于以下内容。
a) 同一时间段内深圳市“全市空气质量优良率”的数值应保持一致。如:深圳市大气环境管理系
统和深圳市大气环境质量综合管理系统的“全市空气质量优良率”的数值应保持一致。
b) 同一时间段内同一危险废物转移处置环节中的“转移量”应与危险废物中的“确认接收废物重
量”的数值保持一致。
c) 危险废物本月的“月底贮存量”应与次月的“上月底贮存量”的数值保持一致。
d) 废气自动监测信息中,同一排污单位同个排放口的同一废气污染因子“浓度超标限值”应与其
在排污许可信息中的“许可排放浓度限值”的数值保持一致。例如:某排污单位废气自动监测
信息中某酸性废气排放口氮氧化物的“小时排放浓度超标限值(mg/Nm3)”为200,应与其在排
污许可信息中的“小时许可排放浓度限值(mg/Nm3)为200”保持一致。
e) 废水自动监测信息中,同一排污单位同个排放口的同一水污染因子“浓度超标限值”应与其排
污许可信息中的“废水许可排放浓度限值”的数值保持一致。例如:某排污单位废水自动监测
信息中某废水排放口总氮“浓度超标限值(mg/L)”为35,应与其排污许可信息中的“2024年
废水许可排放浓度限值(mg/L)为35”保持一致。
5.2.3 日期型数据专用监控规则
日期型数据专用的一致性监控规则包括但不限于以下内容。
a) 根据《中华人民共和国环境保护法》,建设项目防治污染的“设施设计时间”“施工时间”“投
产使用时间”应与建设项目主体工程“设计时间”“施工时间”“投产使用时间”一致。
b) 根据《广东省机动车遥感监测管理系统联网规范(试行)》中的交通流量信息表要求,“流量
编号”(格式为YYMMDD+6位流水号)中的日期应与“统计日期”保持一致;“监测记录编号”
(格式为10位监测点位编号+2位遥测线编号+14位监测时间)中的日期应与“监测日期”保持一
致。
T/SZAEPI 003—2024
9
5.2.4 日期时间型数据专用监控规则
日期时间型数据专用的一致性监控规则包括但不限于以下内容。
a) 行政处罚系统中听证会的“听证时间”应与移动执法系统中同一听证会的“听证时间”保持一
致。
b) 环境信访投诉信息中,同一次信访事件的“投诉时间”在信访投诉登记信息中和在信访事件处
理信息中应保持一致。
c) 废水自动监测告警信息中,同一次告警事件的“告警开始时间”在告警查询信息中和在告警事
件处理跟踪信息中应保持一致。
5.2.5 布尔型数据专用监控规则
布尔型数据专用的一致性监控规则包括但不限于以下内容。
a) 同一时间周期内,各系统的同一建设项目基础信息中“是否在环境敏感区”“是否在水源保护
区”“是否在生态控制线内”等布尔型数据应保持一致。
b) 同一排污单位档案信息中的“所在地是否属于大气重点控制区”“所在地是否属于总磷控制区”
“所在地是否属于总氮控制区”“所在地是否属于重金属污染特别排放限值实施区域”“是否
位于工业园区”等布尔型数据应与其排污许可系统中的相关数据内容保持一致。
c) 同一时间段内的强制性清洁生产审核“是否审核通过”等布尔型数据应与其在清洁生产系统中
的相关数据内容保持一致。
T/SZAEPI 003—2024
10
附录A
(资料性)
生态环境数据规范性监控方法示例
A.1 字符型数据监控方法
通用监控规则示例:字符长度的标准规范。
#!/usr/bin/env python3.9
from typing import List, Dict, Tuple
def validate_string_length(records: List[Dict[str, str]],
length_requirements: Dict[str, Tuple[int, int]]) -> List[bool]:
"""
验证字符长度是否符合标准规范。
参数:
records (List[Dict[str, str]]): 包含记录的数据源列表,每条记录是一个字典,键为字段
名,值为字符串。
length_requirements (Dict[str, Tuple[int, int]]): 字段名及其字符长度要求的字典,
其中键为字段名,值为(min_length, max_length)的元组。
返回:
List[bool]: 每条记录的验证结果列表,True 表示符合要求,False 表示不符合要求。
"""
results = []
for record in records:
# 假设所有字段都有效,直到发现一个无效字段为止。
record_valid = True
# 遍历需要检查长度的字段。
for field, (min_length, max_length) in length_requirements.items():
value = record.get(field)
# 如果字段不存在或长度不符合要求,则该记录无效。
if not isinstance(value, str) or not (min_length <= len(value) <= max_length):
record_valid = False
break # 不需要再检查此记录的其他字段了。
results.append(record_valid)
return results
专用监控规则示例:“生产设施编码”应符合HJ 608《排污单位编码规则》,由2 位生产设施标
识码和4 位顺序码(0001—9999)组成,即格式为“MF+4 位顺序码”。
#!/usr/bin/env python3.9
from typing import List, Dict, Union
import re
T/SZAEPI 003—2024
11
def validate_facility_code(
records: List[Dict[str, Union[str, None]]],
key: str) -> List[bool]:
"""
验证指定字段的值是否符合HJ 608《排污单位编码规则》中规定的生产设施编码规则。
编码应由2 位生产设施标识码“MF”和4 位顺序码(0001—9999)组成,即编码格式为“MF+4 位
顺序码”。
参数:
records (List[Dict[str, Union[str, None]]]): 包含记录的数据源列表,每条记录是一个
字典,其中键为字段名,值为字符串或None。
key (str): 字典中包含待验证数据的键名,例如“facility_code”。
返回:
List[bool]: 每条记录的验证结果列表,True 表示符合要求,False 表示不符合要求。
"""
# 定义正则表达式来匹配编码格式。
pattern = re.compile(r'^MF\d{4}$')
results = []
for record in records:
facility_code = record.get(key, '')
# 使用正则表达式检查编码格式。
if not facility_code:
results.append(False)
else:
results.append(bool(pattern.match(facility_code)))
return results
A.2 数字型数据监控方法
通用监控规则示例:检查数据是否为数字型数据。
#!/usr/bin/env python3.9
from typing import List, Dict, Union
def is_numeric_in_dicts(
data: List[Dict[str, Union[str, int, float, None]]],
key: str) -> List[bool]:
"""
检查列表中每个字典指定键的值是否为数字型数据(包括整数、浮点数以及可以转换为浮点数的字
符串)。
参数:
data (List[Dict[str, Union[str, int, float, None]]]): 包含多个字典的列表,每个字典
的值可以是字符串、整数、浮点数或None。
T/SZAEPI 003—2024
12
key (str): 要检查的字典中的键名。
返回:
List[bool]: 对应于列表中每个字典指定键值的检查结果列表,True 表示是数字型,False
表示不是。
"""
results = []
for record in data:
value = record.get(key)
if isinstance(value, (int, float)):
results.append(True)
elif isinstance(value, str):
try:
float(value)
results.append(True)
except ValueError:
results.append(False)
else:
# For all other types including None, append False
results.append(False)
return results
A.3 日期型数据监控方法
通用监控规则示例:检查数据是否为日期型数据。
#!/usr/bin/env python3.9
from datetime import datetime
from typing import List, Dict, Union
def is_date_in_dicts(
data: List[Dict[str, Union[str, None]]],
key: str,
date_format: str = '%Y-%m-%d') -> List[bool]:
"""
验证给定字典列表中每个字典指定键的值是否为指定格式的日期型数据。
参数:
data (List[Dict[str, Union[str, None]]]): 包含多个字典的列表,每个字典中有一个键为
“key”的值表示待验证的日期字符串或None。
key (str): 字典中包含日期字符串的键名。
date_format (str): 日期格式,默认为“%Y-%m-%d”(例如“2024-10-14”)。
返回:
List[bool]: 对应于列表中每个字典指定键值的检查结果列表,True 表示是有效的日期型数
据,False 表示不是。
"""
results = []
T/SZAEPI 003—2024
13
for record in data:
value = record.get(key)
# 处理None 或空字符串值。
if not value:
results.append(False)
continue
try:
# 尝试使用指定格式解析日期。
datetime.strptime(value, date_format)
results.append(True)
except ValueError:
# 如果解析失败,则日期无效。
results.append(False)
return results
A.4 日期时间型数据监控方法
通用监控规则示例:检查数据是否为日期时间型数据。
#!/usr/bin/env python3.9
from datetime import datetime
from typing import List, Dict, Union
def is_datetime_in_dicts(
data: List[Dict[str, Union[str, None]]],
key: str,
datetime_format: str = '%Y-%m-%d %H:%M:%S') -> List[bool]:
"""
验证给定字典列表中每个字典指定键的值是否为指定格式的日期时间型数据。
参数:
data (List[Dict[str, Union[str, None]]]): 包含多个字典的列表,每个字典中有一个键为
“key”的值表示待验证的日期时间字符串或None。
key (str): 字典中包含日期时间字符串的键名。
datetime_format (str): 日期时间格式,默认为“%Y-%m-%d %H:%M:%S”(例如“2024-10-14
12:34:56”)。
返回:
List[bool]: 对应于列表中每个字典指定键值的检查结果列表,True 表示是有效的日期时间
型数据,False 表示不是。
"""
results = []
for record in data:
value = record.get(key)
T/SZAEPI 003—2024
14
# 处理None 或空字符串值。
if not value:
results.append(False)
continue
try:
# 尝试使用指定格式解析日期时间。
datetime.strptime(value, datetime_format)
results.append(True)
except ValueError:
# 如果解析失败,则日期时间无效。
results.append(False)
return results
A.5 布尔型数据监控方法
通用监控规则示例:检查数据是否为布尔型数据。
#!/usr/bin/env python3.9
from typing import List, Dict, Union
def check_boolean_in_dicts(data: List[Dict[str, Union[bool, None]]], key: str) -> List[bool]:
"""
验证给定字典列表中每个字典指定键的值是否为布尔型数据。
参数:
data (List[Dict[str, Union[bool, None]]]): 包含多个字典的列表,每个字典中有一个键
为“key”的值表示待验证的数据或None。
key (str): 字典中包含待验证数据的键名。
返回:
List[bool]: 对应于列表中每个字典指定键值的检查结果列表,True 表示是布尔型数据,
False 表示不是。
"""
results = []
for record in data:
value = record.get(key)
# 处理None 值。
if value is None:
results.append(False)
continue
# 检查是否为布尔型数据。
if isinstance(value, bool):
results.append(True)
else:
results.append(False)
return results
T/SZAEPI 003—2024
15
专用监控规则:根据DB4403/T 164.1《行政执法监督数据规范第1 部分:数据元》,行政处罚
决定信息中的“是否集体讨论”取值均为“0”或“1”,其中0 表示否,1 表示是。
#!/usr/bin/env python3.9
from typing import List, Dict, Union
def validate_collective_discussion(
records: List[Dict[str, Union[str, None]]],
key: str) -> List[bool]:
"""
验证行政处罚决定信息中指定键的值是否符合DB4403/T 164.1 的要求,取值只能为“0”或“1”。
参数:
records (List[Dict[str, Union[str, None]]]): 包含记录的数据源,每个记录是一个字典。
key (str): 字典中包含待验证数据的键名,例如“collective_discussion”。
返回:
List[bool]: 每条记录的验证结果,True 表示符合要求,False 表示不符合要求。
"""
valid_values = {'0', '1'}
results = []
for record in records:
value = record.get(key)
# 处理None 值或空字符串。
if not value:
results.append(False)
continue
# 检查指定键的值是否为“0”或“1”。
if value in valid_values:
results.append(True)
else:
results.append(False)
return results
T/SZAEPI 003—2024
16
附录B
(资料性)
生态环境数据一致性监控方法示例
B.1 通用规则监控方法
通用监控规则示例:同一时间周期或固定更新频率内,同一字符型数据在不同位置保存或被不同的
业务系统使用时,数据应保持一致。
#!/usr/bin/env python3.9
from typing import List, Dict, Union, Tuple
from collections import defaultdict
def check_consistency(field_name: str, time_field: str, *data_sources: List[Dict[str,
Union[str, None]]]) -> List[Tuple[str, bool]]:
"""
验证同一时间周期或固定更新频率内,同一字符数据在不同位置保存或被不同的业务系统使用时,
数据应保持一致。
参数:
field_name (str): 要检查的字段名。
time_field (str): 时间字段名,用于确定记录的时间。
*data_sources (List[Dict[str, Union[str, None]]]): 包含记录的多个数据源,每个数据
源是一个字典列表。
返回:
List[Tuple[str, bool]]: 每个时间点的验证结果列表,格式为(时间点, True/False),True
表示在同一时间点上的值都相同(忽略空值和None);False 表示不一致。
"""
# 使用默认字典来存储每个时间点的所有非空值。
values_by_time = defaultdict(set)
# 收集所有时间点的数据。
for data_source in data_sources:
for record in data_source:
time_value = record.get(time_field)
field_value = record.get(field_name)
if isinstance(time_value, (str, int)) and isinstance(field_value, str) and
field_value.strip():
values_by_time[time_value].add(field_value)
# 检查每个时间点的唯一值数量并构建结果列表。
results = []
for time_point, values in sorted(values_by_time.items()):
results.append((time_point, len(values) <= 1))
return results
T/SZAEPI 003—2024
17
B.2 专用规则监控方法
专用监控规则示例:危险废物本月的“月底贮存量”应与次月的“上月底贮存量”的数值保持一致。
#!/usr/bin/env python3.9
from typing import List, Dict, Tuple
def validate_monthly_storage(monthly_data: List[Dict[str, float]]) -> List[Tuple[int, int,
bool, str]]:
"""
验证危险废物每月的“月底贮存量”是否与次月的“上月底贮存量”的数值保持一致。
参数:
monthly_data (List[Dict[str, float]]): 包含每月数据的列表,每个元素为字典形式,键
为字段名,值为对应的数值。
返回:
List[Tuple[int, int, bool, str]]: 每个验证结果的列表,格式为(月份1, 月份2,
True/False, 描述信息)。
"""
results = []
for i in range(len(monthly_data) - 1):
current_month = monthly_data[i]
next_month = monthly_data[i + 1]
# 提取所需的字段值。
try:
end_of_month_storage_current = current_month.get('end_of_month_storage', None)
start_of_month_storage_next = next_month.get('start_of_month_storage', None)
except AttributeError:
return [(i + 1, i + 2, False, "输入的数据格式不正确,请确保使用字典形式并包含
所有必要的字段。")]
if end_of_month_storage_current is None or start_of_month_storage_next is None:
results.append((i + 1, i + 2, False, f"第{i + 1} 个月或第{i + 2} 个月的数据
缺失必要字段"))
continue
# 检查两者是否相等(考虑到浮点数精度问题,使用一个小阈值进行比较)。
if abs(end_of_month_storage_current - start_of_month_storage_next) < 1e-6:
results.append((i + 1, i + 2, True,
f"验证通过: 第{i + 1} 个月的月底贮存量
({end_of_month_storage_current}) == 第{i + 2} 个月的上月底贮存量
({start_of_month_storage_next})"))
else:
results.append((i + 1, i + 2, False,
f"验证失败: 第{i + 1} 个月的月底贮存量
({end_of_month_storage_current}) != 第{i + 2} 个月的上月底贮存量
({start_of_month_storage_next})"))
return results
评论