ArcGIS|属性空值

数据中难免会出现空值,空值也分为几种情况,而在不同的数据格式里各种空值又有不同的效果,查询起来情况比较复杂。因此,我力求整理一个大致的思路,涵盖多数问题。我也知道这种基础的横向对比价值不高,空洞乏味,但历史欠账总是要还的,权当练习吧。(本文的测试环境为ArcGIS Desktop 10.3.1)

首先定义一些名称,否则就不能很好的交流了:

  1. 默认空值:创建记录时,属性字段带有的默认值,通常在ArcMap中显示为<Null>;
  2. 空值:为字段赋值后,再删除,得到的值,通常在ArcMap中什么都不显示;
  3. 空格字符:在字符字段中输入一个空格符,在ArcMap中看上去什么都没有,但编辑时可以选中一个字符单位。

希望解决的问题:

  1. 不同字段类型默认空值如何显示,如何设置查询条件;
  2. 空值的情况又如何;
  3. 填入特殊字符,如‘<Null>’、‘Null’、空格字符等,使用时是否会产生混淆;
  4. 如何恢复默认空值;
  5. 大小写是否敏感;
  6. 其他常见的注意事项。

经过测试,总结几个基本通用的规律:

  1. is null或 is not null可以查询默认空值,不区分大小写;
  2. =” 或 <>”可以查询空值;=’ ‘或 <>’ ‘查询空格字符;
  3. =’xx’或 <>’xx’查询字符串,例如: =’Null’或 ='<Null>’;
  4. 用<>’xx’查询时不返回默认空的记录,需要同时用or is null条件;
  5. 数值型字段通常没有空值,用默认空值表示;
  6. 默认空值在代码中的表示与语言相关,如C#中用DBNull,Python中用None。

另外的小Bug:属性值如果为'<Null>’,删除属性时ArcMap会以为没有做修改无法保存,先改成其他字符保存后,再删除则可。

各种数据格式的一些特殊情况:

shapefile (大,”Field”,默认,Trim):

  • 查询时区分大小写;
  • 查询时字段名须带双引号””;
  • 不存在默认空值和空值,数值型用0代表,字符型用空格字符代表,因此 is null等方法会报错;
  • 空格字符和空值会混淆,= ”和 = ‘ ‘的效果一样会把俩都查出来,<>也是如此。多个空格或以空格结尾的字符串也有类似情况,看来是自带TrimEnd功能。

PGDB ([Field],Trim):

  • 查询时不区分大小写;
  • 查询时字段名须带中括号[];
  • 和shapefile一样混淆空格字符和空值。

FGDB (大,Trim):

  • 查询时区分大小写;
  • 和shapefile一样混淆空格字符和空值。

ArcSDE for Oracle(ArcSDE 10.0 + Oracle 11.2.0.3) (大,空值):

  • 查询时区分大小写;
  • 不会产生空值,删除字符后会变成默认空值,因此 = ”没有意义。
  • ‘<Null>’字符会被当作会默认空值,IS NULL会选中两者;但='<Null>’没有效果,什么都选不中;
  • 在C# + AO 中为字段赋值时,用null,DBNull.Value 或 “”是一样的效果。

~~###ArcSDE for SQL Server(待测试)~~

转载自:https://blog.csdn.net/weixin_33910759/article/details/86819886

You may also like...