com.supermap.analyst.spatialanalyst

类 ReclassMappingTable

  • java.lang.Object
    • com.supermap.data.InternalHandle
      • com.supermap.data.InternalHandleDisposable
        • com.supermap.analyst.spatialanalyst.ReclassMappingTable
  • 所有已实现的接口:
    IDisposable


    public class ReclassMappingTable
    extends com.supermap.data.InternalHandleDisposable
    栅格重分级映射表类。提供对源栅格数据集进行单值或范围的重分级,且包含对无值数据和未分级单元格的处理。

    重分级映射表,用于说明源数据和结果数据值之间的对应关系。这种对应关系由这几部分内容表达:重分级类型、重分级区间集合、无值和未分级数据的处理。

    • 重分级的类型
    • 重分级有两种类型,单值重分级和范围重分级。单值重分级是对指定的某些单值进行重新赋值,如将源栅格中值为100的单元格,赋值为1输出到结果栅格中;范围重分级将一个区间内的值重新赋值为一个值,如将源栅格中栅格值在[100,500)范围内的单元格,重新赋值为200输出到结果栅格中。通过该类的 setReclassType 方法来设置重分级类型。

    • 重分级区间集合
    • 重分级的区间集合规定了源栅格某个栅格值或者一定区间内的栅格值与重分级后的新值的对应关系,通过该类的 setSegments 方法设置。该集合由若干重分级区间(ReclassSegment)对象构成。该对象用于设置每个重分级区间的信息,包括要重新赋值的源栅格单值或区间的起始值、终止值,重分级区间的类型,以及栅格重分级的区间值或源栅格单值对应的新值等,详见ReclassSegment 类。

    • 无值和未分级数据的处理
    • 对源栅格数据中的无值,可以通过该类的 setRetainNoValue 方法来设置是否保持无值,如果为 false,即不保持为无值,则可通过 setChangeNoValueTo 方法为无值数据指定一个值。

      对在重分级映射表中未涉及的栅格值,可以通过该类的 setRetainMissingValue 方法来设置是否保持其原值,如果为 false,即不保持原值,则可通过 setChangeMissingValueTo 方法为其指定一个值。

    此外,该类还提供了将重分级映射表数据导出为 XML 字符串及 XML 文件的方法和导入 XML 字符串或文件的方法。当多个输入的栅格数据需要应用相同的分级范围时,可以将其导出为重分级映射表文件,当对后续数据进行分级时,直接导入该重分级映射表文件,进而可以批量处理导入的栅格数据。有关栅格重分级映射表文件的格式和标签含义请参见 toXmlFile 方法。

    示范代码:
    请参见 reclass 类的示例。
    • 构造器详细资料

      • ReclassMappingTable

        public ReclassMappingTable()
        构造一个新的 ReclassMappingTable 对象。
      • ReclassMappingTable

        public ReclassMappingTable(ReclassMappingTable reclassMappingTable)
        根据给定的 ReclassMappingTable 对象构造一个与其完全相同的新对象。
        参数:
        reclassMappingTable - 给定的栅格重分级映射表对象。
    • 方法详细资料

      • toXml

        public String toXml()
        将映射表数据输出为 XML 字符串。
        返回:
        映射表数据的 XML 字符串。
      • toXmlFile

        public boolean toXmlFile(String xmlFileName)
        将重分级映射表数据存储为XML格式的映射表文件。

        该方法用于将对重分级映射表对象的参数设置写入一个 XML 文件,称为栅格重分级映射表文件,其后缀名为 .xml,下面是一个栅格重分级映射表文件的例子:

        重分级映射表文件中各标签的含义如下:

        • <SmXml:ReclassType></SmXml:ReclassType> 标签:重分级类型。1表示单值重分级,2表示范围重分级。
        • <SmXml:SegmentCount></SmXml:SegmentCount> 标签:重分级区间集合,count 参数表示重分级的级数。
        • <SmXml:Range></SmXml:Range> 标签:重分级区间,重分级类型为单值重分级,格式为:区间起始值--区间终止值:新值-区间类型。对于区间类型,0表示左开右闭,1表示左闭右开。

          <SmXml:Unique></SmXml:Unique> 标签:重分级区间,重分级类型为范围重分级,格式为:原值:新值。

        • <SmXml:RetainMissingValue></SmXml:RetainMissingValue> 标签:未分级单元格是否保留原值。0表示不保留,1表示保留。
        • <SmXml:RetainNoValue></SmXml:RetainNoValue> 标签:无值数据是否保持无值。0表示不保持,0表示不保持。
        • <SmXml:ChangeMissingValueTo></SmXml:ChangeMissingValueTo> 标签:为未分级单元格的指定的值。
        • <SmXml:ChangeNoValueTo></SmXml:ChangeNoValueTo> 标签:为无值数据的指定的值。

        导出为 XML 文件后,当其他栅格数据需要应用相同的分级范围时,可以使用 fromXmlFile 方法导入重分级映射表数据。

        参数:
        xmlFileName - 指定的 XML 格式的映射表文件名称。
        返回:
        一个布尔值,表示存储是否成功,如果存储成功,返回 true,否则返回 false。
      • fromXml

        public boolean fromXml(String xmlString)
        将存储在XML格式字符串中的参数值导入到映射表数据中。
        参数:
        xmlString - 指定的XML格式字符串。
        返回:
        一个布尔值,表示导入是否成功,如果导入成功,返回 true,否则返回 false。
      • fromXmlFile

        public boolean fromXmlFile(String xmlFileName)
        从已保存的XML格式的映射表文件中导入映射表数据。

        有关栅格重分级映射表文件的格式和标签含义请参见 toXmlFile 方法。

        参数:
        xmlFileName - 指定的 XML 格式的映射表文件。
        返回:
        一个布尔值,表示导入是否成功,如果导入成功,返回 true,否则返回 false。
      • getSegmentCount

        public int getSegmentCount()
        返回重分级的级数。

        在输入分段点和新值之前,必须设置分级数,否则输入的新值将无效。

        返回:
        重分级的级数。
      • getSegments

        public ReclassSegment[] getSegments()
        返回重分级区间集合。

        每一个 ReclassSegment 就是一个区间范围或者是一个旧值和一个新值的对应关系。

        返回:
        重分级区间集合。
      • setSegments

        public void setSegments(ReclassSegment[] segments)
        设置重分级区间集合。
        参数:
        segments - 重分级区间集合。
      • getReclassType

        public ReclassType getReclassType()
        返回栅格重分级类型。
        返回:
        栅格重分级类型。
        默认值:
        默认值为 UNIQUE
      • setReclassType

        public void setReclassType(ReclassType reclassType)
        设置栅格重分级类型。
        参数:
        reclassType - 栅格重分级类型。
      • isRetainMissingValue

        public boolean isRetainMissingValue()
        返回源数据集中不在指定区间或单值之外的数据是否保留原值。
        返回:
        源数据集中不在指定区间或单值之外的数据是否保留原值。
      • setRetainMissingValue

        public void setRetainMissingValue(boolean retainMissingValue)
        设置源数据集中不在指定区间或单值之外的数据是否保留原值。
        参数:
        retainMissingValue - 源数据集中不在指定区间或单值之外的数据是否保留原值。
      • getChangeMissingValueTo

        public double getChangeMissingValueTo()
        返回不在指定区间或单值内的栅格的指定值。
        返回:
        不在指定区间或单值内的栅格的指定值。
      • setChangeMissingValueTo

        public void setChangeMissingValueTo(double changeMissingValueTo)
        设置不在指定区间或单值内的栅格的指定值。

        如果 setRetainNoValue() 设置为 true,则改设置无效。

        参数:
        changeMissingValueTo - 不在指定区间或单值内的栅格的指定值。
      • isRetainNoValue

        public boolean isRetainNoValue()
        返回是否将源数据集中的无值数据保持为无值。
        返回:
        是否保留源数据集中不在指定区间或单值内的栅格取值。
      • setRetainNoValue

        public void setRetainNoValue(boolean retainNoValue)
        设置是否将源数据集中的无值数据保持为无值。

        当 setRetainNoValue 方法设置为 true 时,表示保持源数据集中的无值数据为无值;当 setRetainNoValue 方法设置为 false 时,表示将源数据集中的无值数据设置为指定的值(ReclassMappingTable.setChangeNoValueTo())。

        参数:
        retainNoValue - 是否保留源数据集中不在指定区间或单值内的栅格取值。
      • getChangeNoValueTo

        public double getChangeNoValueTo()
        返回无值数据的指定值。
        返回:
        无值数据的指定值。
      • setChangeNoValueTo

        public void setChangeNoValueTo(double changeNoValueTo)
        设置无值数据的指定值。

        setRetainNoValue() 设置为 false 时,该设置有效;否则,无效。

        参数:
        changeNoValueTo - 无值数据的指定值。
      • dispose

        public void dispose()
        释放 ReclassMappingTable 对象所占用的本地资源。

Copyright © 2021–2024 SuperMap. All rights reserved.