美文网首页
ArcGIS|属性空值

ArcGIS|属性空值

作者: 12ebfd5642fe | 来源:发表于2016-06-02 17:49 被阅读2649次

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

    相关文章

      网友评论

          本文标题:ArcGIS|属性空值

          本文链接:https://www.haomeiwen.com/subject/muskdttx.html