是否有一个标准化的或“最常用的”虚拟Z值?


10

创建和导入2D和3D数据时,我屡次遇到我的坐标集没有Z值的情况,即Z坐标的值似乎超出范围(例如-99,-9999,-inf或类似值) ),或者我需要创建一个虚拟 Z坐标。

我知道我的问题的答案是:

“只要使用您认为超出范围的值即可。”

但是这个答案被我搁置了,我想知道GIS社区对于虚拟 Z坐标是否具有标准化最常用的值?

Answers:


5

当前的答复都给出了很好的建议。在无法存储真空值或NaN的情况下,一个很好的通用规则(来自科学计算社区)会很好地使用该字段将(有效)保留的最小(最负数)值。

例子:

  • 7.2十进制字段可以保存小至-9999.99的值。

  • 整数栅格可以容纳小至-32768的数字,但通常(由于对二进制的厌恶和对基数的亲和力)使用值-9999代替。

  • 浮点数可以容纳-10 ^(38)数量级的数字。如果您不能在字段中输入NaN,则可以找到适合的最小浮点数(这很痛苦),或者只使用-10 ^(38)本身即可。对于双打,-10 ^(303)可以很好地工作,但-10 ^(38)也可以:足够大且为负数,可以用作空值的清晰标记。

此规则易于记住,一致,易于应用,易于以样板方式记录(针对您的元数据),并且很少导致无意的错误(因为负数通常与数据相差甚远,因此被误用为实际值(而不是null)会破坏统计摘要和其他计算结果,足以引起存在问题的标记)。


5

如果您的数据在数据库中,那么理想情况下,您将使用NULL值:

表示“缺少信息和不适用信息”

但是,这可能会导致客户端应用程序和代码出现问题,并且我认为DBF不支持NULL。我认为对于不同的组织惯例,该值应该有所不同。无论您选择什么虚拟值,请确保将其记录在数据集的元数据中。

如果数据集的所有点都不具有Z值,那么我不明白为什么不能使用0,尽管在那种情况下,最好是完全删除数据集的Z意识以避免混淆。


2
+1大多数ESRI产品以及大多数其他软件会将dBase数字字段中的空值读取为零。这是致命的,因此在.dbf文件(包括shapefile)中使用显式null编码通常很重要。
ub

4

我遇到的大多数栅格都将-9999.0用于浮点数据,这是一个约定,当您为没有nodata / dummy值的图像编写代码时,GDAL将使用-dbl_inf。8位RGB通常使用0 0 0或255 255 255,或具有alpha或掩码通道。

GML 3涵盖范围(目前尚无大量支持,但是在批准WCS 2规范时会有所改变)具有多个虚拟值,这些值以诸如“缺少”和“保留”之类的文本表示。

根据我的经验,任何默认设置都倾向于特定于域或特定于供应商。如果您是数据的生产者而不是消费者,请选择一个数字并坚持使用,并确保您的消费者知道它。


2

我会使用NaN,因为数学运算会产生其他NaN或引发异常。这样一来,您就可以明显地发现自己正在搞乱,因为您使用的是虚假值


2
NaN可以很好地进行计算(使用浮点值),但是您不能以许多数据库或GIS数据格式存储NaN
geographika

2
+1 @geographika是正确的。但是,关于使用将使计算混乱的值的观点是一个很好的观点。
ub

对于整数,您可以使用NaN:numeric_limits <int> :: quiet_NaN()
Ragi Yaser Burhum 2011年

另外,我的建议是使用NaN,因为它与几何图形内部的Z值有关。因此,无论该值是否在数据库中,恕我直言,都应使用几何体对其进行序列化-这样它才可以正常工作……
Ragi Yaser Burhum 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.