从网格数据集值插入值
此转换器可高效地从网格数据集的值中插入值。因此,它对于研究动物轨迹数据的研究人员特别有用(例如,
IOOS Animal Telemetry Network 
)。此转换器接收包含纬度、经度和时间列(可能还有其他列)的表格,并返回包含附加列的表格,这些附加列基于用户指定的请求 CSV(具有
datasetID /variableName/algorithm/nearby组合,例如
jplMURSST41/analysed_sst/Bilinear/4 )插入值。在所有情况下,对于您提供的每个纬度、经度和时间点,转换器都会从指定的datasetID /variable 中找到指定数量的附近值,然后应用指定的算法来创建插值。
很少有人会定期使用此网页。相反,此服务的大多数用户将编写和/或使用使用此网页底层 Web 服务的脚本。
或者,绕过此网页并从计算机程序、脚本或网页内部进行转换。
笔记:
- 始终检查转换器的结果。
如果您认为转换器给出了不正确的结果,请将详细信息通过电子邮件发送至erd dot data at noaa dot gov 。
- 免责声明
与本网站相关的任何个人或组织均不对本网站上任何信息的准确性、完整性或实用性作任何明示或暗示的保证,包括适销性和针对特定目的的适用性的保证,也不承担任何法律责任。
- 如果指定的datasetID和/或variable当前不可用,或者algorithm或nearby值无效,则会返回错误消息。
- algorithm选项包括:
- Nearest
这将查看nearby n 个数据集点并返回最近的
非 NaN 数据集值(如果它们都是 NaN,则为 NaN),按原样返回。如果 >1 个数据集值与源点同样接近,则此方法将返回其中一个(未指定)。
- Bilinear (默认)
这将查看纬度经度平面中nearby 4 个数据集点并返回双线性插值
。这将处理 NaN 值,并且仅当所有 4 个邻近点都是 NaN 时才返回该点的 NaN。对于此algorithm , nearby的唯一允许值是 4。此algorithm是默认算法。如果您未指定algorithm ,则将使用Bilinear/4 。
- Mean
这将返回非 NaN 的nearby数据集值的平均值。无论变量的数据类型如何,它都会使用双精度数进行计算并返回双精度数。此选项的默认nearby设置为 4。
- SD
这将返回非 NaN 的nearby数据集值的标准偏差。这将使用双精度数进行计算并返回双精度数,无论变量的数据类型如何。此选项的默认nearby设置为 4。
- Median
这将返回非 NaN 的nearby数据集值的中值。此选项的默认nearby设置为 4。无论变量的数据集类型如何,它都会使用双精度数进行计算并返回双精度数。
- Scaled
这将返回非 NaN nearby数据集值(Y)的缩放、反距离平方插值。
每个附近数据集值的权重为 w = (1 - D/Dmax) 2 / (D/Dmax),其中 D 是距离(Davis,1986,等式 5.68,第 371 页)。
因此,最远的数据集值的权重=0。
每个插值点为E = ∑(w Y)/∑(w)
如果附近的数据集点的距离为 0,则该点的值将用作插值。
无论变量的数据类型如何,此操作都会使用双精度数进行计算并返回双精度数。此选项的默认nearby设置为 4。
- InverseDistance
这将返回非 NaN、 nearby数据值(Y)的反距离插值。
每个附近数据值的权重为 w = 1/D,其中 D 是距离(Davis, 1986, eq 5.67, page 367) 。
每个插值都是E = ∑(w Y)/∑(w)
如果附近的数据集点的距离为 0,则该点的值将用作插值。
无论变量的数据类型如何,此操作都会使用双精度数进行计算并返回双精度数。此选项的默认nearby设置为 4。
- InverseDistance2
这类似于InverseDistance ,但每个附近数据值的权重是 w = 1/D 2 。
- InverseDistance4
这类似于InverseDistance ,但每个附近数据值的权重是 w = 1/D 4 。
- InverseDistance6
这类似于InverseDistance ,但每个附近数据值的权重是 w = 1/D 6 。
所有计算距离的算法( Nearest 、 Bilinear 、 Scaled和所有InverseDistance算法)都是在索引空间中计算距离,而不是使用实际的时间、纬度和经度值。因此,这会为一个纬度索引单位和一个经度索引单位赋予相等的权重(如果是 3D,则为一个时间索引单位赋予相等的权重)。如果这对于给定的datasetID / variable不合适,请使用其他algorithm选项之一或参阅下面的不是您想要的? 。
- nearby指定algorithm要使用的点的数量。
只允许使用某些数字。对于所有algorithm选项, nearby都有 2D 和 3D 选项。2D 选项(4、16 和 36,对应于边长为 1、2 或 3 个索引值的 2D 正方形(2 2 、4 2 、6 2 ))包括 2D 纬度/经度平面中的附近点。3D 选项(8、64 和 216,对应于边长为 1、2 或 3 algorithm索引值的 3D 立方体(2 3 、4 3 、6 3 ))包括 3D 纬度/经度/时间空间中的附近点。algorithm = Nearest选项还支持nearby值 1,它仅查看 2D 平面中的最近数据点。
如果给定的经度、纬度、时间点超出数据集的范围,则结果数据值将为 NaN。但是,如果将经度值加上或减去 360 使该点处于数据集的范围内,则结果将具有相应的数据值。
警告:如果最近的经度值接近最小或最大经度值,则此方法仅查找靠近相同最小或最大经度值的附近点 - 它不会绕回查找附近点。相反,它会根据需要复制最小或最大经度值处的点。从技术上讲,这不是正确的行为,但它只会在某些时候影响某些人。如果这会影响您并且您不可接受,请参阅下面的不是您想要的吗? 。
- 其他尺寸
如果指定的数据集除了纬度、经度和时间之外还有其它维度(例如深度),此转换器将请求其他每个维度最接近 0 的维度值。如果这不是您想要的行为,请参阅下面的不是您想要的? 。
- 此处使用的插值方法源自Davis, JC 1986.
Statistics and Data Analysis in Geology, 2nd Ed.
John Wiley and Sons.
New York, New York.
- 缺失数据值
如果数据集没有缺失值,那么像Bilinear这样的简单algorithm就能可靠地产生良好的结果。但是当数据集有缺失值时,结果可能是有偏差的值或缺失值。在这种常见情况下,您可能更愿意选择Scaled algorithm或InverseDistance algorithm之一以及更多nearby点。这些算法更擅长处理缺失值,并且不太可能返回缺失值。
- 在响应表中,新列的名称是通过获取datasetID /variableName/algorithm/nearby CSV 的每个部分(例如, jplMURSST41/analysed_sst/Bilinear/4 )并将 / 更改为 _(例如, jplMURSST41_analysed_sst_Bilinear_4 )来创建的,以便它们成为所有类型数据文件中的有效变量名称
- 在响应表中,除了algorithm = Nearest (返回原始数据类型)之外,插值以双精度形式返回,而不是原始数据类型。缺失值以 NaN 形式返回,绝不会以 missing_value 形式代替。
- 居中网格?
网格数据集的纬度和经度值可能标识相关单元格的中心或单元格的左下角。CF
标准
表示“如果没有提供边界,应用程序可能会合理地假设网格点位于单元格的中心,但我们在本标准中不要求这样做。”此转换器将数据集的纬度和经度值视为点,以便它可以插入介于数据集纬度和经度点之间的值。这与数据集的纬度和经度值标识单元格中心的假设更加一致。如果这不是给定数据集的正确方法,在某些情况下,从您提供给此转换器的纬度和经度值中减去单元格间距的一半可能是合适的。
- 这不是您想要的?
如果此转换器提供的方法或选项不适合你的目的或不是你想要的,请不要使用它们。相反,你可以自己做,按照自己的方式:下载数据集的子集并应用你自己的算法。要请求将其他插值算法添加到此转换器,请发送电子邮件erd dot data at noaa dot gov 。
- ERDDAP管理员:
您可以通过在datasets.xml中添加/编辑 <convertInterpolateRequestCSVExample> 标签来更改默认的请求 CSV。同样,您可以通过在datasets.xml中添加/编辑 <convertInterpolateDatasetIDVariableList> 标签来更改datasetID / variable选项列表,该列表可以包含建议的datasetID / variable组合的逗号分隔列表。
此网页上的表单可帮助人们生成请求 URL,当人们按下转换按钮时,该 URL 会发送给ERDDAP 。但是,您可以手动或在计算机程序或脚本中生成 URL,然后直接将 URL 提交给ERDDAP ,从而绕过此表单。
- 表单中的时间、纬度、经度表格成为请求中的TimeLatLonTable参数。
- 表单中的请求 CSV 将成为请求中的 requestCSV 参数。
- 表单中的文件类型成为请求的文件类型。
示例请求 URL 为
https://coastwatch.pfeg.noaa.gov/erddap/convert/interpolate.htmlTable?TimeLatLonTable=
time%2Clatitude%2Clongitude%0A
2020-01-01T06%3A00%3A00Z%2C35.580%2C-122.550%0A
2020-01-01T12%3A00%3A00Z%2C35.576%2C-122.553%0A
2020-01-01T18%3A00%3A00Z%2C35.572%2C-122.568%0A
2020-01-02T00%3A00%3A00Z%2C35.569%2C-122.571%0A
&requestCSV=jplMURSST41%2Fanalysed_sst%2FBilinear%2F4
(其中插入了换行符以便于阅读,但实际上只有一行长代码。)
URL 长度- 请注意,随着 TimeLatLonTable 中的数据量增加,请求 URL 会变得非常长。由于 Tomcat 默认限制每个请求 URL 为 4096 个字符,因此此转换器的输入量限制为 100 行 - 100 行是您一次可以可靠请求的最多行。即使有此限制,此转换器也比为每个源时间纬度经度值发出单独请求要高效得多,因为批量请求的网络开销只有 1/100,而且从源数据集获取数据的效率要高得多(通常几乎是 100 倍)。
百分比编码- URL 中的 TimeLatLonTable 和 requestCSV 参数值必须正确进行百分比编码
:除 A-Za-z0-9_-!.~'()* 之外的所有字符都必须编码为 %HH,其中 HH 是字符的 2 位十六进制值,例如空格变为 %20。#127 以上的字符必须转换为 UTF-8 字节,然后每个 UTF-8 字节都必须进行百分号编码(请程序员帮忙)。有些网站可以为您进行百分号编码和解码
。