iobjectspy package

Submodules

iobjectspy.analyst module

ananlyst 模块提供了常用的空间数据处理和分析的功能,用户使用analyst 模块可以进行缓冲区分析( create_buffer() )、叠加分析( overlay() )、 创建泰森多边形( create_thiessen_polygons() )、拓扑构面( topology_build_regions() )、密度聚类( kernel_density() )、 插值分析( interpolate() ),栅格代数运算( expression_math_analyst() )等功能。

在 analyst 模块的所有接口中,对输入数据参数要求为数据集( Dataset , DatasetVector , DatasetImage , DatasetGrid )的参数, 都接受直接输入一个数据集对象(Dataset)或数据源别名与数据集名称的组合(例如,'alias/dataset_name', 'alias\dataset_name'),也支持数据源连接信息与数据集名称的组合(例如,'E:/data.udb/dataset_name')。

  • 支持设置数据集

    >>> ds = Datasource.open('E:/data.udb')
    >>> create_buffer(ds['point'], 10, 10, unit='Meter', out_data='E:/buffer_out.udb')
    
  • 支持设置数据集别名和数据集名称组合

    >>> create_buffer(ds.alias + '/point' + , 10, 10, unit='Meter', out_data='E:/buffer_out.udb')
    >>> create_buffer(ds.alias + '\\point', 10, 10, unit='Meter', out_data='E:/buffer_out.udb')
    >>> create_buffer(ds.alias + '|point', 10, 10, unit='Meter', out_data='E:/buffer_out.udb')
    
  • 支持设置 udb 文件路径和数据集名称组合

    >>> create_buffer('E:/data.udb/point', 10, 10, unit='Meter', out_data='E:/buffer_out.udb')
    
  • 支持设置数据源连接信息和数据集名称组合,数据源连接信息包括 dcf 文件、xml 字符串等,具体参考 DatasourceConnectionInfo.make()

    >>> create_buffer('E:/data_ds.dcf/point', 10, 10, unit='Meter', out_data='E:/buffer_out.udb')
    

注解

当输入的是数据源信息时,程序会自动打开数据源,但是接口运行结束时不会自动关闭数据源,也就是打开后的数据源会存在当前工作空间中

在 analyst 模块中所有接口中,对输出数据参数要求为数据源( Datasource )的,均接受 Datasource 对象,也可以为 DatasourceConnectionInfo 对象, 同时,也支持当前工作空间下数据源的别名,也支持 UDB 文件路径,DCF 文件路径等。

  • 支持设置 udb 文件路径

    >>> create_buffer('E:/data.udb/point', 10, 10, unit='Meter', out_data='E:/buffer_out.udb')
    
  • 支持设置数据源对象

    >>> ds = Datasource.open('E:/buffer_out.udb')
    >>> create_buffer('E:/data.udb/point', 10, 10, unit='Meter', out_data=ds)
    >>> ds.close()
    
  • 支持设置数据源别名

    >>> ds_conn = DatasourceConnectionInfo('E:/buffer_out.udb', alias='my_datasource')
    >>> create_buffer('E:/data.udb/point', 10, 10, unit='Meter', out_data='my_datasource')
    

注解

如果输出数据的参数输入的是数据源连接信息或 UDB 文件路径等,程序会自动打开数据源,如果是 UDB 数据源而本地不存在,还会自动新建一个UDB数据源,但需要确保UDB数据源所在的文件目录存在而且可写。 在功能完成后,如果数据源是由程序自动打开或创建的,会被自动关闭掉(这里与输入数据为Dataset不同,输入数据中被自动打开的数据源不会自动关闭)。所以,对于有些接口 输出结果为数据集的,就会返回结果数据集的名称,如果传入的是数据源对象,返回的便是结果数据集。

iobjectspy.analyst.create_buffer(input_data, distance_left, distance_right=None, unit=None, end_type=None, segment=24, is_save_attributes=True, is_union_result=False, out_data=None, out_dataset_name='BufferResult', progress=None)

创建矢量数据集或记录集的缓冲。

缓冲区分析是围绕空间对象,使用一个或多个与这些对象的距离值(称为缓冲半径)作为半径,生成一个或多个区域的过程。缓冲区也可以理解为空间对象的一种影响或服务范围。

缓冲区分析的基本作用对象是点、线、面。SuperMap 支持对二维点、线、面数据集(或记录集)和网络数据集进行缓冲区分析。其中,对网络数据集进行缓冲区分析时,是对其中的弧段作缓冲区。缓冲区的类型可以分析单重缓冲区(或称简单缓冲区)和多重缓冲区。下面以简单缓冲区为例分别介绍点、线、面的缓冲区。

  • 点缓冲区 点的缓冲区是以点对象为圆心,以给定的缓冲距离为半径生成的圆形区域。当缓冲距离足够大时,两个或多个点对象的缓冲区可能有重叠。选择合并缓冲区时,重叠部分将被合并,最终得到的缓冲区是一个复杂面对象。

    ../_images/PointBuffer.png
  • 线缓冲区 线的缓冲区是沿线对象的法线方向,分别向线对象的两侧平移一定的距离而得到两条线,并与在线端点处形成的光滑曲线(也可以形成平头)接合形成的封闭区域。同样,当缓冲距离足够大时,两个或多个线对象的缓冲区可能有重叠。合并缓冲区的效果与点的合并缓冲区相同。

    ../_images/LineBuffer.png

    线对象两侧的缓冲宽度可以不一致,从而生成左右不等缓冲区;也可以只在线对象的一侧创建单边缓冲区。此时只能生成平头缓冲区。

    ../_images/LineBuffer_1.png
  • 面缓冲区

    面的缓冲区生成方式与线的缓冲区类似,区别是面的缓冲区仅在面边界的一侧延展或收缩。当缓冲半径为正值时,缓冲区向面对象边界的外侧扩展;为负值时,向边界内收缩。同样,当缓冲距离足够大时,两个或多个线对象的缓冲区可能有重叠。也可以选择合并缓冲区,其效果与点的合并缓冲区相同。

    ../_images/RegionBuffer.png
  • 多重缓冲区是指在几何对象的周围,根据给定的若干缓冲区半径,建立相应数据量的缓冲区。对于线对象,还可以建立单边多重缓冲区,但注意不支持对网络数据集创建。

    ../_images/MultiBuffer.png

缓冲区分析在 GIS 空间分析中经常用到,且往往结合叠加分析来共同解决实际问题。缓冲区分析在农业、城市规划、生态保护、防洪抗灾、军事、地质、环境等诸多领域都有应用。

例如扩建道路时,可根据道路扩宽宽度对道路创建缓冲区,然后将缓冲区图层与建筑图层叠加,通过叠加分析查找落入缓冲区而需要被拆除的建筑;又如,为了保护环境和耕地,可对湿地、森林、草地和耕地进行缓冲区分析,在缓冲区内不允许进行工业建设。

说明:

  • 对于面对象,在做缓冲区分析前最好先经过拓扑检查,排除面内相交的情况,所谓面内相交,指的是面对象自身相交,如图所示,图中数字代表面对象的节点顺序。
../_images/buffer_regioninter.png
  • 对“负半径”的说明

    • 如果缓冲区半径为数值型,则仅面数据支持负半径;
    • 如果缓冲区半径为字段或字段表达式,如果字段或字段表达式的值为负值,对于点、线数据取其绝对值;对于面数据,若合并缓冲区,则取其绝对值,若不合并,则按照负半径处理。
参数:
  • input_data (Recordset or DatasetVector or str) -- 指定的创建缓冲区的源矢量记录集是数据集。支持点、线、面数据集和记录集。
  • distance_left (float or str) -- (左)缓冲区的距离。如果为字符串,则表示(左)缓冲距离所在的字段,即每个几何对象创建缓冲区时使用字段中存储的值作为缓冲半径。对于线对象,表示左缓冲区半径,对于点和面对象,表示缓冲区半径。
  • distance_right (float or str) -- 右缓冲区的距离,如果为字符串,则表示右缓冲距离所在的字段,即每个线几何对象创建缓冲区时使用字段中存储的值作为右缓冲半径。该参数只对线对象有效。
  • unit (Unit or str) -- 缓冲区距离半径单位,只支持距离单位,不支持角度和弧度单位。
  • end_type (BufferEndType or str) -- 缓冲区端点类型。用以区分线对象缓冲区分析时的端点是圆头缓冲还是平头缓冲。对于点或面对象,只支持圆头缓冲
  • segment (int) -- 半圆弧线段个数,即用多少个线段来模拟一个半圆,必须大于等于4。
  • is_save_attributes (bool) -- 是否保留进行缓冲区分析的对象的字段属性。当合并结果面数据集时,该参数无效。即当 isUnion 参数为 false 时有效。
  • is_union_result (bool) -- 是否合并缓冲区,即是否将源数据各对象生成的所有缓冲区域进行合并运算后返回。对于面对象而言,要求源数据集中的面对象不相交。
  • out_data (Datasource) -- 存储结果数据的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetVector or str

iobjectspy.analyst.overlay(source_input, overlay_input, overlay_mode, source_retained=None, overlay_retained=None, tolerance=1e-10, out_data=None, out_dataset_name='OverlayOutput', progress=None)

叠加分析用于对输入的两个数据集或记录集之间进行各种叠加分析运算,如裁剪(clip)、擦除(erase)、合并(union)、相交(intersect)、同一(identity)、 对称差(xOR)和更新(update)。叠加分析是 GIS 中的一项非常重要的空间分析功能。是指在统一空间参考系统下,通过对两个数据集进行的一系列集合运算, 产生新数据集的过程。叠加分析广泛应用r于资源管理、城市建设评估、国土管理、农林牧业、统计等领域。因此,通过此叠加分析类可实现对空间数据的加工和分析, 提取用户需要的新的空间几何信息,并且对数据的属性信息进行处理。

  • 进行叠加分析的两个数据集中,被称作输入数据集(在 SuperMap GIS 中称作第一数据集)的那个数据集,其类型可以是点、线、面等;另一个被称作叠加数据集(在 SuperMap GIS 中称作第二数据集)的数据集,其类型一般是面类型。
  • 应注意面数据集或记录集中本身应避免包含重叠区域,否则叠加分析结果可能出错。
  • 叠加分析的数据必须为具有相同地理参考的数据,包括输入数据和结果数据。
  • 在叠加分析的数据量较大的情况下,需对结果数据集创建空间索引,以提高数据的显示速度
  • 所有叠加分析的结果都不考虑数据集的系统字段
需要注意:
  • 当 source_input 为数据集时,overlay_input 可以为数据集、记录集和面几何对象列表
  • 当 source_input 为记录集时,overlay_input 可以为数据集、记录集和面几何对象列表
  • 当 source_input 为几何对象列表时,overlay_input 可以为数据集、记录集和面几何对象列表
  • 当 source_input 为几何对象列表时,必须设置有效的结果数据源信息
参数:
  • source_input (DatasetVector or Recordset or list[Geometry]) -- 叠加分析的源数据,可以是数据集、记录集和几何对象列表。当叠加分析模式为 update、xor 和 union 时,源数据只支持面数据。 当叠加分析模式为 clip、intersect、erase 和 identity 时,源数据支持点线面。
  • overlay_input (DatasetVector or Recordset or list[Geometry]) -- 参与计算的叠加数据,必须为面类型数据,可以是数据集、记录集和几何对象列表
  • overlay_mode (OverlayMode or str) -- 叠加分析模式
  • source_retained (list[str] or str) -- 源数据集或记录集中需要保留的字段。当 source_retained 为 str 时,支持设置 ',' 分隔多个字段,例如 "field1,field2,field3"
  • overlay_retained (list[str] or str) -- 参与计算的叠加数据需要保留的字段。当 overlay_retained 为 str 时,支持设置 ',' 分隔多个字段,例如 "field1,field2,field3"。 对于裁剪 (CLIP) 和擦除 (ERASE) 无效
  • tolerance (float) -- 叠加分析的容限值
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据保存的数据源。如果为空,则结果数据集保存到叠加分析源数据集所在的数据源。
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetVector or str

iobjectspy.analyst.dissolve(input_data, dissolve_type, dissolve_fields, field_stats=None, attr_filter=None, is_null_value_able=True, is_preprocess=True, tolerance=1e-10, out_data=None, out_dataset_name='DissolveResult', progress=None)

融合是指将融合字段值相同的对象合并为一个简单对象或复杂对象。适用于线对象和面对象。子对象是构成简单对象和复杂对象的基本对象。简单对象由一个子对象组成, 即简单对象本身;复杂对象由两个或两个以上相同类型的子对象组成。

参数:
  • input_data (DatasetVector or str) -- 待融合的矢量数据集。必须为线数据集或面数据集。
  • dissolve_type (DissolveType or str) -- 融合类型
  • dissolve_fields (list[str] or str) -- 融合字段,融合字段的字段值相同的记录才会融合。当 dissolve_fields 为 str 时,支持设置 ',' 分隔多个字段,例如 "field1,field2,field3"
  • field_stats (list[tuple[str,StatisticsType]] or list[tuple[str,str]] or str) -- 统计字段名称和对应的统计类型。stats_fields 为 list,list中每个元素为一个tuple,tuple的第一个元素为被统计的字段,第二个元素为统计类型。 当 stats_fields 为 str 时,支持设置 ',' 分隔多个字段,例如 "field1:SUM, field2:MAX, field3:MIN"
  • attr_filter (str) -- 数据集融合时对象的过滤表达式
  • tolerance (float) -- 融合容限
  • is_null_value_able (bool) -- 是否处理融合字段值为空的对象
  • is_preprocess (bool) -- 是否进行拓扑预处理
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据保存的数据源。如果为空,则结果数据集保存到输入数据集所在的数据源。
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetVector or str

>>> result = dissolve('E:/data.udb/zones', 'SINGLE', 'SmUserID', 'Area:SUM', tolerance=0.000001, out_data='E:/dissolve_out.udb')
iobjectspy.analyst.aggregate_points(input_data, min_pile_point, distance, unit=None, class_field=None, out_data=None, out_dataset_name='AggregateResult', progress=None)

对点数据集进行聚类,使用密度聚类算法,返回聚类后的类别或同一簇构成的多边形。 对点集合进行空间位置的聚类,使用密度聚类方法 DBSCAN,它能将具有足够高密度的区域划分为簇,并可以在带有噪声的空间数据中发现任意形状的聚类。它定义 簇为密度相连的点的最大集合。DBSCAN 使用阈值 e 和 MinPts 来控制簇的生成。其中,给定对象半径 e 内的区域称为该对象的 e一邻域。如果一个对象的 e一邻域至少包含最小数目 MinPtS 个对象,则称该对象为核心对象。给定一个对象集合 D,如果 P 是在 Q 的 e一邻域内,而 Q 是一个核心对象,我们说对象 P 从对象 Q 出发是直接密度可达的。DBSCAN 通过检查数据里中每个点的 e-领域来寻找聚类,如果一个点 P 的 e-领域包含多于 MinPts 个点,则创建一个 以 P 作为核心对象的新簇,然后,DBSCAN反复地寻找从这些核心对象直接密度可达的对象并加入该簇,直到没有新的点可以被添加。

参数:
  • input_data (DatasetVector or str) -- 输入的点数据集
  • min_pile_point (int) -- 密度聚类点数目阈值,必须大于等于2。阈值越大表示能聚类为一簇的条件越苛刻。
  • distance (float) -- 密度聚类半径。
  • unit (Unit or str) -- 密度聚类半径的单位。
  • class_field (str) -- 输入的点数据集中用于保存密度聚类的结果聚类类别的字段,如果不为空,则必须是点数据集中合法的字段名称。 要求字段类型为INT16, INT32 或 INT64,如果字段名有效但不存在,将会创建一个 INT32 的字段。 参数有效,则会将聚类类别保存在此字段中。
  • out_data (Datasource or DatasourceConnectionInfo or st) -- 结果数据源信息,结果数据源信息不能与 class_field同时为空,如果结果数据源有效时,将会生成结果面对象。
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称,如果输入的结果数据源为空,将会返回一个布尔值,True 表示聚类成功,False 表示聚类失败。

返回类型:

DatasetVector or str or bool

>>> result = aggregate_points('E:/data.udb/point', 4, 100, 'Meter', 'SmUserID', out_data='E:/aggregate_out.udb')
iobjectspy.analyst.smooth_vector(input_data, smoothness, out_data=None, out_dataset_name=None, progress=None)

对矢量数据集进行光滑,支持线数据集、面数据集和网络数据集

  • 光滑的目的

    当折线或多边形的边界的线段过多时,就可能影响对原始特征的描述,不利用进一步的处理或分析,或显示和打印效果不够理想,因此需要对数据简化。简化的方法 一般有重采样(resample_vector())和光滑。光滑是通过增加节点的方式使用曲线或直线段来代替原始折线的方法。需要注意,对折线进行光滑后, 其长度通常会变短,折线上线段的方向也会发生明显改变,但两个端点的相对位置不会变化;面对象经过光滑后,其面积通常会变小。

  • 光滑方法与光滑系数的设置

    该方法采用 B 样条法对矢量数据集进行光滑。有关 B 样条法的介绍可参见 SmoothMethod 类。光滑系数(方法中对应 smoothness 参数)影响着光滑的程度, 光滑系数越大,结果数据越光滑。光滑系数的建议取值范围为[2,10]。该方法支持对线数据集、面数据集和网络数据集进行光滑。

    • 对线数据集设置不同光滑系数的光滑效果:
    ../_images/Smooth_1.png
    • 对面数据集设置不同光滑系数的光滑效果:
    ../_images/Smooth_2.png
参数:
  • input_data (DatasetVector or str) -- 需要进行光滑处理的数据集,支持线数据集、面数据集和网络数据集
  • smoothness (int) -- 指定的光滑系数。取大于等于 2 的值有效,该值越大,线对象或面对象边界的节点数越多,也就越光滑。建议取值范围为[2,10]。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据源所在半径,如果此参数为空,将直接对原始数据做光滑,也就是会改变原始数据。如果此参数不为空,将会先复制原始数据到此数据源中, 再对复制得到的数据集进行光滑处理。out_data 所指向数据源可以与源数据集所在的数据源相同。
  • out_dataset_name (str) -- 结果数据集名称,当 out_data 不为空时才有效。
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetVector or str

iobjectspy.analyst.resample_vector(input_data, distance, resample_type=VectorResampleType.RTBEND, is_preprocess=True, tolerance=1e-10, is_save_small_geometry=False, out_data=None, out_dataset_name=None, progress=None)

对矢量数据集进行重采样,支持线数据集、面数据集和网络数据集。 矢量数据重采样是按照一定规则剔除一些节点,以达到对数据进行简化的目的(如下图所示), 其结果可能由于使用不同的重采样方法而不同。SuperMap 提供了两种重采样方法,具体参考 VectorResampleType

../_images/VectorResample.png

该方法可以对线数据集、面数据集和网络数据集进行重采样。对面数据集重采样时,实质是对面对象的边界进行重采样。对于多个面对象的公共边界,如果进行了 拓扑预处理只对其中一个多边形的该公共边界重采样一次,其他多边形的该公共边界会依据该多边形重采样的结果进行调整使之贴合,因此不会出现缝隙。

注意: 重采样容限过大时,可能影响数据正确性,如出现两多边形的公共边界处出现相交的情况。

参数:
  • input_data (DatasetVector or str) -- 需要进行重采样的矢量数据集,支持线数据集、面数据集和网络数据集
  • distance (float) -- 设置重采样距离。单位与数据集坐标系单位相同。重采样距离可设置为大于 0 的浮点型数值。但如果设置的值小于默认值,将使用默认值。设置的重采样容限值越大,采样结果数据越简化
  • resample_type (VectorResampleType or str) -- 重采样方法。重采样支持光栏采样算法和道格拉斯算法。具体参考 VectorResampleType 。默认使用光栏采样。
  • is_preprocess (bool) -- 是否进行拓扑预处理。只对面数据集有效,如果数据集不进行拓扑预处理,可能会导致缝隙,除非能确保数据中两个相邻面公共线部分的节点坐标完全一致。
  • tolerance (float) -- 进行拓扑预处理时的节点捕捉容限,单位与数据集单位相同。
  • is_save_small_geometry (bool) -- 是否保留小对象。小对象是指面积为0的对象,重采样过程有可能产生小对象。true 表示保留小对象,false 表示不保留。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据源所在半径,如果此参数为空,将直接对原始数据做采样,也就是会改变原始数据。如果此参数不为空,将会先复制原始数据到此数据源中, 再对复制得到的数据集进行采样处理。out_data 所指向数据源可以与源数据集所在的数据源相同。
  • out_dataset_name (str) -- 结果数据集名称,当 out_data 不为空时才有效。
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetVector or str

iobjectspy.analyst.create_thiessen_polygons(input_data, clip_region, field_stats=None, out_data=None, out_dataset_name=None, progress=None)

创建泰森多边形。 荷兰气候学家 A.H.Thiessen 提出了一种根据离散分布的气象站的降雨量来计算平均降雨量的方法,即将所有相邻气象站连成三角形,作这些三角形各边的垂直平分线, 于是每个气象站周围的若干垂直平分线便围成一个多边形。用这个多边形内所包含的一个唯一气象站的降雨强度来表示这个多边形区域内的降雨强度,并称这个多边形为泰森多边形。

泰森多边形的特性:

  • 每个泰森多边形内仅含有一个离散点数据;
  • 泰森多边形内的点到相应离散点的距离最近;
  • 位于泰森多边形边上的点到其两边的离散点的距离相等。
  • 泰森多边形可用于定性分析、统计分析、邻近分析等。例如,可以用离散点的性质来描述泰森多边形区域的性质;可用离散点的数据来计算泰森多边形区域的数据
  • 判断一个离散点与其它哪些离散点相邻时,可根据泰森多边形直接得出,且若泰森多边形是n边形,则就与n个离散点相邻;当某一数据点落入某一泰森多边形中时,它与相应的离散点最邻近,无需计算距离。

邻近分析是 GIS 领域里又一个最为基础的分析功能之一,邻近分析是用来发现事物之间的某种邻近关系。邻近分析类所提供的进行邻近分析的方法都是实现泰森多边形的建立, 就是根据所提供的点数据建立泰森多边形,从而获得点之间的邻近关系。泰森多边形用于将点集合中的点的周围区域分配给相应的点,使位于这个点所拥有的区域(即该点所关联的泰森多边形) 内的任何地点离这个点的距离都要比离其他点的距离要小,同时,所建立的泰森多边形还满足上述所有的泰森多边形法的理论。

泰森多边形是如何创建的?利用下面的图示来理解泰森多边形建立的过程:

  • 对待建立泰森多边形的点数据进行由左向右,由上到下的扫描,如果某个点距离之前刚刚扫描过的点的距离小于给定的邻近容限值,那么分析时将忽略该点;
  • 基于扫描检查后符合要求的所有点建立不规则三角网,即构建 Delaunay 三角网;
  • 画出每个三角形边的中垂线,由这些中垂线构成泰森多边形的边,而中垂线的交点是相应的泰森多边形的顶点;
  • 用于建立泰森多边形的点的点位将成为相应的泰森多边形的锚点。
参数:
  • input_data (DatasetVector or Recordset or list[Point2D]) -- 输入的点数据,可以为点数据集、点记录集或 Point2D 的列表
  • clip_region (GeoRegion) -- 指定的裁剪结果数据的裁剪区域。该参数可以为空,如果为空,结果数据集将不进行裁剪
  • field_stats (list[str,StatisticsType] or list[str,str] or str) -- 统计字段名称和对应的统计类型,输入为一个list,list中存储的每个元素为tuple,tuple的大小为2,第一个元素为被统计的字段名称,第二个元素为统计类型。 当 stats_fields 为 str 时,支持设置 ',' 分隔多个字段,例如 "field1:SUM, field2:MAX, field3:MIN"
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果面对象所在的数据源。如果 out_data 为空,则会将生成的泰森多边形面几何对象直接返回
  • out_dataset_name (str) -- 结果数据集名称,当 out_data 不为空时才有效。
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

如果 out_data 为空,将返回 list[GeoRegion],否则返回结果数据集或数据集名称。

返回类型:

DatasetVector or str or list[GeoRegion]

iobjectspy.analyst.summary_points(input_data, radius, unit=None, stats=None, is_random_save_point=False, is_save_attrs=False, out_data=None, out_dataset_name=None, progress=None)

根据指定的距离抽稀点数据集,即用一个点表示指定距离范围内的所有点。 该方法支持不同的单位,并且可以选择点抽稀的方式,还可以对抽稀点原始点集做统计。 在结果数据集 resultDatasetName 中,会新建SourceObjID 和 StatisticsObjNum 两个字段。SourceObjID 字段存储抽稀后得到的点对象在原始数据集 中的 SmID, StatisticsObjNum 表示当前点所代表的所有点数目,包括被抽稀的点和其自身。

参数:
  • input_data (DatasetVector or str or Recordset) -- 待抽稀的点数据集
  • radius (float) -- 抽稀点的半径。任取一个坐标点,在此坐标点半径内的所有点坐标通过此点表示。需注意选择抽稀点的半径的单位。
  • unit (Unit or str) -- 抽稀点半径的单位。
  • stats (list[StatisticsField] or str) -- 对抽稀点原始点集做统计。需要设置统计的字段名,统计结果的字段名和统计模式。当该数组为空表示不做统计。当 stats 为 str 时,支持设置以 ';' 分隔多个 StatisticsField,每个 StatisticsField 使用 ',' 分隔 'source_field,stat_type,result_name',例如: 'field1,AVERAGE,field1_avg; field2,MINVALUE,field2_min'
  • is_random_save_point (bool) -- 是否随机保存抽稀点。True表示从抽稀半径范围内的点集中随机取一个点保存,False表示取抽稀半径范围内点集中距点集内所有点的距离之和最小的点。
  • is_save_attrs (bool) -- 是否保留属性字段
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据集所在的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetVector or str

iobjectspy.analyst.clip_vector(input_data, clip_region, is_clip_in_region=True, is_erase_source=False, out_data=None, out_dataset_name=None, progress=None)

对矢量数据集进行裁剪,结果存储为一个新的矢量数据集。

参数:
  • input_data (DatasetVector or str) -- 指定的要进行裁剪的矢量数据集,支持点、线、面、文本、CAD 数据集。
  • clip_region (GeoRegion) -- 指定的裁剪区域
  • is_clip_in_region (bool) -- 指定是否对裁剪区内的数据集进行裁剪。若为 True,则对裁剪区域内的数据集进行裁剪,若为 False ,则对裁剪区域外的数据集进行裁剪。
  • is_erase_source (bool) -- 指定是否擦除裁剪区域,若为 True,表示对裁剪区域进行擦除,若为 False,则不对裁剪区域进行擦除。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据集所在的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetVector or str

class iobjectspy.analyst.ProcessingOptions(pseudo_nodes_cleaned=False, overshoots_cleaned=False, redundant_vertices_cleaned=False, undershoots_extended=False, duplicated_lines_cleaned=False, lines_intersected=False, adjacent_endpoints_merged=False, overshoots_tolerance=1e-10, undershoots_tolerance=1e-10, vertex_tolerance=1e-10, filter_vertex_recordset=None, arc_filter_string=None, filter_mode=None)

基类:object

拓扑处理参数类。该类提供了关于拓扑处理的设置信息。

如果未通过 set_vertex_tolerance,set_overshoots_tolerance 和 set_undershoots_tolerance 方法设置节点容限、短悬线容限和长悬线容限, 或设置为0,系统将使用数据集的容限中相应的容限值进行处理

构造拓扑处理参数类

参数:
  • pseudo_nodes_cleaned (bool) -- 是否去除假结点
  • overshoots_cleaned (bool) -- 是否去除短悬线。
  • redundant_vertices_cleaned (bool) -- 是否去除冗余点
  • undershoots_extended (bool) -- 是否进行长悬线延伸。
  • duplicated_lines_cleaned (bool) -- 是否去除重复线
  • lines_intersected (bool) -- 是否进行弧段求交。
  • adjacent_endpoints_merged (bool) -- 是否进行邻近端点合并。
  • overshoots_tolerance (float) -- 短悬线容限,该容限用于在去除短悬线时判断悬线是否是短悬线。
  • undershoots_tolerance (float) -- 长悬线容限,该容限用于在长悬线延伸时判断悬线是否延伸。单位与进行拓扑处理的数据集单位相同。
  • vertex_tolerance (float) -- 节点容限。该容限用于邻近端点合并、弧段求交、去除假结点和去除冗余点。单位与进行拓扑处理的数据集单位相同。
  • filter_vertex_recordset (Recordset) -- 弧段求交的过滤点记录集,即此记录集中的点位置线段不进行求交打断。
  • arc_filter_string (str) -- 弧段求交的过滤线表达式。 在进行弧段求交时,通过该属性可以指定一个字段表达式,符合该表达式的线对象将不被打断。 该表达式是否有效,与 filter_mode 弧段求交过滤模式有关
  • filter_mode (ArcAndVertexFilterMode or str) -- 弧段求交的过滤模式。
adjacent_endpoints_merged

bool -- 是否进行邻近端点合并

arc_filter_string

str -- 弧段求交的过滤线表达式。 在进行弧段求交时,通过该属性可以指定一个字段表达式,符合该表达式的线对象将不被打断。该表达式是否有效,与 filter_mode 弧段求交过滤模式有关

duplicated_lines_cleaned

bool -- 是否去除重复线

filter_mode

ArcAndVertexFilterMode -- 弧段求交的过滤模式

filter_vertex_recordset

Recordset -- 弧段求交的过滤点记录集,即此记录集中的点位置线段不进行求交打断

lines_intersected

bool -- 是否进行弧段求交

overshoots_cleaned

bool -- 是否去除短悬线

overshoots_tolerance

float -- 短悬线容限,该容限用于在去除短悬线时判断悬线是否是短悬线

pseudo_nodes_cleaned

bool -- 是否去除假结点

redundant_vertices_cleaned

bool -- 是否去除冗余点

set_adjacent_endpoints_merged(value)

设置是否进行邻近端点合并。

如果多条弧段端点的距离小于节点容限,那么这些点就会被合并成为一个结点,该结点位置是原有点的几何平均(即 X、Y 分别为所有原有点 X、Y 的平均值)。

用于判断邻近端点的节点容限,可通过 set_vertex_tolerance() 设置,如果不设置或设置为0,将使用数据集的容限中的节点容限。

需要注意的是,如果有两个邻近端点,那么合并的结果就会是一个假结点,还需要进行去除假结点的操作。

参数:value (bool) -- 是否进行邻近端点合并
返回:ProcessingOptions
返回类型:self
set_arc_filter_string(value)

设置弧段求交的过滤线表达式。

在进行弧段求交时,通过该属性可以指定一个字段表达式,符合该表达式的线对象将不被打断。详细介绍请参见 set_lines_intersected() 方法。

参数:value (str) --
返回:ProcessingOptions
返回类型:self
set_duplicated_lines_cleaned(value)

设置是否去除重复线

重复线:两条弧段若其所有节点两两重合,则可认为是重复线。重复线的判断不考虑方向。

去除重复线的目的是为避免建立拓扑多边形时产生面积为零的多边形对象,因此,重复的线对象只应保留其中一个,多余的应删除。

通常,出现重复线多是由于弧段求交造成的。

参数:value (bool) -- 是否去除重复线
返回:ProcessingOptions
返回类型:self
set_filter_mode(value)

设置弧段求交的过滤模式

参数:value (ArcAndVertexFilterMode) -- 弧段求交的过滤模式
返回:ProcessingOptions
返回类型:self
set_filter_vertex_recordset(value)

设置弧段求交的过滤点记录集,即此记录集中的点位置线段不进行求交打断。

如果过滤点在线对象上或到线对象的距离在容限范围内,在过滤点到线对象的垂足位置上线对象不被打断。详细介绍请参见 set_lines_intersected() 方法。

注意:过滤点记录集是否有效,与 set_filter_mode() 方法设置的弧段求交过滤模式有关。可参见 ArcAndVertexFilterMode 类。

参数:value (Recordset) --
返回:ProcessingOptions
返回类型:self
set_lines_intersected(value)

设置是否进行弧段求交。

线数据建立拓扑关系之前,首先要进行弧段求交计算,根据交点分解成若干线对象,一般而言,在二维坐标系统中凡是与其他线有交点的线对象都需要从交点处打断,如十字路口。且此方法是后续错误处理方法的基础。 在实际应用中,相交线段完全打断的处理方式在很多时候并不能很好地满足研究需求。例如,一条高架铁路横跨一条公路,在二维坐标上来看是两个相交的线对象,但事实上并没有相交 ,如果打断将可能影响进一步的分析。在交通领域还有很多类似的实际场景,如河流水系与交通线路的相交,城市中错综复杂的立交桥等,对于某些相交点是否打断, 需要根据实际应用来灵活处理,而不能因为在二维平面上相交就一律打断。

这种情况可以通过设置过滤线表达式( set_arc_filter_string() )和过滤点记录集 ( set_vertex_filter_recordset() ) 来 确定哪些线对象以及哪些相交位置处不打断:

  • 过滤线表达式用于查询出不需要打断的线对象
  • 过滤点记录集中的点对象所在位置处不打断

这两个参数单独或组合使用构成了弧段求交的四种过滤模式,还有一种是不进行过滤。过滤模式通过 set_filter_mode() 方法设置。对于上面的例子,使用不同的过滤模式,弧段求交的结果也不相同。关于过滤模式的详细介绍请参阅 ArcAndVertexFilterMode 类。

注意:进行弧段求交处理时,可通过 set_vertex_tolerance() 方法设置节点容限(如不设置,将使用数据集的节点容限),用于判断过滤点是否有效。若过滤点到线对象的距离在设置的容限范围内,则线对象在过滤点到其的垂足位置上不被打断。

参数:value (bool) -- 是否进行弧段求交
返回:ProcessingOptions
返回类型:self
set_overshoots_cleaned(value)

设置是否去除短悬线。去除短悬线指如果一条悬线的长度小于悬线容限,则在进行去除短悬线操作时就会把这条悬线删除。通过 set_overshoots_tolerance 方法可以指定短悬线容限,如不指定则使用数据集的短悬线容限。

悬线:如果一个线对象的端点没有与其它任意一个线对象的端点相连,则这个端点称之为悬点。具有悬点的线对象称之为悬线。

参数:value (bool) -- 是否去除短悬线,True 表示去除,False 表示不去除。
返回:ProcessingOptions
返回类型:self
set_overshoots_tolerance(value)

设置短悬线容限,该容限用于在去除短悬线时判断悬线是否是短悬线。单位与进行拓扑处理的数据集单位相同。

“悬线”的定义:如果一个线对象的端点没有与其它任意一个线对象的端点相连,则这个端点称之为悬点。具有悬点的线对象称之为悬线。

参数:value (float) -- 短悬线容限
返回:ProcessingOptions
返回类型:self
set_pseudo_nodes_cleaned(value)

设置是否去除假结点。结点又称为弧段连接点,至少连接三条弧段的才可称为一个结点。如果弧段连接点只连接了一条弧段(岛屿的情况)或连接了两条弧段(即它是两条弧段的公共端点),则该结点被称为假结点

参数:value (bool) -- 是否去除假结点,True 表示去除,False 表示不去除。
返回:ProcessingOptions
返回类型:self
set_redundant_vertices_cleaned(value)

设置是否去除冗余点。任意弧段上两节点之间的距离小于节点容限时,其中一个即被认为是一个冗余点,在进行拓扑处理时可以去除。

参数:value (bool) -- : 是否去除冗余点,True 表示去除,False 表示不去除。
返回:ProcessingOptions
返回类型:self
set_undershoots_extended(value)

设置是否进行长悬线延伸。 如果一条悬线按其行进方向延伸了指定的长度(悬线容限)之后与某弧段有交点,则拓扑处理后会将该悬线自动延伸到某弧段上, 称为长悬线延伸。通过 set_undershoots_tolerance 方法可以指定长悬线容限,如不指定则使用数据集的长悬线容限。

参数:value (bool) -- 是否进行长悬线延伸
返回:ProcessingOptions
返回类型:self
set_undershoots_tolerance(value)

设置长悬线容限,该容限用于在长悬线延伸时判断悬线是否延伸。单位与进行拓扑处理的数据集单位相同。

参数:value (float) -- 长悬线容限
返回:ProcessingOptions
返回类型:self
set_vertex_tolerance(value)

设置节点容限。该容限用于邻近端点合并、弧段求交、去除假结点和去除冗余点。单位与进行拓扑处理的数据集单位相同。

参数:value (float) -- 节点容限
返回:ProcessingOptions
返回类型:self
undershoots_extended

bool -- 是否进行长悬线延伸

undershoots_tolerance

float -- 长悬线容限,该容限用于在长悬线延伸时判断悬线是否延伸。单位与进行拓扑处理的数据集单位相同

vertex_tolerance

float -- 节点容限。该容限用于邻近端点合并、弧段求交、去除假结点和去除冗余点。单位与进行拓扑处理的数据集单位相同

iobjectspy.analyst.topology_processing(input_data, pseudo_nodes_cleaned=True, overshoots_cleaned=True, redundant_vertices_cleaned=True, undershoots_extended=True, duplicated_lines_cleaned=True, lines_intersected=True, adjacent_endpoints_merged=True, overshoots_tolerance=1e-10, undershoots_tolerance=1e-10, vertex_tolerance=1e-10, filter_vertex_recordset=None, arc_filter_string=None, filter_mode=None, options=None, progress=None)

根据拓扑处理选项对给定的数据集进行拓扑处理。将直接修改原始数据。

参数:
  • input_data (DatasetVector or str) -- 指定的拓扑处理的数据集。
  • pseudo_nodes_cleaned (bool) -- 是否去除假结点
  • overshoots_cleaned (bool) -- 是否去除短悬线。
  • redundant_vertices_cleaned (bool) -- 是否去除冗余点
  • undershoots_extended (bool) -- 是否进行长悬线延伸。
  • duplicated_lines_cleaned (bool) -- 是否去除重复线
  • lines_intersected (bool) -- 是否进行弧段求交。
  • adjacent_endpoints_merged (bool) -- 是否进行邻近端点合并。
  • overshoots_tolerance (float) -- 短悬线容限,该容限用于在去除短悬线时判断悬线是否是短悬线。
  • undershoots_tolerance (float) -- 长悬线容限,该容限用于在长悬线延伸时判断悬线是否延伸。单位与进行拓扑处理的数据集单位相同。
  • vertex_tolerance (float) -- 节点容限。该容限用于邻近端点合并、弧段求交、去除假结点和去除冗余点。单位与进行拓扑处理的数据集单位相同。
  • filter_vertex_recordset (Recordset) -- 弧段求交的过滤点记录集,即此记录集中的点位置线段不进行求交打断。
  • arc_filter_string (str) -- 弧段求交的过滤线表达式。 在进行弧段求交时,通过该属性可以指定一个字段表达式,符合该表达式的线对象将不被打断。 该表达式是否有效,与 filter_mode 弧段求交过滤模式有关
  • filter_mode (ArcAndVertexFilterMode or str) -- 弧段求交的过滤模式。
  • options (ProcessingOptions or None) -- 拓扑处理参数类,如果 options 不为空,拓扑处理将会使用此参数设置的值。
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

是否拓扑处理成功

返回类型:

bool

iobjectspy.analyst.topology_build_regions(input_data, out_data=None, out_dataset_name=None, progress=None)

用于将线数据集或者网络数据集,通过拓扑处理来构建面数据集。在进行拓扑构面前,最好能使用拓扑处理 topology_processing() 对数据集进行拓扑处理。

参数:
  • input_data (DatasetVector or str) -- 指定的用于进行多边形拓扑处理的源数据集,只能是线数据集或网络数据集。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 用于存储结果数据集的数据源。
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetVector or str

iobjectspy.analyst.split_lines_by_regions(line_input, region_input, progress=None)

用面对象分割线对象。在提取线对象的左右多边形(即 pickupLeftRightRegions() 方法)操作前,需要调用该方法分割线对象,否则会出现一个线对象对应多个左(右)多边形的情形。 如下图:线对象 AB,如果不用面对象进行分割,则 AB 的左多边形有两个,分别为1,3;右多边形也有两个,分别为1和3,进行分割操作后,线对象 AB 分割为 AC 与 CB,此时 AC 与 CB 各自对应的左、右多边形分别只有一个。

../_images/SplitLinesByRegions.png
参数:
  • line_input (DatasetVector or Recordset) -- 指定的被分割的线记录集或数据集。
  • region_input (DatasetVector or Recordset) -- 指定的用于分割线记录集的面记录集或数据集。
  • progress (function) --
返回:

成功返回 True,失败返回 False。

返回类型:

bool

iobjectspy.analyst.update_attributes(source_data, target_data, spatial_relation, update_fields, interval=1e-06)

矢量数据集属性更新,将 source_data 中的属性,根据 spatial_relation 指定的空间关系,更新到 target_data 数据集中。 例如,有一份点数据和面数据,需要将点数据集中的属性值取平均值,然后将值写到包含点的面对象中,可以通过以下代码实现:

>>> result = update_attributes('ds/points', 'ds/zones', 'WITHIN', [('trip_distance', 'mean'), ('', 'count')])

spatial_relation 参数是指源数据集( source_data)对目标被更新数据集(target_data)的空间关系。

参数:
  • source_data (DatasetVector or str) -- 源数据集。源数据集提供属性数据,将源数据集中的属性值根据空间关系更新到目标数据集中。
  • target_data (DatasetVector or str) -- 目标数据集。被写入属性数据的数据集。
  • spatial_relation (SpatialQueryMode or str) -- 空间关系类型,源数据(查询对象)对目标数据(被查询对象)的空间关系,具体参考 SpatialQueryMode
  • update_fields (list[tuple(str,AttributeStatisticsMode)] or list[tuple(str,str)] or str) -- 字段统计信息,可能有多个源数据中对象与目标数据对象满足空间关系,需要对源数据的属性字段值进行汇总统计,将统计的结果写入到目标数据集中 为一个list,list中每个元素为一个 tuple,tuple的大小为2,tuple的第一个元素为被统计的字段名称,tuple的第二个元素为统计类型。
  • interval (float) -- 节点容限
返回:

是否属性更新成功。更新成功返回 True,否则返回 False。

返回类型:

bool

iobjectspy.analyst.pickup_border(input_data, is_preprocess=True, extract_ids=None, out_data=None, out_dataset_name=None, progress=None)

提取面(或线)的边界,并保存为线数据集。若多个面(或线)共边界(线段),该边界(线段)只会被提取一次。

不支持重叠面提取边界。

参数:
  • input_data (DatasetVector or str) -- 指定的面或线数据集。
  • is_preprocess (bool) -- 是否进行拓扑预处理
  • extract_ids (list[int] or str) -- 指定的面ID数组,可选参数,仅会提取给定ID数组对应的面对象边界。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 用于存储结果数据集的数据源。
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetVector or str

iobjectspy.analyst.simplify_building(source_data, width_threshold, height_threshold, save_failed=False, out_data=None, out_dataset_name=None)

面对象的直角多边形拟合 如果一串连续的节点到最小面积外接矩形的下界的距离大于 height_threshold,且节点的总宽度大于 width_threshold,则对连续节点进行拟合。

参数:
  • source_data (DatasetVector or str) -- 需要处理的面数据集
  • width_threshold (float) -- 点到最小面积外接矩形的左右边界的阈值
  • height_threshold (float) -- 点到最小面积外接矩形的上下边界的阈值
  • save_failed (bool) -- 面对象进行直角化失败时,是否保存源面对象,如果为 False,则结果数据集中不含失败的面对象。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 用于存储结果数据集的数据源。
  • out_dataset_name (str) -- 结果数据集名称
返回:

结果数据集或数据集名称

返回类型:

DatasetVector or str

class iobjectspy.analyst.PreprocessOptions(arcs_inserted=False, vertex_arc_inserted=False, vertexes_snapped=False, polygons_checked=False, vertex_adjusted=False)

基类:object

拓扑预处理参数类

构造拓扑预处理参数类对象

参数:
  • arcs_inserted (bool) -- 是否进行线段间求交插入节点
  • vertex_arc_inserted (bool) -- 否进行节点与线段间插入节点
  • vertexes_snapped (bool) -- 是否进行节点捕捉
  • polygons_checked (bool) -- 是否进行多边形走向调整
  • vertex_adjusted (bool) -- 是否进行节点位置调整
arcs_inserted

bool -- 是否进行线段间求交插入节点

polygons_checked

bool -- 是否进行多边形走向调整

set_arcs_inserted(value)

设置是否进行线段间求交插入节点

参数:value (bool) -- 是否进行线段间求交插入节点
返回:self
返回类型:PreprocessOptions
set_polygons_checked(value)

设置是否进行多边形走向调整

参数:value (bool) -- 是否进行多边形走向调整
返回:self
返回类型:PreprocessOptions
set_vertex_adjusted(value)

设置是否进行节点位置调整

参数:value (bool) -- 是否进行节点位置调整
返回:self
返回类型:PreprocessOptions
set_vertex_arc_inserted(value)

设置否进行节点与线段间插入节点

参数:value (bool) -- 否进行节点与线段间插入节点
返回:self
返回类型:PreprocessOptions
set_vertexes_snapped(value)

设置是否进行节点捕捉

参数:value (bool) -- 是否进行节点捕捉
返回:self
返回类型:PreprocessOptions
vertex_adjusted

bool -- 是否进行节点位置调整

vertex_arc_inserted

bool -- 否进行节点与线段间插入节点

vertexes_snapped

bool -- 是否进行节点捕捉

iobjectspy.analyst.preprocess(inputs, arcs_inserted=True, vertex_arc_inserted=True, vertexes_snapped=True, polygons_checked=True, vertex_adjusted=True, precisions=None, tolerance=1e-10, options=None, progress=None)

对给定的拓扑数据集进行拓扑预处理。

参数:
  • inputs (DatasetVector or list[DatasetVector] or str or list[str] or Recordset or list[Recordset]) -- 输入数据集或记录集,如果是数据集,不能是只读。
  • arcs_inserted (bool) -- 是否进行线段间求交插入节点
  • vertex_arc_inserted (bool) -- 否进行节点与线段间插入节点
  • vertexes_snapped (bool) -- 是否进行节点捕捉
  • polygons_checked (bool) -- 是否进行多边形走向调整
  • vertex_adjusted (bool) -- 是否进行节点位置调整
  • precisions (list[int]) -- 指定的精度等级数组。精度等级的值越小,代表对应记录集的精度越高,数据质量越好。在进行顶点捕捉时,低精度的记录集中的点将被捕捉到高精度记录集中的点的位置上。精度等级数组必须与要进行拓扑预处理的记录集集合元素数量相同并一一对应。
  • tolerance (float) -- 指定的处理时需要的容限控制。单位与进行拓扑预处理的记录集单位相同。
  • options (PreprocessOption) -- 拓扑预处理参数类对象,如果此参数不为空,将优先使用此参数为拓扑预处理参数
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

拓扑预处理是否成功

返回类型:

bool

iobjectspy.analyst.topology_validate(source_data, validating_data, rule, tolerance, validate_region=None, out_data=None, out_dataset_name=None, progress=None)

对数据集或记录集进行拓扑错误检查,返回含有拓扑错误的结果数据集。

该方法的 tolerance 参数用于指定使用 rule 参数指定的拓扑规则对数据集检查时涉及的容限。例如,使用“线内无打折”(TopologyRule.LINE_NO_SHARP_ANGLE)规则检查时,tolerance 参数设置的为尖角容限(一个角度值)。

对于以下拓扑检查算子在调用该方法对数据进行拓扑检查之前,建议先对相应的数据进行拓扑预处理(即调用 preprocess() 方法),否则检查的结果可能不正确:

  • REGION_NO_OVERLAP_WITH
  • REGION_COVERED_BY_REGION_CLASS
  • REGION_COVERED_BY_REGION
  • REGION_BOUNDARY_COVERED_BY_LINE
  • REGION_BOUNDARY_COVERED_BY_REGION_BOUNDARY
  • REGION_NO_OVERLAP_ON_BOUNDARY
  • REGION_CONTAIN_POINT
  • LINE_NO_OVERLAP_WITH
  • LINE_BE_COVERED_BY_LINE_CLASS
  • LINE_END_POINT_COVERED_BY_POINT
  • POINT_NO_CONTAINED_BY_REGION
  • POINT_COVERED_BY_LINE
  • POINT_COVERED_BY_REGION_BOUNDARY
  • POINT_CONTAINED_BY_REGION
  • POINT_BECOVERED_BY_LINE_END_POINT

对于以下拓扑检查算法需要设置参考数据集或记录集:

  • REGION_NO_OVERLAP_WITH
  • REGION_COVERED_BY_REGION_CLASS
  • REGION_COVERED_BY_REGION
  • REGION_BOUNDARY_COVERED_BY_LINE
  • REGION_BOUNDARY_COVERED_BY_REGION_BOUNDARY
  • REGION_CONTAIN_POINT
  • REGION_NO_OVERLAP_ON_BOUNDARY
  • POINT_BECOVERED_BY_LINE_END_POINT
  • POINT_NO_CONTAINED_BY_REGION
  • POINT_CONTAINED_BY_REGION
  • POINT_COVERED_BY_LINE
  • POINT_COVERED_BY_REGION_BOUNDARY
  • LINE_NO_OVERLAP_WITH
  • LINE_NO_INTERSECT_OR_INTERIOR_TOUCH
  • LINE_BE_COVERED_BY_LINE_CLASS
  • LINE_NO_INTERSECTION_WITH
  • LINE_NO_INTERSECTION_WITH_REGION
  • LINE_EXIST_INTERSECT_VERTEX
  • VERTEX_DISTANCE_GREATER_THAN_TOLERANCE
  • VERTEX_MATCH_WITH_EACH_OTHER
参数:
  • source_data (DatasetVector or str or Recordset) -- 被检查的数据集或记录集
  • validating_data (DatasetVector or str or Recordset) -- 用于检查的参考记录集。如果使用的拓扑规则不需要参考记录集,则设置为 None
  • rule (TopologyRule or str) -- 拓扑检查类型
  • tolerance (float) -- 指定的拓扑错误检查时使用的容限。单位与进行拓扑错误检查的数据集单位相同。
  • validate_region (GeoRegion) -- 被检查区域,None,则默认对整个拓扑数据集(validating_data)进行检查,否则对 validate_region 区域进行拓扑检查。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据集所在的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetVector or str

iobjectspy.analyst.resample_raster(input_data, new_cell_size, resample_mode, out_data=None, out_dataset_name=None, progress=None)

栅格数据重采样,返回结果数据集。

栅格数据经过了配准或纠正、投影等几何操作后,栅格的像元中心位置通常会发生变化,其在输入栅格中的位置不一定是整数的行列号,因此需要根据输出栅格上每个格子在输入栅格中的位置,对输入栅格按一定规则进行重采样,进行栅格值的插值计算,建立新的栅格矩阵。不同分辨率的栅格数据之间进行代数运算时,需要将栅格大小统一到一个指定的分辨率上,此时也需要对栅格进行重采样。

栅格重采样有三种常用方法:最邻近法、双线性内插法和三次卷积法。有关这三种重采样方法较为详细的介绍,请参见 ResampleMode 类。

参数:
  • input_data (DatasetImage or DatasetGrid or str) -- 指定的用于栅格重采样的数据集。支持影像数据集,包括多波段影像
  • new_cell_size (float) -- 指定的结果栅格的单元格大小
  • resample_mode (ResampleMode or str) -- 重采样计算方法
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据集所在的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetImage or DatasetGrid or str

class iobjectspy.analyst.ReclassSegment(start_value=None, end_value=None, new_value=None, segment_type=None)

基类:object

栅格重分级区间类。该类主要用于重分级区间信息的相关设置,包括区间的起始值、终止值等。

该类用于设置在进行重分级时,重分级映射表中每个重分级区间的参数,重分级类型不同,需要设置的属性也有所不同。

  • 当重分级类型为单值重分级时,需要通过 set_start_value() 方法指定需要被重新赋值的源栅格的单值,并通过 set_new_value() 方法设置该值对应的新值。
  • 当重分级类型为范围重分级时,需要通过 set_start_value() 方法指定需要重新赋值的源栅格值区间的起始值,通过 set_end_value() 方法设置区间的终止值, 并通过 set_new_value() 方法设置该区间对应的新值,还可以由 set_segment_type() 方法设置区间类型是“左开右闭”还是“左闭右开”。

构造栅格重分级区间对象

参数:
  • start_value (float) -- 栅格重分级区间的起始值
  • end_value (float) -- 栅格重分级区间的终止值
  • new_value (float) -- 栅格重分级的区间值或旧值对应的新值
  • segment_type (ReclassSegmentType or str) -- 栅格重分级区间类型
end_value

float -- 栅格重分级区间的终止值

from_dict(values)

从dict中读取信息

参数:values (dict) -- 包含 ReclassSegment 信息的 dict
返回:self
返回类型:ReclassSegment
static make_from_dict(values)

从dict中读取信息构造 ReclassSegment 对象

参数:values (dict) -- 包含 ReclassSegment 信息的 dict
返回:栅格重分级区间对象
返回类型:ReclassSegment
new_value

float -- 栅格重分级的区间值或旧值对应的新值

segment_type

ReclassSegmentType -- 栅格重分级区间类型

set_end_value(value)

栅格重分级区间的终止值

参数:value (float) -- 栅格重分级区间的终止值
返回:self
返回类型:ReclassSegment
set_new_value(value)

栅格重分级的区间值或旧值对应的新值

参数:value (float) -- 栅格重分级的区间值或旧值对应的新值
返回:self
返回类型:ReclassSegment
set_segment_type(value)

设置栅格重分级区间类型

参数:value (ReclassSegmentType or str) -- 栅格重分级区间类型
返回:self
返回类型:ReclassSegment
set_start_value(value)

设置栅格重分级区间的起始值

参数:value (float) -- 栅格重分级区间的起始值
返回:self
返回类型:ReclassSegment
start_value

float -- 栅格重分级区间的起始值

to_dict()

将当前对象信息输出到 dict

返回:包含当前对象信息的 dict 对象
返回类型:dict
class iobjectspy.analyst.ReclassMappingTable

基类:object

栅格重分级映射表类。提供对源栅格数据集进行单值或范围的重分级,且包含对无值数据和未分级单元格的处理。

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

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

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

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

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

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

change_missing_value_to

float -- 返回不在指定区间或单值内的栅格的指定值。

change_no_value_to

float -- 返回无值数据的指定值

from_dict(values)

从 dict 对象中读取重分级映射表信息

参数:values (dict) -- 包含重分级映射表信息的 dict 对象
返回:self
返回类型:ReclassMappingTable
static from_xml(xml)

从存储在XML格式字符串中的参数值导入到映射表数据中,并返回一个新的对象。

参数:xml (str) -- XML格式字符串
返回:栅格重分级映射表对象
返回类型:ReclassMappingTable
static from_xml_file(xml_file)

从已保存的XML格式的映射表文件中导入映射表数据,并返回一个新的对象。

参数:xml_file (str) -- XML文件
返回:栅格重分级映射表对象
返回类型:ReclassMappingTable
is_retain_missing_value

bool -- 源数据集中不在指定区间或单值之外的数据是否保留原值

is_retain_no_value

bool -- 返回是否将源数据集中的无值数据保持为无值。

static make_from_dict(values)

从 dict 对象中读取重分级映射表信息构造新的对象

参数:values (dict) -- 包含重分级映射表信息的 dict 对象
返回:重分级映射表对象
返回类型:ReclassMappingTable
reclass_type

ReclassType -- 返回栅格重分级类型

segments

list[ReclassSegment] -- 返回重分级区间集合。 每一个 ReclassSegment 就是一个区间范围或者是一个旧值和一个新值的对应关系。

set_change_missing_value_to(value)

设置不在指定区间或单值内的栅格的指定值。如果 is_retain_no_value() 为 True 时,则该设置无效。

参数:value (float) -- 不在指定区间或单值内的栅格的指定值
返回:self
返回类型:ReclassMappingTable
set_change_no_value_to(value)

设置无值数据的指定值。is_retain_no_value() 为 True 时,该设置无效。

参数:value (float) -- 无值数据的指定值
返回:self
返回类型:ReclassMappingTable
set_reclass_type(value)

设置栅格重分级类型

参数:value (ReclassType or str) -- 栅格重分级类型,默认值为 UNIQUE
返回:self
返回类型:ReclassMappingTable
set_retain_missing_value(value)

设置源数据集中不在指定区间或单值之外的数据是否保留原值。

参数:value (bool) -- 源数据集中不在指定区间或单值之外的数据是否保留原值。
返回:self
返回类型:ReclassMappingTable
set_retain_no_value(value)

设置是否将源数据集中的无值数据保持为无值。设置是否将源数据集中的无值数据保持为无值。 - 当 set_retain_no_value 方法设置为 True 时,表示保持源数据集中的无值数据为无值; - 当 set_retain_no_value 方法设置为 False 时,表示将源数据集中的无值数据设置为指定的值( set_change_no_value_to()

参数:value (bool) --
返回:self
返回类型:ReclassMappingTable
set_segments(value)

设置重分级区间集合

参数:value (list[ReclassSegment] or str) -- 重分级区间集合。当 value 为 str 时,支持使用 ';' 分隔多个ReclassSegment,每个 ReclassSegment使用 ','分隔 起始值、终止值、新值和分区类型。例如: '0,100,50,CLOSEOPEN; 100,200,150,CLOSEOPEN'
返回:self
返回类型:ReclassMappingTable
to_dict()

将当前信息输出到 dict 中

返回:包含当前信息的字典对象
返回类型:dict
to_xml()

将当前对象信息输出为 xml 字符串

返回:xml 字符串
返回类型:str
to_xml_file(xml_file)

该方法用于将对重分级映射表对象的参数设置写入一个 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_file (str) -- xml 文件路径
返回:导出成功返回 True,否则返回 False
返回类型:bool
iobjectspy.analyst.reclass_grid(input_data, re_pixel_format, segments=None, reclass_type='UNIQUE', is_retain_no_value=True, change_no_value_to=None, is_retain_missing_value=False, change_missing_value_to=None, reclass_map=None, out_data=None, out_dataset_name=None, progress=None)

栅格数据重分级,返回结果栅格数据集。 栅格重分级就是对源栅格数据的栅格值进行重新分类和按照新的分类标准赋值,其结果是用新的值取代了栅格数据的原栅格值。对于已知的栅格数据,有时为了便于看清趋势,找出栅格值的规律,或者为了方便进一步的分析,重分级是很必要的:

  • 通过重分级,可以使用新值来替代单元格的旧值,以达到更新数据的目的。例如,在处理土地类型变更时,将已经开垦为耕地的荒地赋予新的栅格值;
  • 通过重分级,可以对大量的栅格值进行分组归类,同组的单元格赋予相同的值来简化数据。例如,将旱地、水浇地、水田等都归为农业用地;
  • 通过重分级,可以对多种栅格数据按照统一的标准进行分类。例如,某个建筑物的选址的影响因素包括土壤和坡度,则对输入的土壤类型和坡度的栅格数据,可以按照 1-10 的等级标准来进行重分级,便于进一步的选址分析;
  • 通过重分级,可以将某些不希望参与分析的单元格设为无值,也可以为原先为无值的单元格补充新测定的值,便于进一步的分析处理。

例如,常常需要对栅格表面进行坡度分析得到坡度数据,来辅助与地形有关的分析。但我们可能需要知道坡度属于哪个等级而不是具体的坡度数值,来帮助我们了解地形的陡峭程度,从而辅助进一步的分析,如选址、分析道路铺设线路等。此时可以使用重分级,将不同的坡度划分到对应的等级中。

参数:
  • input_data (DatasetImage or DatasetGrid or str) -- 指定的用于栅格重采样的数据集。支持影像数据集,包括多波段影像
  • re_pixel_format (ReclassPixelFormat) -- 结果数据集的栅格值的存储类型
  • segments (list[ReclassSegment] or str) -- 重分级区间集合。重分级区间集合。当 segments 为 str 时,支持使用 ';' 分隔多个ReclassSegment,每个 ReclassSegment使用 ','分隔 起始值、终止值、新值和分区类型。例如: '0,100,50,CLOSEOPEN; 100,200,150,CLOSEOPEN'
  • reclass_type (ReclassType or str) -- 栅格重分级类型
  • is_retain_no_value (bool) -- 是否将源数据集中的无值数据保持为无值
  • change_no_value_to (float) -- 无值数据的指定值。 is_retain_no_value 设置为 False 时,该设置有效,否则无效。
  • is_retain_missing_value (bool) -- 源数据集中不在指定区间或单值之外的数据是否保留原值
  • change_missing_value_to (float) -- 不在指定区间或单值内的栅格的指定值,is_retain_no_value 设置为 False 时,该设置有效,否则无效。
  • reclass_map (ReclassMappingTable) -- 栅格重分级映射表类。如果该对象不为空,使用该对象设置的值进行栅格重分级。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据集所在的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetGrid or DatasetImage or str

iobjectspy.analyst.aggregate_grid(input_data, scale, aggregation_type, is_expanded, is_ignore_no_value, out_data=None, out_dataset_name=None, progress=None)

栅格数据聚合,返回结果栅格数据集。 栅格聚合操作是以整数倍缩小栅格分辨率,生成一个新的分辨率较粗的栅格的过程。此时,每个像元由原栅格数据的一组像元聚合而成,其值由其包含的原栅格的值共 同决定,可以取包含栅格的和、最大值、最小值、平均值、中位数。如缩小n(n为大于1的整数)倍,则聚合后栅格的行、列的数目均为原栅格的1/n,也就是单元格 大小是原来的n倍。聚合可以通过对数据进行概化,达到清除不需要的信息或者删除微小错误的目的。

注意:如果原栅格数据的行列数不是 scale 的整数倍,使用 is_expanded 参数来处理零头。

  • is_expanded 为 true,则在零头加上一个数,使之成为一个整数倍,扩大的范围其栅格值均为无值,因此,结果数据集的范围会比原始的大一些。
  • is_expanded 为 false,去掉零头,结果数据集的范围会比原始的小一些。
参数:
  • input_data (DatasetGrid or str) -- 指定的进行聚合操作的栅格数据集。
  • scale (int) -- 指定的结果栅格与输入栅格之间栅格大小的比例。取值为大于 1 的整型数值。
  • aggregation_type (AggregationType) -- 聚合操作类型
  • is_expanded (bool) -- 指定是否处理零头。当原栅格数据的行列数不是 scale 的整数倍时,栅格边界处则会出现零头。
  • is_ignore_no_value (bool) -- 在聚合范围内含有无值数据时聚合操作的计算方式。如果为 True,使用聚合范围内除无值外的其余栅格值来计算;如果为 False,则聚合结果为无值。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据集所在的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetGrid or str

iobjectspy.analyst.slice_grid(input_data, number_zones, base_output_zones, out_data=None, out_dataset_name=None, progress=None)

自然分割重分级,适用于分布不均匀的数据。

Jenks自然间断法:

该重分级方法利用的是Jenks自然间断法。Jenks自然间断法基于数据中固有的自然分组,这是方差最小化分级的形式,间断通常不均匀,且间断 选择在值出现剧 烈变动的地方,所以该方法能对相似值进行恰当分组并可使各分级间差异最大化。Jenks间断点分级法会将相似值(聚类值)放置在同一类中,所以该方法适用于 分布不均匀的数据值。

参数:
  • input_data (DatasetGrid or str) -- 指定的进行重分级操作的栅格数据集。
  • number_zones (int) -- 将栅格数据集重分级的区域数量。
  • base_output_zones (int) -- 结果栅格数据集中最低区域的值
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据集所在的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetGrid or str

设置分级区域数为9,将待分级栅格数据的最小值到最大值自然分割为9份。最低区域值设为1,重分级后的值以1为起始值每级递增。

>>> slice_grid('E:/data.udb/DEM', 9, 1, 'E:/Slice_out.udb')
iobjectspy.analyst.compute_range_raster(input_data, count, progress=None)

计算栅格像元值的自然断点中断值

参数:
  • input_data (DatasetGrid or str) -- 栅格数据集
  • count (int) -- 自然分段的个数
  • progress -- 进度信息处理函数,具体参考 StepEvent
返回:

自然分段的中断值(包括像元的最大和最小值)

返回类型:

Array

iobjectspy.analyst.compute_range_vector(input_data, value_field, count, progress=None)

计算矢量自然断点中断值

参数:
  • input_data (DatasetVector or str) -- 矢量数据集
  • value_field (str) -- 分段的标准字段
  • count (int) -- 自然分段的个数
  • progress -- 进度信息处理函数,具体参考 StepEvent
返回:

自然分段的中断值(包括属性的最大和最小值)

返回类型:

Array

iobjectspy.analyst.density_based_clustering(input_data, min_pile_point_count, search_distance, unit, out_data=None, out_dataset_name=None, progress=None)

密度聚类的DBSCAN实现

该方法根据给定的搜索半径(search_distance)和该范围内需包含的最少点数(min_pile_point_count)将空间点数据中密度足够大且空间相近的区域相连,并消除噪声的干扰,以达到较好的聚类效果。

参数:
  • input_data (DatasetVector or str) -- 指定的要聚类的矢量数据集,支持点数据集。
  • min_pile_point_count (int) -- 每类包含的最少点数
  • search_distance (int) -- 搜索邻域的距离
  • unit (Unit) -- 搜索距离的单位
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据集所在的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetVector or str

iobjectspy.analyst.hierarchical_density_based_clustering(input_data, min_pile_point_count, out_data=None, out_dataset_name=None, progress=None)

密度聚类的HDBSCAN实现

该方法是对DBSCAN方法的改进,只需给定空间邻域范围内的最少点数(min_pile_point_count)。在DBSCAN的基础上,计算不同的搜索半径选择最稳定的空间聚类分布作为密度聚类结果。

参数:
  • input_data (DatasetVector or str) -- 指定的要聚类的矢量数据集,支持点数据集。
  • min_pile_point_count (int) -- 每类包含的最少点数
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据集所在的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetVector or str

iobjectspy.analyst.ordering_density_based_clustering(input_data, min_pile_point_count, search_distance, unit, cluster_sensitivity, out_data=None, out_dataset_name=None, progress=None)

密度聚类的OPTICS实现

该方法在DBSCAN的基础上,额外计算了每个点的可达距离,并基于排序信息和聚类系数(cluster_sensitivity)得到聚类结果。该方法对于搜索半径(search_distance)和该范围内需包含的最少点数(min_pile_point_count)不是很敏感,主要决定结果的是聚类系数(cluster_sensitivity)

概念定义: - 可达距离:取核心点的核心距离和其到周围临近点距离的最大值。 - 核心点:某个点在搜索半径内,存在点的个数不小于每类包含的最少点数(min_pile_point_count)。 - 核心距离:某个点成为核心点的最小距离。 - 聚类系数:为1~100的整数,是对聚类类别多少的标准量化,系数为1时聚类类别最少、100最多。

参数:
  • input_data (DatasetVector or str) -- 指定的要聚类的矢量数据集,支持点数据集。
  • min_pile_point_count (int) -- 每类包含的最少点数
  • search_distance (int) -- 搜索邻域的距离
  • unit (Unit) -- 搜索距离的单位
  • cluster_sensitivity (int) -- 聚类系数
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据集所在的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetVector or str

class iobjectspy.analyst.NeighbourShape

基类:object

邻域形状基类。邻域按照形状可分为:矩形邻域、圆形邻域、环形邻域和扇形邻域。邻域形状的相关参数设置

shape_type

NeighbourShapeType -- 域分析的邻域形状类型

class iobjectspy.analyst.NeighbourShapeRectangle(width, height)

基类:iobjectspy._jsuperpy.analyst.NeighbourShape

矩形邻域形状类

构造矩形邻域形状类对象

参数:
  • width (float) -- 矩形邻域的宽
  • height (float) -- 矩形邻域的高
height

float -- 矩形邻域的高

set_height(value)

设置矩形邻域的高

参数:value (float) -- 矩形邻域的高
返回:self
返回类型:NeighbourShapeRectangle
set_width(value)

设置矩形邻域的宽

参数:value (float) -- 矩形邻域的宽
返回:self
返回类型:NeighbourShapeRectangle
width

float -- 矩形邻域的宽

class iobjectspy.analyst.NeighbourShapeCircle(radius)

基类:iobjectspy._jsuperpy.analyst.NeighbourShape

圆形邻域形状类

构造圆形邻域形状类对象

参数:radius (float) -- 圆形邻域的半径
radius

float -- 圆形邻域的半径

set_radius(value)

设置圆形邻域的半径

参数:value (float) -- 圆形邻域的半径
返回:self
返回类型:NeighbourShapeCircle
class iobjectspy.analyst.NeighbourShapeAnnulus(inner_radius, outer_radius)

基类:iobjectspy._jsuperpy.analyst.NeighbourShape

环形邻域形状类

构造环形邻域形状类对象

参数:
  • inner_radius (float) -- 内环半径
  • outer_radius (float) -- 外环半径
inner_radius

float -- 内环半径

outer_radius

float -- 外环半径

set_inner_radius(value)

设置内环半径

参数:value (float) -- 内环半径
返回:self
返回类型:NeighbourShapeAnnulus
set_outer_radius(value)

设置外环半径

参数:value (float) -- 外环半径
返回:self
返回类型:NeighbourShapeAnnulus
class iobjectspy.analyst.NeighbourShapeWedge(radius, start_angle, end_angle)

基类:iobjectspy._jsuperpy.analyst.NeighbourShape

扇形邻域形状类

构造扇形邻域形状类对象

参数:
  • radius (float) -- 形邻域的半径
  • start_angle (float) -- 扇形邻域的起始角度。单位为度。规定水平向右为 0 度,顺时针旋转计算角度。
  • end_angle (float) -- 扇形邻域的终止角度。单位为度。规定水平向右为 0 度,顺时针旋转计算角度。
end_angle

float -- 扇形邻域的终止角度。单位为度。规定水平向右为 0 度,顺时针旋转计算角度。

radius

float -- 扇形邻域的半径

set_end_angle(value)

设置扇形邻域的终止角度。单位为度。规定水平向右为 0 度,顺时针旋转计算角度。

参数:value (float) --
返回:self
返回类型:NeighbourShapeWedge
set_radius(value)

设置扇形邻域的半径

参数:value (float) -- 扇形邻域的半径
返回:self
返回类型:NeighbourShapeWedge
set_start_angle(value)

设置扇形邻域的起始角度。单位为度。规定水平向右为 0 度,顺时针旋转计算角度。

参数:value (float) -- 扇形邻域的起始角度。单位为度。规定水平向右为 0 度,顺时针旋转计算角度。
返回:self
返回类型:NeighbourShapeWedge
start_angle

float -- 扇形邻域的起始角度。单位为度。规定水平向右为 0 度,顺时针旋转计算角度。

iobjectspy.analyst.kernel_density(input_data, value_field, search_radius, resolution, bounds=None, out_data=None, out_dataset_name=None, progress=None)

对点数据集或线数据集进行核密度分析,并返回分析结果。 核密度分析,即使用核函数,来计算点或线邻域范围内的每单位面积量值。其结果是中间值大周边值小的光滑曲面,在邻域边界处降为0。

参数:
  • input_data (DatasetVector or str) -- 需要进行核密度分析的点数据集或线数据集。
  • value_field (str) -- 存储用于进行密度分析的测量值的字段名称。若传 None 则所有几何对象都按值为1处理。不支持文本类型的字段。
  • search_radius (float) -- 栅格邻域内用于计算密度的查找半径。单位与用于分析的数据集的单位相同。当计算某个栅格位置的未知数值时,会以该位置 为圆心,以该属性设置的值为半径,落在这个范围内的采样对象都将参与运算,即该位置的预测值由该范围内采样对象的测量 值决定。查找半径越大,生成的密度栅格越平滑且概化程度越高。值越小,生成的栅格所显示的信息越详细。
  • resolution (float) -- 密度分析结果栅格数据的分辨率
  • bounds (Rectangle) -- 密度分析的范围,用于确定运行结果所得到的栅格数据集的范围
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据集所在的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetGrid or str

>>> kernel_density(data_dir + 'example_data.udb/taxi', 'passenger_count', 0.01, 0.001, out_data=out_dir + 'density_result.udb'
iobjectspy.analyst.point_density(input_data, value_field, resolution, neighbour_shape, neighbour_unit='CELL', bounds=None, out_data=None, out_dataset_name=None, progress=None)

对点数据集进行点密度分析,并返回分析结果。 简单点密度分析,即计算每个点的指定邻域形状内的每单位面积量值。计算方法为指定测量值除以邻域面积。点的邻域叠加处,其密度值也相加。 每个输出栅格的密度均为叠加在栅格上的所有邻域密度值之和。结果栅格值的单位为原数据集单位的平方的倒数,即若原数据集单位为米,则结果栅格值的单位 为每平方米。注意对于地理坐标数据集,结果栅格值的单位为“每平方度”,是没有实际意义的。

参数:
  • input_data (DatasetVector or str) -- 需要进行核密度分析的点数据集或线数据集。
  • value_field (str) -- 存储用于进行密度分析的测量值的字段名称。若传 None 则所有几何对象都按值为1处理。不支持文本类型的字段。
  • resolution (float) -- 密度分析结果栅格数据的分辨率
  • neighbour_shape (NeighbourShape or str) -- 计算密度的查找邻域形状。如果输入值为 str,则要求格式为: - 'CIRCLE,radius', 例如 'CIRCLE, 10' - 'RECTANGLE,width,height',例如 'RECTANGLE,5.0,10.0' - 'ANNULUS,inner_radius,outer_radius',例如 'ANNULUS,5.0,10.0' - 'WEDGE,radius,start_angle,end_angle',例如 'WEDGE,10.0,0,45'
  • neighbour_unit (NeighbourUnitType or str) -- 邻域统计的单位类型。可以使用栅格坐标或地理坐标。
  • bounds (Rectangle) -- 密度分析的范围,用于确定运行结果所得到的栅格数据集的范围
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据集所在的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetGrid or str

>>> point_density(data_dir + 'example_data.udb/taxi', 'passenger_count', 0.0001, 'CIRCLE,0.001', 'MAP', out_data=out_dir + 'density_result.udb')
iobjectspy.analyst.clip_raster(input_data, clip_region, is_clip_in_region=True, is_exact_clip=False, out_data=None, out_dataset_name=None, progress=None)

对栅格或影像数据集进行裁剪,结果存储为一个新的栅格或影像数据集。有时,我们的研究范围或者感兴趣区域较小,仅涉及当前栅格数据 的一部分,这时可以对栅格数据进行裁剪,即通过一个 GeoRegion 对象作为裁剪区域对栅格数据进行裁剪,提取该区域内(外)的栅格数 据生成一个新的数据集,此外,还可以选择进行精确裁剪或显示裁剪。

参数:
  • input_data (DatasetGrid or DatasetImage or str) -- 指定的要进行裁剪的数据集,支持栅格数据集和影像数据集。
  • clip_region (GeoRegion or Rectangle) -- 裁剪区域
  • is_clip_in_region (bool) -- 是否对裁剪区内的数据集进行裁剪。若为 True,则对裁剪区域内的数据集进行裁剪,若为 False,则对裁剪区域外的数据集进行裁剪。
  • is_exact_clip (bool) --

    是否使用精确裁剪。若为 True,表示使用精确裁剪对栅格或影像数据集进行裁剪,False 表示使用显示裁剪:

    • 采用显示裁剪时,系统会按照像素分块(详见 DatasetGrid.block_size_option、DatasetImage.block_size_option 方法)的大小, 对栅格或影像数据集进行裁剪。此时只有裁剪区域内的数据被保留,即如果裁剪区的边界没有恰好与单元格的边界重合,那么单元格将被分割, 位于裁剪区的部分会保留下来;位于裁剪区域外,且在被裁剪的那部分栅格所在块的总范围内的栅格仍有栅格值,但不显示。此种方式适用于大数据的裁剪。
    • 采用精确裁剪时,系统在裁剪区域边界,会根据裁剪区域压盖的单元格的中心点的位置确定是否保留该单元格。如果使用区域内裁剪方式,单元格的中心点位于裁剪区内则保留,反之不保留。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据集所在的数据源或直接生成 tif 文件
  • out_dataset_name (str) -- 结果数据集名称。如果设置直接生成 tif 文件,则此参数无效。
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称或第三方影像文件路径。

返回类型:

DatasetGrid or DatasetImage or str

>>> clip_region = Rectangle(875.5, 861.2, 1172.6, 520.9)
>>> result = clip_raster(data_dir + 'example_data.udb/seaport', clip_region, True, False, out_data=out_dir + 'clip_seaport.tif')
>>> result = clip_raster(data_dir + 'example_data.udb/seaport', clip_region, True, False, out_data=out_dir + 'clip_out.udb')
class iobjectspy.analyst.InterpolationDensityParameter(resolution, search_radius=0.0, expected_count=12, bounds=None)

基类:iobjectspy._jsuperpy.analyst.InterpolationParameter

点密度差值(Density)插值参数类。点密度插值方法,用于表达采样点的密度分布情况。 点密度插值的结果栅格的分辨率设置需要结合点数据集范围大小来取值,一般结果栅格行列值(即结果栅格数据集范围除以分辨率)在 500 以内即可以较好的体现出密度走势。由于点密度插值暂时只支持定长搜索模式,因此搜索半径(search_radius)值设置较为重要,此值需要用户根据待插值点数据分布状况和点数据集范围进行设置。

构造点密度差值插值参数类对象

参数:
  • resolution (float) -- 插值运算时使用的分辨率
  • search_radius (float) -- 查找参与运算点的查找半径
  • expected_count (int) -- 期望参与插值运算的点数
  • bounds (Rectangle) -- 插值分析的范围,用于确定运行结果的范围
expected_count

int -- 返回期望参与插值运算的点数,表示期望参与运算的最少样点数

search_mode

SearchMode -- 在插值运算时,查找参与运算点的方式,只支持定长查找(KDTREE_FIXED_RADIUS)方式

search_radius

float -- 查找参与运算点的查找半径

set_expected_count(value)

设置期望参与插值运算的点数

参数:value (int) -- 表示期望参与运算的最少样点数
返回:self
返回类型:InterpolationDensityParameter
set_search_radius(value)

设置查找参与运算点的查找半径。单位与用于插值的点数据集(或记录集所属的数据集)的单位相同。查找半径决定了参与运算点的查找范围,当计算某个位置 的未知数值时,会以该位置为圆心,以search_radius为半径,落在这个范围内的采样点都将参与运算,即该位置的预测值由该范围内采样点的数值决定。

参数:value (float) -- 查找参与运算点的查找半径
返回:self
返回类型:InterpolationDensityParameter
class iobjectspy.analyst.InterpolationIDWParameter(resolution, search_mode=SearchMode.KDTREE_FIXED_COUNT, search_radius=0.0, expected_count=12, power=1, bounds=None)

基类:iobjectspy._jsuperpy.analyst.InterpolationParameter

距离反比权值插值(Inverse Distance Weighted)参数类,

构造 IDW 插值参数类。

参数:
  • resolution (float) -- 插值运算时使用的分辨率
  • search_mode (SearchMode or str) -- 查找方式,不支持 QUADTREE
  • search_radius (float) -- 查找参与运算点的查找半径
  • expected_count (int) -- 期望参与插值运算的点数
  • power (int) -- 距离权重计算的幂次,幂次值越低,内插结果越平滑,幂次值越高,内插结果细节越详细。此参数应为一个大于0的值。如果不指定此参数,方法缺省将其设置为1
  • bounds (Rectangle) -- 插值分析的范围,用于确定运行结果的范围
expected_count

int -- 期望参与插值运算的点数,如果设置 search_mode 为 KDTREE_FIXED_RADIUS ,同时指定参与插值运算点的个数,当查找范围内的点数小于指定的点数时赋为空值。

power

int -- 距离权重计算的幂次

search_mode

SearchMode -- 在插值运算时,查找参与运算点的方式,不支持 QUADTREE

search_radius

float -- 查找参与运算点的查找半径

set_expected_count(value)

设置期望参与插值运算的点数。如果设置 search_mode 为 KDTREE_FIXED_RADIUS ,同时指定参与插值运算点的个数,当查找范围内的点数小于指定的点数时赋为空值。

参数:value (int) -- 表示期望参与运算的最少样点数
返回:self
返回类型:InterpolationIDWParameter
set_power(value)

设置距离权重计算的幂次。幂次值越低,内插结果越平滑,幂次值越高,内插结果细节越详细。此参数应为一个大于0的值。如果不指定此参数,方法缺省 将其设置为1。

参数:value (int) -- 距离权重计算的幂次
返回:self
返回类型:InterpolationIDWParameter
set_search_mode(value)

设置在插值运算时,查找参与运算点的方式。不支持 QUADTREE

参数:value (SearchMode or str) -- 在插值运算时,查找参与运算点的方式
返回:self
返回类型:InterpolationIDWParameter
set_search_radius(value)

设置查找参与运算点的查找半径。单位与用于插值的点数据集(或记录集所属的数据集)的单位相同。查找半径决定了参与运算点的查找范围,当计算某个位置 的未知数值时,会以该位置为圆心,以search_radius为半径,落在这个范围内的采样点都将参与运算,即该位置的预测值由该范围内采样点的数值决定。

如果设置 search_mode 为KDTREE_FIXED_COUNT,同时指定查找参与运算点的范围,当查找范围内的点数小于指定的点数时赋为空值,当查找范围内的点数 大于指定的点数时,则返回距离插值点最近的指定个数的点进行插值。

参数:value (float) -- 查找参与运算点的查找半径
返回:self
返回类型:InterpolationIDWParameter
class iobjectspy.analyst.InterpolationKrigingParameter(resolution, krighing_type=InterpolationAlgorithmType.KRIGING, search_mode=SearchMode.KDTREE_FIXED_COUNT, search_radius=0.0, expected_count=12, max_point_count_in_node=50, max_point_count_for_interpolation=200, variogram=VariogramMode.SPHERICAL, angle=0.0, mean=0.0, exponent=Exponent.EXP1, nugget=0.0, range_value=0.0, sill=0.0, bounds=None)

基类:iobjectspy._jsuperpy.analyst.InterpolationParameter

克吕金(Kriging)内插法参数。

Kriging 法为地质统计学上一种空间资料内插处理方法,主要的目的是利用各数据点间变异数(variance)的大小来推求某一未知点与各已知点的权重关系,再 由各数据点的值和其与未知点的权重关系推求未知点的值。Kriging 法最大的特色不仅是提供一个最小估计误差的预测值,并且可明确的指出误差值的大小。一般 而言,许多地质参数,如地形面本身即具有连续的性质,故在一短距离内的任两点必有空间上的关系。反之,在一不规则面上的两点若相距甚远,则在统计意义上可 视为互为独立 (stastically indepedent),这种随距离而改变的空间上连续性,可用半变异图 (semivariogram) 来表现。因此,若想由已知的散乱点来 推求某一未知点的值,则可利用半变异图推求各已知点及欲求值点的空间关系。再由此空间参数推求半变异数,由各数据点间的半变异数可推求未知点与已知点间的 权重关系,进而推求出未知点的值。克吕金法的优点是以空间统计学作为其坚实的理论基础。物理含义明确;不但能估计测定参数的空间变异分布,而且还可以估算 参数的方差分布。克吕金法的缺点是计算步骤较烦琐,计算量大,且变异函数有时需要根据经验人为选定。

克吕金插值法可以采用两种方式来获取参与插值的采样点,进而获得相应位置点的预测值,一个是在待计算预测值位置点周围一定范围内,获取该范围内的所有采样 点,通过特定的插值计算公式获得该位置点的预测值;另一个是在待计算预测值位置点周围获取一定数目的采样点,通过特定的插值计算公式获得该位置点的预测值。

克吕金插值过程是一个多步骤的处理过程,包括:
  • 创建变异图和协方差函数来估计统计相关(也称为空间自相关)的值;
  • 预测待计算位置点的未知值。
半变异函数与半变异图:
  • 计算所有采样点中相距 h 个单位的任意两点的半变异函数值,那么任意两点的距离 h 一般是唯一的,将所有的点对的距离与相应的半变函数值快速显示在以 h 为 X 坐标轴和以半变函数值为 Y 坐标轴的坐标空间内,就得到了半变异图。相距距离愈小的点其半变异数愈小,而随着距离的增加,任两点间的空间相依关系愈 小,使得半变异函数值趋向于一稳定值。此稳定值我们称之为基台值(Sill);而达到基台值时的最小 h 值称之为自相关阈值(Range)。
块金效应:
  • 当点间距离为 0(比如,步长=0)时,半变函数值为 0。然而,在一个无限小的距离内,半变函数通常显示出块金效应,这是一个大于 0 的值。如果半变函数 在Y周上的截距式 2 ,则块金效应值为 2。
  • 块金效应属于测量误差,或者是小于采样步长的小距离上的空间变化,或者两者兼而有之。测量误差主要是由于观测仪器的内在误差引起的。自然现象的空间变异 范围很大(可以在很小的尺度上,也可以在很大的尺度上)。小于步长尺度上的变化就表现为块金的一部分。

半变异图的获得是进行空间插值预测的关键步骤之一,克吕金法的主要应用之一就是预测非采样点的属性值,半变异图提供了采样点的空间自相关信息,根据半变 异图,选择合适的半变异模型,即拟合半变异图的曲线模型。

不同的模型将会影响所获得的预测结果,如果接近原点处的半变异函数曲线越陡,则较近领域对该预测值的影响就越大。因此输出表面就会越不光滑。

SuperMap 支持的半变函数模型有指数型、球型和高斯型。详细信息参见 VariogramMode 类

构造 克吕金插值参数对象。

参数:
  • resolution (float) -- 插值运算时使用的分辨率
  • krighing_type (InterpolationAlgorithmType or str) -- 插值分析的算法类型。支持设置 KRIGING, SimpleKRIGING, UniversalKRIGING 三种,默认使用 KRIGING。
  • search_mode (SearchMode or str) -- 查找模式。
  • search_radius (float) -- 查找参与运算点的查找半径。单位与用于插值的点数据集(或记录集所属的数据集)的单位相同。查找半径决定了参与 运算点的查找范围,当计算某个位置的未知数值时,会以该位置为圆心,search_radius 为半径,落在这个范围内的 采样点都将参与运算,即该位置的预测值由该范围内采样点的数值决定。
  • expected_count (int) -- 期望参与插值运算的点数,当查找方式为变长查找时,表示期望参与运算的最多样点数。
  • max_point_count_in_node (int) -- 单个块内最多查找点数。当用QuadTree的查找插值点时,才可以设置块内最多点数。
  • max_point_count_for_interpolation (int) -- 设置块查找时,最多参与插值的点数。注意,该值必须大于零。当用QuadTree的查找插值点时,才可以设置最多参与插值的点数
  • variogram (VariogramMode or str) -- 克吕金(Kriging)插值时的半变函数类型。默认值为 VariogramMode.SPHERICAL
  • angle (float) -- 克吕金算法中旋转角度值
  • mean (float) -- 插值字段的平均值,即采样点插值字段值总和除以采样点数目。
  • exponent (Exponent or str) -- 用于插值的样点数据中趋势面方程的阶数
  • nugget (float) -- 块金效应值。
  • range_value (float) -- 自相关阈值。
  • sill (float) -- 基台值
  • bounds (Rectangle) -- 插值分析的范围,用于确定运行结果的范围
angle

float -- 克吕金算法中旋转角度值

expected_count

int -- 期望参与插值运算的点数

exponent

Exponent -- 用于插值的样点数据中趋势面方程的阶数

max_point_count_for_interpolation

int -- 块查找时,最多参与插值的点数

max_point_count_in_node

int -- 单个块内最多查找点数

mean

float -- 插值字段的平均值,即采样点插值字段值总和除以采样点数目。

nugget

float -- 块金效应值。

range

float -- 自相关阈值

search_mode

SearchMode -- 在插值运算时,查找参与运算点的方式

search_radius

float -- 查找参与运算点的查找半径

set_angle(value)

设置克吕金算法中旋转角度值

参数:value (float) -- 克吕金算法中旋转角度值
返回:self
返回类型:InterpolationKrigingParameter
set_expected_count(value)

设置期望参与插值运算的点数

参数:value (int) -- 表示期望参与运算的最少样点数
返回:self
返回类型:InterpolationIDWParameter
set_exponent(value)

设置用于插值的样点数据中趋势面方程的阶数

参数:value (Exponent or str) -- 用于插值的样点数据中趋势面方程的阶数
返回:self
返回类型:InterpolationKrigingParameter
set_max_point_count_for_interpolation(value)

设置块查找时,最多参与插值的点数。注意,该值必须大于零。当用QuadTree的查找插值点时,才可以设置最多参与插值的点数

参数:value (int) -- 块查找时,最多参与插值的点数
返回:self
返回类型:InterpolationKrigingParameter
set_max_point_count_in_node(value)

设置单个块内最多查找点数。当用QuadTree的查找插值点时,才可以设置块内最多点数。

参数:value (int) -- 单个块内最多查找点数。当用QuadTree的查找插值点时,才可以设置块内最多点数
返回:self
返回类型:InterpolationKrigingParameter
set_mean(value)

设置插值字段的平均值,即采样点插值字段值总和除以采样点数目。

参数:value (float) -- 插值字段的平均值,即采样点插值字段值总和除以采样点数目。
返回:self
返回类型:InterpolationKrigingParameter
set_nugget(value)

设置块金效应值。

参数:value (float) -- 块金效应值。
返回:self
返回类型:InterpolationKrigingParameter
set_range(value)

设置自相关阈值

参数:value (float) -- 自相关阈值
返回:self
返回类型:InterpolationKrigingParameter
set_search_mode(value)

设置在插值运算时,查找参与运算点的方式

参数:value (SearchMode or str) -- 在插值运算时,查找参与运算点的方式
返回:self
返回类型:InterpolationIDWParameter
set_search_radius(value)

设置查找参与运算点的查找半径。单位与用于插值的点数据集(或记录集所属的数据集)的单位相同。查找半径决定了参与运算点的查找范围,当计算某个位置 的未知数值时,会以该位置为圆心,以 search_radius为半径,落在这个范围内的采样点都将参与运算,即该位置的预测值由该范围内采样点的数值决定。

查找模式设置为“变长查找”(KDTREE_FIXED_COUNT),将使用最大查找半径范围内的固定数目的样点值进行插值,最大查找半径为点数据集的区域范围对 应的矩形的对角线长度的 0.2 倍。

参数:value (float) -- 查找参与运算点的查找半径
返回:self
返回类型:InterpolationIDWParameter
set_sill(value)

设置基台值

参数:value (float) -- 基台值
返回:self
返回类型:InterpolationKrigingParameter
set_variogram_mode(value)

设置克吕金(Kriging)插值时的半变函数类型。默认值为 VariogramMode.SPHERICAL

参数:value (VariogramMode or) -- 克吕金(Kriging)插值时的半变函数类型
返回:self
返回类型:InterpolationKrigingParameter
sill

float -- 基台值

variogram_mode

VariogramMode -- 克吕金(Kriging)插值时的半变函数类型。默认值为 VariogramMode.SPHERICAL

class iobjectspy.analyst.InterpolationRBFParameter(resolution, search_mode=SearchMode.KDTREE_FIXED_COUNT, search_radius=0.0, expected_count=12, max_point_count_in_node=50, max_point_count_for_interpolation=200, smooth=0.100000001490116, tension=40, bounds=None)

基类:iobjectspy._jsuperpy.analyst.InterpolationParameter

径向基函数 RBF(Radial Basis Function)插值法参数类

构造径向基函数插值法参数类对象。

参数:
  • resolution (float) -- 插值运算时使用的分辨率
  • search_mode (SearchMode or str) -- 查找模式。
  • search_radius (float) -- 查找参与运算点的查找半径。单位与用于插值的点数据集(或记录集所属的数据集)的单位相同。查找半径决定了参与 运算点的查找范围,当计算某个位置的未知数值时,会以该位置为圆心,search_radius 为半径,落在这个范围内的 采样点都将参与运算,即该位置的预测值由该范围内采样点的数值决定。
  • expected_count (int) -- 期望参与插值运算的点数,当查找方式为变长查找时,表示期望参与运算的最多样点数。
  • max_point_count_in_node (int) -- 单个块内最多查找点数。当用QuadTree的查找插值点时,才可以设置块内最多点数。
  • max_point_count_for_interpolation (int) -- 设置块查找时,最多参与插值的点数。注意,该值必须大于零。当用QuadTree的查找插值点时,才可以设置最多参与插值的点数
  • smooth (float) -- 光滑系数,值域为 [0,1]
  • tension (float) -- 张力系数
  • bounds (Rectangle) -- 插值分析的范围,用于确定运行结果的范围
expected_count

int -- 期望参与插值运算的点数

max_point_count_for_interpolation

int -- 块查找时,最多参与插值的点数

max_point_count_in_node

int -- 单个块内最多查找点数

search_mode

SearchMode -- 在插值运算时,查找参与运算点的方式,不支持 KDTREE_FIXED_RADIUS

search_radius

float -- 查找参与运算点的查找半径

set_expected_count(value)

设置期望参与插值运算的点数

参数:value (int) -- 表示期望参与运算的最少样点数
返回:self
返回类型:InterpolationRBFParameter
set_max_point_count_for_interpolation(value)

设置块查找时,最多参与插值的点数。注意,该值必须大于零。当用QuadTree的查找插值点时,才可以设置最多参与插值的点数

参数:value (int) -- 块查找时,最多参与插值的点数
返回:self
返回类型:InterpolationRBFParameter
set_max_point_count_in_node(value)

设置单个块内最多查找点数。当用QuadTree的查找插值点时,才可以设置块内最多点数。

参数:value (int) -- 单个块内最多查找点数。当用QuadTree的查找插值点时,才可以设置块内最多点数
返回:self
返回类型:InterpolationRBFParameter
set_search_mode(value)

设置在插值运算时,查找参与运算点的方式。

参数:value (SearchMode or str) -- 在插值运算时,查找参与运算点的方式
返回:self
返回类型:InterpolationRBFParameter
set_search_radius(value)

设置查找参与运算点的查找半径。单位与用于插值的点数据集(或记录集所属的数据集)的单位相同。查找半径决定了参与运算点的查找范围,当计算某个位置 的未知数值时,会以该位置为圆心,以 search_radiu s为半径,落在这个范围内的采样点都将参与运算,即该位置的预测值由该范围内采样点的数值决定。

查找模式设置为“变长查找”(KDTREE_FIXED_COUNT),将使用最大查找半径范围内的固定数目的样点值进行插值,最大查找半径为点数据集的区域范围对 应的矩形的对角线长度的 0.2 倍。

参数:value (float) -- 查找参与运算点的查找半径
返回:self
返回类型:InterpolationRBFParameter
set_smooth(value)

设置光滑系数

参数:value (float) -- 光滑系数
返回:self
返回类型:InterpolationRBFParameter
set_tension(value)

设置张力系数

参数:value (float) -- 张力系数
返回:self
返回类型:InterpolationRBFParameter
smooth

float -- 光滑系数

tension

float -- 张力系数

iobjectspy.analyst.interpolate(input_data, parameter, z_value_field, pixel_format, z_value_scale=1.0, out_data=None, out_dataset_name=None, progress=None)

插值分析类。该类提供插值分析功能,用于对离散的点数据进行插值得到栅格数据集。插值分析可以将有限的采样点数据,通过插值对采样点周围的数值情况进行预测, 从而掌握研究区域内数据的总体分布状况,而使采样的离散点不仅仅反映其所在位置的数值情况,而且可以反映区域的数值分布。

为什么要进行插值?

由于地理空间要素之间存在着空间关联性,即相互邻近的事物总是趋于同质,也就是具有相同或者相似的特征,举个例子,街道的一边下雨了,那么街道的另一边在大 多数情况下也一定在下雨,如果在更大的区域范围,一个乡镇的气候应当与其接壤的另一的乡镇的气候相同,等等,基于这样的推理,我们就可以利用已知地点的信息 来间接获取与其相邻的其他地点的信息,而插值分析就是基于这样的思想产生的,也是插值重要的应用价值之一。

将某个区域的采样点数据插值生成栅格数据,实际上是将研究区域按照给定的格网尺寸(分辨率)进行栅格化,栅格数据中每一个栅格单元对应一块区域,栅格单元的 值由其邻近的采样点的数值通过某种插值方法计算得到,因此,就可以预测采样点周围的数值情况,进而了解整个区域的数值分布情况。其中,插值方法主要有距离反 比权值插值法、克吕金(Kriging)内插法、径向基函数RBF(Radial Basis Function)插值。 利用插值分析功能能够预测任何地理点数据的未知值,如高程、降雨量、化学物浓度、噪声级等等。

参数:
  • input_data (DatasetVector or str or Recordset) -- 需要进行插值分析的点数据集或点记录集
  • parameter (InterpolationParameter) -- 插值方法需要的参数信息
  • z_value_field (str) -- 存储用于进行插值分析的值的字段名称。插值分析不支持文本类型的字段。
  • pixel_format (PixelFormat or str) -- 指定结果栅格数据集存储的像素,不支持 BIT64
  • z_value_scale (float) -- 插值分析值的缩放比率
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据集所在的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetGrid or str

iobjectspy.analyst.interpolate_points(points, values, parameter, pixel_format, prj, out_data, z_value_scale=1.0, out_dataset_name=None, progress=None)

对点数组进行插值分析,并返回分析结果

参数:
  • points (list[Point2D]) -- 需要进行插值分析的点数据
  • values (list[float]) -- 点数组对应的用于插值分析的值。
  • parameter (InterpolationParameter) -- 插值方法需要的参数信息
  • pixel_format (PixelFormat or str) -- 指定结果栅格数据集存储的像素,不支持 BIT64
  • prj (PrjCoordSys) -- 点数组的坐标系统。生成的结果数据集也参照该坐标系统。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据集所在的数据源
  • z_value_scale (float) -- 插值分析值的缩放比率
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

iobjectspy.analyst.idw_interpolate(input_data, z_value_field, pixel_format, resolution, search_mode=SearchMode.KDTREE_FIXED_COUNT, search_radius=0.0, expected_count=12, power=1, bounds=None, z_value_scale=1.0, out_data=None, out_dataset_name=None, progress=None)

使用 IDW 插值方法对点数据集或记录集进行插值。具体参考 interpolate()InterpolationIDWParameter

参数:
  • input_data (DatasetVector or str or Recordset) -- 需要进行插值分析的点数据集或点记录集
  • z_value_field (str) -- 存储用于进行插值分析的值的字段名称。插值分析不支持文本类型的字段。
  • pixel_format (PixelFormat or str) -- 指定结果栅格数据集存储的像素,不支持 BIT64
  • resolution (float) -- 插值运算时使用的分辨率
  • search_mode (SearchMode or str) -- 插值运算时,查找参与运算点的方式。不支持 QUADTREE
  • search_radius (float) -- 查找参与运算点的查找半径。单位与用于插值的点数据集(或记录集所属的数据集)的单位相同。查找半径决定了参与运算点的查找范围,当计算某个位置的未知数值时,会以该位置为圆心,以search_radius为半径,落在这个范围内的采样点都将参与运算,即该位置的预测值由该范围内采样点的数值决定。 如果设置 search_mode 为KDTREE_FIXED_COUNT,同时指定查找参与运算点的范围,当查找范围内的点数小于指定的点数时赋为空值,当查找范围内的点数大于指定的点数时,则返回距离插值点最近的指定个数的点进行插值。
  • expected_count (int) -- 期望参与插值运算的点数。如果设置 search_mode 为 KDTREE_FIXED_RADIUS ,同时指定参与插值运算点的个数,当查找范围内的点数小于指定的点数时赋为空值。
  • power (int) -- 距离权重计算的幂次。幂次值越低,内插结果越平滑,幂次值越高,内插结果细节越详细。此参数应为一个大于0的值。如果不指定此参数,方法缺省将其设置为1。
  • bounds (Rectangle) -- 插值分析的范围,用于确定运行结果的范围
  • z_value_scale (float) -- 插值分析值的缩放比率
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据集所在的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetGrid or str

iobjectspy.analyst.density_interpolate(input_data, z_value_field, pixel_format, resolution, search_radius=0.0, expected_count=12, bounds=None, z_value_scale=1.0, out_data=None, out_dataset_name=None, progress=None)

使用点密度插值方法对点数据集或记录集进行插值。具体参考 interpolate()InterpolationDensityParameter

参数:
  • input_data (DatasetVector or str or Recordset) -- 需要进行插值分析的点数据集或点记录集
  • z_value_field (str) -- 存储用于进行插值分析的值的字段名称。插值分析不支持文本类型的字段。
  • pixel_format (PixelFormat or str) -- 指定结果栅格数据集存储的像素,不支持 BIT64
  • resolution (float) -- 插值运算时使用的分辨率
  • search_radius (float) -- 查找参与运算点的查找半径。单位与用于插值的点数据集(或记录集所属的数据集)的单位相同。查找半径决定了参与运算点的查找范围,当计算某个位置的未知数值时,会以该位置为圆心,以search_radius为半径,落在这个范围内的采样点都将参与运算,即该位置的预测值由该范围内采样点的数值决定。
  • expected_count (int) -- 期望参与插值运算的点数
  • bounds (Rectangle) -- 插值分析的范围,用于确定运行结果的范围
  • z_value_scale (float) -- 插值分析值的缩放比率
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据集所在的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetGrid or str

iobjectspy.analyst.kriging_interpolate(input_data, z_value_field, pixel_format, resolution, krighing_type='KRIGING', search_mode=SearchMode.KDTREE_FIXED_COUNT, search_radius=0.0, expected_count=12, max_point_count_in_node=50, max_point_count_for_interpolation=200, variogram_mode=VariogramMode.SPHERICAL, angle=0.0, mean=0.0, exponent=Exponent.EXP1, nugget=0.0, range_value=0.0, sill=0.0, bounds=None, z_value_scale=1.0, out_data=None, out_dataset_name=None, progress=None)

使用克吕金插值方法对点数据集或记录集进行插值。具体参考 interpolate()InterpolationKrigingParameter

参数:
  • input_data (DatasetVector or str or Recordset) -- 需要进行插值分析的点数据集或点记录集
  • z_value_field (str) -- 存储用于进行插值分析的值的字段名称。插值分析不支持文本类型的字段。
  • pixel_format (PixelFormat or str) -- 指定结果栅格数据集存储的像素,不支持 BIT64
  • resolution (float) -- 插值运算时使用的分辨率
  • krighing_type (InterpolationAlgorithmType or str) -- 插值分析的算法类型。支持设置 KRIGING, SimpleKRIGING, UniversalKRIGING 三种,默认使用 KRIGING。
  • search_mode (SearchMode or str) -- 查找模式。
  • search_radius (float) -- 查找参与运算点的查找半径。单位与用于插值的点数据集(或记录集所属的数据集)的单位相同。查找半径决定了参与 运算点的查找范围,当计算某个位置的未知数值时,会以该位置为圆心,search_radius 为半径,落在这个范围内的 采样点都将参与运算,即该位置的预测值由该范围内采样点的数值决定。
  • expected_count (int) -- 期望参与插值运算的点数,当查找方式为变长查找时,表示期望参与运算的最多样点数。
  • max_point_count_in_node (int) -- 单个块内最多查找点数。当用QuadTree的查找插值点时,才可以设置块内最多点数。
  • max_point_count_for_interpolation (int) -- 设置块查找时,最多参与插值的点数。注意,该值必须大于零。当用QuadTree的查找插值点时,才可以设置最多参与插值的点数
  • variogram (VariogramMode or str) -- 克吕金(Kriging)插值时的半变函数类型。默认值为 VariogramMode.SPHERICAL
  • angle (float) -- 克吕金算法中旋转角度值
  • mean (float) -- 插值字段的平均值,即采样点插值字段值总和除以采样点数目。
  • exponent (Exponent or str) -- 用于插值的样点数据中趋势面方程的阶数
  • nugget (float) -- 块金效应值。
  • range_value (float) -- 自相关阈值。
  • sill (float) -- 基台值
  • bounds (Rectangle) -- 插值分析的范围,用于确定运行结果的范围
  • z_value_scale (float) -- 插值分析值的缩放比率
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据集所在的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetGrid or str

iobjectspy.analyst.rbf_interpolate(input_data, z_value_field, pixel_format, resolution, search_mode=SearchMode.KDTREE_FIXED_COUNT, search_radius=0.0, expected_count=12, max_point_count_in_node=50, max_point_count_for_interpolation=200, smooth=0.100000001490116, tension=40, bounds=None, z_value_scale=1.0, out_data=None, out_dataset_name=None, progress=None)

使用径向基函数(RBF) 插值方法对点数据集或记录集进行插值。具体参考 interpolate()InterpolationRBFParameter

参数:
  • input_data (DatasetVector or str or Recordset) -- 需要进行插值分析的点数据集或点记录集
  • z_value_field (str) -- 存储用于进行插值分析的值的字段名称。插值分析不支持文本类型的字段。
  • pixel_format (PixelFormat or str) -- 指定结果栅格数据集存储的像素,不支持 BIT64
  • resolution (float) -- 插值运算时使用的分辨率
  • search_mode (SearchMode or str) -- 查找模式。
  • search_radius (float) -- 查找参与运算点的查找半径。单位与用于插值的点数据集(或记录集所属的数据集)的单位相同。查找半径决定了参与运算点的查找范围,当计算某个位置的未知数值时,会以该位置为圆心,search_radius 为半径,落在这个范围内的采样点都将参与运算,即该位置的预测值由该范围内采样点的数值决定。
  • expected_count (int) -- 期望参与插值运算的点数,当查找方式为变长查找时,表示期望参与运算的最多样点数。
  • max_point_count_in_node (int) -- 单个块内最多查找点数。当用QuadTree的查找插值点时,才可以设置块内最多点数。
  • max_point_count_for_interpolation (int) -- 设置块查找时,最多参与插值的点数。注意,该值必须大于零。当用QuadTree的查找插值点时,才可以设置最多参与插值的点数
  • smooth (float) -- 光滑系数,值域为 [0,1]
  • tension (float) -- 张力系数
  • bounds (Rectangle) -- 插值分析的范围,用于确定运行结果的范围
  • z_value_scale (float) -- 插值分析值的缩放比率
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据集所在的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetGrid or str

iobjectspy.analyst.vector_to_raster(input_data, value_field, clip_region=None, cell_size=None, pixel_format=PixelFormat.SINGLE, out_data=None, out_dataset_name=None, progress=None)

通过指定转换参数设置将矢量数据集转换为栅格数据集。

参数:
  • input_data (DatasetVector or str) -- 待转换的矢量数据集。支持点、线和面数据集
  • value_field (str) -- 矢量数据集中存储栅格值的字段
  • clip_region (GeoRegion or Rectangle) -- 转换的有效区域
  • cell_size (float) -- 结果栅格数据集的单元格大小
  • pixel_format (PixelFormat or str) -- 如果将矢量数据转为像素格式 为 UBIT1、UBIT4 和 UBIT8 的栅格数据集,矢量数据中值为 0 的对象在结果栅格中会丢失。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据集所在的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetGrid or str

iobjectspy.analyst.raster_to_vector(input_data, value_field, out_dataset_type=DatasetType.POINT, back_or_no_value=-9999, back_or_no_value_tolerance=0.0, specifiedvalue=None, specifiedvalue_tolerance=0.0, valid_region=None, is_thin_raster=True, smooth_method=None, smooth_degree=0.0, out_data=None, out_dataset_name=None, progress=None)

通过指定转换参数设置将栅格数据集转换为矢量数据集。

参数:
  • input_data (DatasetGrid or DatasetImage or str) -- 待转换的栅格数据集或影像数据集
  • value_field (str) -- 结果矢量数据集中存储值的字段
  • out_dataset_type (DatasetType or str) -- 结果数据集类型,支持点、线和面数据集。当结果数据集类型为线数据聚集时,is_thin_raster, smooth_method, smooth_degree 才有效。
  • back_or_no_value (int or tuple) --

    设置栅格的背景色或表示无值的值,只在栅格转矢量时有效。 允许用户指定一个值来标识那些不需要转换的单元格:

    • 当被转换的栅格数据为栅格数据集时,栅格值为指定的值的单元格被视为无值,这些单元格不会被转换,而栅格的原无值将作为有效值来参与转换。
    • 当被转化的栅格数据为影像数据集时,栅格值为指定的值的单元格被视为背景色,从而不参与转换。

    需要注意,影像数据集中栅格值代表的是一个颜色或颜色的索引值,与其像素格式(PixelFormat)有关。对于 BIT32、UBIT32、RGBA、RGB 和 BIT16

    格式的影像数据集,其栅格值对应为 RGB 颜色,可以使用一个 tuple 或 int 来表示 RGB 值 或 RGBA 值

    对于 UBIT8 和 UBIT4 格式的影像数据集,其栅格值对应的是颜色的索引值,因此,应为该属性设置的值为被视为背景色的颜色对应的索引值。

  • back_or_no_value_tolerance (int or float or tuple) --

    栅格背景色的容限或无值的容限,只在栅格转矢量时有效。用于配合 back_or_no_value 方法(指定栅格无值或者背景色)来共同确定栅格数据中哪些值不被转换:

    • 当被转换的栅格数据为栅格数据集时,如果指定为无值的值为 a,指定的无值的容限为 b,则栅格值在[a-b,a+b]范围内的单元格均被视为无值。需要注意,无值的容限是用户指定的无值的值的容限,与栅格中原无值无关。
    • 当被转化的栅格数据为影像数据集时,该容限值为一个32位整型值或tuple,tuple用于表示 RGB值或RGBA值。
    • 该值代表的意义与影像数据集的像素格式有关:对于栅格值对应 RGB 颜色的影像数据集,该值在系统内部被转为分别对应 R、G、B 的三个容限值, 例如,指定为背景色的颜色为(100,200,60),指定的容限值为329738,该值对应的 RGB 值为(10,8,5),则值在 (90,192,55) 和 (110,208,65) 之间的颜色均为背景色;对于栅格值为颜色索引值的影像数据集,该容限值为颜色索引值的容限,在该容限范围内的栅格值均视为背景色。
  • specifiedvalue (int or float or tuple) -- 栅格按值转矢量时指定的栅格值。只将具有该值的栅格转为矢量。
  • specifiedvalue_tolerance (int or float or tuple) -- 栅格按值转矢量时指定的栅格值的容限
  • valid_region (GeoRegion or Rectangle) -- 转换的有效区域
  • is_thin_raster (bool) -- 转换之前是否进行栅格细化。
  • smooth_method (SmoothMethod or str) -- 光滑方法,只在栅格转为矢量线数据时有效
  • smooth_degree (int) --

    光滑度。光滑度的值越大,光滑度的值越大,则结果矢量线的光滑度越高。当 smooth_method 不为 NONE 时有效。光滑度的有效取值与光滑方法有关,光滑方法有 B 样条法和磨角法:

    • 光滑方法为 B 样条法时,光滑度的有效取值为大于等于2的整数,建议取值范围为[2,10]。
    • 光滑方法为磨角法时,光滑度代表一次光滑过程中磨角的次数,设置为大于等于1的整数时有效
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据集所在的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetVector or str

iobjectspy.analyst.cost_distance(input_data, cost_grid, max_distance=-1.0, cell_size=None, out_data=None, out_distance_grid_name=None, out_direction_grid_name=None, out_allocation_grid_name=None, progress=None)

根据给定的参数,生成耗费距离栅格,以及耗费方向栅格和耗费分配栅格。

实际应用中,直线距离往往不能满足要求。例如,从 B 到最近源 A 的直线距离与从 C 到最近源 A 的直线距离相同,若 BA 路段交通拥堵,而 CA 路段交通畅 通,则其时间耗费必然不同;此外,通过直线距离对应的路径到达最近源时常常是不可行的,例如,遇到河流、高山等障碍物就需要绕行,这时就需要考虑其耗费距离。

该方法根据源数据集和耗费栅格生成相应的耗费距离栅格、耗费方向栅格(可选)和耗费分配栅格(可选)。源数据可以是矢量数据(点、线、面),也可以是栅格数据。 对于栅格数据,要求除标识源以外的单元格为无值。

  • 耗费距离栅格的值表示该单元格到最近源的最小耗费值(可以是各种类型的耗费因子,也可以是各感兴趣的耗费因子的加权)。最近源 是当前单元格到达所有的源中耗费最小的一个源。耗费栅格中为无值的单元格在输出的耗费距离栅格中仍为无值。

    单元格到达源的耗费的计算方法是,从待计算单元格的中心出发,到达最近源的最小耗费路径在每个单元格上经过的距离乘以耗费栅格 上对应单元格的值,将这些值累加即为单元格到源的耗费值。因此,耗费距离的计算与单元格大小和耗费栅格有关。在下面的示意图中, 源栅格和耗费栅格的单元格大小(cell_size)均为2,单元格(2,1)到达源(0,0)的最小耗费路线如右图中红线所示:

    ../_images/CostDistance_1.png

    那么单元格(2,1)到达源的最小耗费(即耗费距离)为:

    ../_images/CostDistance_2.png
  • 耗费方向栅格的值表达的是从该单元格到达最近的源的最小耗费路径的行进方向。在耗费方向栅格中,可能的行进方向共有八个(正北、 正南、正西、正东、西北、西南、东南、东北),使用1到8八个整数对这八个方向进行编码,如下图所示。注意,源所在的单元格在耗费 方向栅格中的值为0,耗费栅格中为无值的单元格在输出的耗费方向栅格中将被赋值为15。

    ../_images/CostDistance_3.png
  • 耗费分配栅格的值为单元格的最近源的值(源为栅格时,为最近源的栅格值;源为矢量对象时,为最近源的 SMID),单元格到达最近的 源具有最小耗费距离。耗费栅格中为无值的单元格在输出的耗费分配栅格中仍为无值。

    下图为生成耗费距离的示意图。其中,在耗费栅格上,使用蓝色箭头标识了单元格到达最近源的行进路线,耗费方向栅格的值即标示了 当前单元格到达最近源的最小耗费路线的行进方向。

    ../_images/CostDistance_4.png

下图为生成耗费距离栅格的一个实例,其中源数据集为点数据集,耗费栅格为对应区域的坡度栅格的重分级结果,生成了耗费距离栅格、耗费方向栅格和耗费分配栅格。

../_images/CostDistance.png
参数:
  • input_data (DatasetVector or DatasetGrid or str) -- 生成距离栅格的源数据集。源是指感兴趣的研究对象或地物,如学校、道路或消防栓等。包含源的数据集,即为源数据集。源数据集可以为 点、线、面数据集,也可以为栅格数据集,栅格数据集中具有有效值的栅格为源,对于无值则视为该位置没有源。
  • cost_grid (DatasetGrid) -- 耗费栅格。其栅格值不能为负值。该数据集为一个栅格数据集,每个单元格的值表示经过此单元格时的单位耗费。
  • max_distance (float) -- 生成距离栅格的最大距离,大于该距离的栅格其计算结果取无值。若某个栅格单元格 A 到最近源之间的最短距离大于该值,则结果数据集中该栅格的值取无值。
  • cell_size (float) -- 结果数据集的分辨率,是生成距离栅格的可选参数
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据集所在的数据源
  • out_distance_grid_name (str) -- 结果距离栅格数据集的名称。如果名称为空,将自动获取有效的数据集名称。
  • out_direction_grid_name (str) -- 方向栅格数据集的名称,如果为空,将不生成方向栅格数据集
  • out_allocation_grid_name (str) -- 分配栅格数据集的名称,如果为空,将不生成 分配栅格数据集
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

如果生成成功,返回结果数据集或数据集名称的元组,其中第一个为距离栅格数据集,第二个为方向栅格数据集,第三个为分配栅格数据集,如果没有设置方向栅格数据集名称和 分配栅格数据集名称,对应的值为 None

返回类型:

tuple[DataetGrid] or tuple[str]

iobjectspy.analyst.cost_path(input_data, distance_dataset, direction_dataset, compute_type, out_data=None, out_dataset_name=None, progress=None)

根据耗费距离栅格和耗费方向栅格,分析从目标出发到达最近源的最短路径栅格。 该方法根据给定的目标数据集,以及通过“生成耗费距离栅格”功能得到的耗费距离栅格和耗费方向栅格,来计算每个目标对象到达最近的源的最短路径,也就是最小 耗费路径。该方法不需要指定源所在的数据集,因为源的位置在距离栅格和方向栅格中能够体现出来,即栅格值为 0 的单元格。生成的最短路径栅格是一个二值栅 格,值为 1 的单元格表示路径,其他单元格的值为 0。

例如,将购物商场(一个点数据集)作为源,各居民小区(一个面数据集)作为目标,分析从各居民小区出发,如何到达距其最近的购物商场。实现的过程是,首先 针对源(购物商场)生成距离栅格和方向栅格,然后将居民小区作为目标区域,通过最短路径分析,得到各居民小区(目标)到最近购物商场(源)的最短路径。该 最短路径包含两种含义:通过直线距离栅格与直线方向栅格,将得到最小直线距离路径;通过耗费距离栅格与耗费方向栅格,则得到最小耗费路径。

注意,该方法中要求输入的耗费距离栅格和耗费方向栅格必须是匹配的,也就是说二者应是同一次使用“生成耗费距离栅格”功能生成的。此外,有三种计算最短路径 的方式:像元路径、区域路径和单一路径,具体含义请参见 ComputeType 类。

参数:
  • input_data (DatasetVector or DatasetGrid or DatasetImage or str) -- 目标所在的数据集。可以为点、线、面或栅格数据集。如果是栅格数据,要求除标识目标以外的单元格为无值。
  • distance_dataset (DatasetGrid or str) -- 耗费距离栅格数据集。
  • direction_dataset (DatasetGrid or str) -- 耗费方向栅格数据集
  • compute_type (ComputeType or str) -- 栅格距离最短路径分析的计算方式
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据集所在的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetVector or str

iobjectspy.analyst.cost_path_line(source_point, target_point, cost_grid, smooth_method=None, smooth_degree=0, progress=None)

根据给定的参数,计算源点和目标点之间的最小耗费路径(一个二维矢量线对象)。该方法用于根据给定的源点、目标点和耗费栅格,计算源点与目标点之间的最小耗费路径

下图为计算两点间最小耗费路径的实例。该例以 DEM 栅格的坡度的重分级结果作为耗费栅格,分析给定的源点和目标点之间的最小耗费路径。

../_images/CostPathLine.png
参数:
  • source_point (Point2D) -- 指定的源点
  • target_point (Point2D) -- 指定的目标点
  • cost_grid (DatasetGrid) -- 耗费栅格。其栅格值不能为负值。该数据集为一个栅格数据集,每个单元格的值表示经过此单元格时的单位耗费。
  • smooth_method (SmoothMethod or str) -- 计算两点(源和目标)间最短路径时对结果路线进行光滑的方法
  • smooth_degree (int) -- 计算两点(源和目标)间最短路径时对结果路线进行光滑的光滑度。 光滑度的值越大,光滑度的值越大,则结果矢量线的光滑度越高。当 smooth_method 不为 NONE 时有效。光滑度的有效取值与光滑方法有关,光滑方法有 B 样条法和磨角法: - 光滑方法为 B 样条法时,光滑度的有效取值为大于等于2的整数,建议取值范围为[2,10]。 - 光滑方法为磨角法时,光滑度代表一次光滑过程中磨角的次数,设置为大于等于1的整数时有效
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

返回表示最短路径的线对象和最短路径的花费

返回类型:

tuple[GeoLine,float]

iobjectspy.analyst.path_line(target_point, distance_dataset, direction_dataset, smooth_method=None, smooth_degree=0)

根据距离栅格和方向栅格,分析从目标点出发到达最近源的最短路径(一个二维矢量线对象)。 该方法根据距离栅格和方向栅格,分析给定的目标点到达最近源的最短路径。其中距离栅格和方向栅格可以是耗费距离栅格和耗费方向栅格,也可以是表面距离栅格和表面方向栅格。

  • 当距离栅格为耗费距离栅格,方向栅格为耗费方向栅格时,该方法计算得出的是最小耗费路径。耗费距离栅格和耗费方向栅格可以通过 costDistance 方法生成。注意,此方法要求二者是同一次生成的结果。
  • 当距离栅格为表面距离栅格,方向栅格为表面方向栅格时,该方法计算得出的是最短表面距离路径。表面距离栅格和表面方向栅格可以通过 surfaceDistance 方法生成。同样,此方法要求二者是同一次生成的结果。

源的位置在距离栅格和方向栅格中能够体现出来,即栅格值为 0 的单元格。源可以是一个,也可以有多个。当有多个源时,最短路径是目标点到达其最近的源的路径。

下图为源、表面栅格、耗费栅格和目标点,其中耗费栅格是对表面栅格计算坡度后重分级的结果。

../_images/PathLine_2.png

使用如上图所示的源和表面栅格生成表面距离栅格和表面方向栅格,然后计算目标点到最近源的最短表面距离路径;使用源和耗费栅格生成耗费距离栅格和耗费方向栅格,然后计算目标点到最近源的最小耗费路径。得到的结果路径如下图所示:

../_images/PathLine_3.png
参数:
  • target_point (Point2D) -- 指定的目标点。
  • distance_dataset (DatasetGrid) -- 指定的距离栅格。可以是耗费距离栅格或表面距离栅格。
  • direction_dataset (DatasetGrid) -- 指定的方向栅格。与距离栅格对应,可以是耗费方向栅格或表面方向栅格。
  • smooth_method (SmoothMethod or str) -- 计算两点(源和目标)间最短路径时对结果路线进行光滑的方法
  • smooth_degree (int) -- 计算两点(源和目标)间最短路径时对结果路线进行光滑的光滑度。 光滑度的值越大,光滑度的值越大,则结果矢量线的光滑度越高。当 smooth_method 不为 NONE 时有效。光滑度的有效取值与光滑方法有关,光滑方法有 B 样条法和磨角法: - 光滑方法为 B 样条法时,光滑度的有效取值为大于等于2的整数,建议取值范围为[2,10]。 - 光滑方法为磨角法时,光滑度代表一次光滑过程中磨角的次数,设置为大于等于1的整数时有效
返回:

返回表示最短路径的线对象和最短路径的花费

返回类型:

tuple[GeoLine,float]

iobjectspy.analyst.straight_distance(input_data, max_distance=-1.0, cell_size=None, out_data=None, out_distance_grid_name=None, out_direction_grid_name=None, out_allocation_grid_name=None, progress=None)

根据给定的参数,生成直线距离栅格,以及直线方向栅格和直线分配栅格。

该方法用于对源数据集生成相应的直线距离栅格、直线方向栅格(可选)和直线分配栅格(可选),三个结果数据集的区域范围与源数据集的范围一致。生成直线距 离栅格的源数据可以是矢量数据(点、线、面),也可以是栅格数据。对于栅格数据,要求除标识源以外的单元格为无值。

  • 直线距离栅格的值代表该单元格到最近的源的欧氏距离(即直线距离)。最近源是当前单元格到达所有源中直线距离最短的一个源。对于每个 单元格,它的中心与源的中心相连的直线即为单元格到源的距离,计算的方法是通过二者形成的直角三角形的两条直角边来计算,因此直线 距离的计算只与单元格大小(即分辨率)有关。下图为直线距离计算的示意图,其中源栅格的单元格大小(cell_size)为10。

    ../_images/StraightDistance_1.png

    那么第三行第三列的单元格到源的距离L为:

    ../_images/StraightDistance_2.png
  • 直线方向栅格的值表示该单元格到最近的源的方位角,单位为度。以正东方向为90度,正南为180度,正西为270度,正北为360度,顺时针方向旋转,范围为0-360度,并规定对应源的栅格值为0度。

  • 直线分配栅格的值为单元格的最近源的值(源为栅格时,为最近源的栅格值;源为矢量对象时,为最近源的 SMID),因此从直线分配栅格中可以得知每个单元格的最近的源是哪个。

下图为生成直线距离的示意图。单元格大小均为2。

../_images/StraightDistance_3.png

直线距离栅格通常用于分析经过的路线没有障碍或等同耗费的情况,例如,救援飞机飞往最近的医院时,空中没有障碍物,因此采用哪条路线的耗费均相同,此时通过直线距离栅格就可以确定从救援飞机所在地点到周围各医院的距离;根据直线分配栅格可以获知离救援飞机所在地点最近的医院;由直线方向栅格可以确定最近的医院在救援飞机所在地点的方位。

然而,在救援汽车开往最近医院的实例中,因为地表有各种类型的障碍物,采用不同的路线的耗费不尽相同,这时,就需要使用耗费距离栅格来进行分析。有关耗费距离栅格请参见 CostDistance 方法。

下图为生成直线距离栅格的一个实例,其中源数据集为点数据集,生成了直线距离栅格、直线方向栅格和直线分配栅格。

../_images/StraightDistance.png

注意:当数据集的最小外接矩形(bounds)为某些特殊情形时,结果数据集的 Bounds 按以下规则取值:

  • 当源数据集的 Bounds 的高和宽均为 0 (如只有一个矢量点)时,结果数据集的 Bounds 的高和宽,均取源数据集 Bounds 的左边界值(Left)和下边界值(Right)二者绝对值较小的一个。
  • 当源数据集的 Bounds 的高为 0 而宽不为 0 (如只有一条水平线)时,结果数据集的 Bounds 的高和宽,均等于源数据集 Bounds 的宽。
  • 当源数据集的 Bounds 的宽为 0 而高不为 0 (如只有一条竖直线)时,结果数据集的 Bounds 的高和宽,均等于源数据集 Bounds 的高。
参数:
  • input_data (DatasetVector or DatasetGrid or DatasetImage or str) -- 生成距离栅格的源数据集。源是指感兴趣的研究对象或地物,如学校、道路或消防栓等。包含源的数据集,即为源数据集。源数据集可以为 点、线、面数据集,也可以为栅格数据集,栅格数据集中具有有效值的栅格为源,对于无值则视为该位置没有源。
  • max_distance (float) -- 生成距离栅格的最大距离,大于该距离的栅格其计算结果取无值。若某个栅格单元格 A 到最近源之间的最短距离大于该值,则结果数据集中该栅格的值取无值。
  • cell_size (float) -- 结果数据集的分辨率,是生成距离栅格的可选参数
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据集所在的数据源
  • out_distance_grid_name (str) -- 结果距离栅格数据集的名称。如果名称为空,将自动获取有效的数据集名称。
  • out_direction_grid_name (str) -- 方向栅格数据集的名称,如果为空,将不生成方向栅格数据集
  • out_allocation_grid_name (str) -- 分配栅格数据集的名称,如果为空,将不生成 分配栅格数据集
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

如果生成成功,返回结果数据集或数据集名称的元组,其中第一个为距离栅格数据集,第二个为方向栅格数据集,第三个为分配栅格数据集,如果没有设置方向栅格数据集名称和 分配栅格数据集名称,对应的值为 None

返回类型:

tuple[DataetGrid] or tuple[str]

iobjectspy.analyst.surface_distance(input_data, surface_grid_dataset, max_distance=-1.0, cell_size=None, max_upslope_degrees=90.0, max_downslope_degree=90.0, out_data=None, out_distance_grid_name=None, out_direction_grid_name=None, out_allocation_grid_name=None, progress=None)

根据给定的参数,生成表面距离栅格,以及表面方向栅格和表面分配栅格。 该方法根据源数据集和表面栅格生成相应的表面距离栅格、表面方向栅格(可选)和表面 分配栅格(可选)。源数据可以是矢量数据(点、线、面),也可以是栅格数据。对于栅格数据,要求除标识源以外的单元格为无值。

  • 表面距离栅格的值表示表面栅格上该单元格到最近源的表面最短距离。最近源是指当前单元格到达所有的源中表面距离最短的一个源。表面栅格中为无值的单元格在输出的表面距离栅格中仍为无值。 从当前单元格(设为 g1)到达下一个单元格(设为 g2)的表面距离 d 的计算方法为:

    ../_images/SurfaceDistance_1.png

    其中,b 为 g1 的栅格值(即高程)与 g2 的栅格值的差;a 为 g1 与 g2 的中心点之间的直线距离,其值考虑两种情况,当 g2 是与 g1 相邻的上、下、左、右四个单元格之一时,a 的值等于单元格大小;当 g2 是与 g1 对角相邻的四个单元格之一时,a 的值为单元格大小乘以根号 2。

    当前单元格到达最近源的距离值就是沿着最短路径的表面距离值。在下面的示意图中,源栅格和表面栅格的单元格大小(CellSize)均为 1,单元格(2,1)到达源(0,0)的表面最短路径如右图中红线所示:

    ../_images/SurfaceDistance_2.png

    那么单元格(2,1)到达源的最短表面距离为:

    ../_images/SurfaceDistance_3.png
  • 表面方向栅格的值表达的是从该单元格到达最近源的最短表面距离路径的行进方向。在表面方向栅格中,可能的行进方向共有八个(正北、 正南、正西、正东、西北、西南、东南、东北),使用 1 到 8 八个整数对这八个方向进行编码,如下图所示。注意,源所在的单元格在表面方向栅格中的值为 0,表面栅格中为无值的单元格在输出的表面方向栅格中将被赋值为 15。

    ../_images/CostDistance_3.png
  • 表面分配栅格的值为单元格的最近源的值(源为栅格时,为最近源的栅格值;源为矢量对象时,为最近源的 SMID),单元格到达最近的源具有最短表面距离。表面栅格中为无值的单元格在输出的表面分配栅格中仍为无值。 下图为生成表面距离的示意图。其中,在表面栅格上,根据结果表面方向栅格,使用蓝色箭头标识了单元格到达最近源的行进方向。

    SurfaceDistance_4.png

通过上面的介绍,可以了解到,结合表面距离栅格及对应的方向、分配栅格,可以知道表面栅格上每个单元格最近的源是哪个,表面距离是多少以及如何到达该最近源。

注意,生成表面距离时可以指定最大上坡角度(max_upslope_degrees)和最大下坡角度(max_downslope_degree),从而在寻找最近源时 避免经过上下坡角度超过指定值的单元格。从当前单元格行进到下一个高程更高的单元格为上坡,上坡角度即上坡方向与水平面的夹角,如果 上坡角度大于给定值,则不会考虑此行进方向;从当前单元格行进到下一个高程小于当前高程的单元格为下坡,下坡角度即下坡方向与水平面 的夹角,同样的,如果下坡角度大于给定值,则不会考虑此行进方向。如果由于上下坡角度限制,使得当前单元格没能找到最近源,那么在 表面距离栅格中该单元格的值为无值,在方向栅格和分配栅格中也为无值。

下图为生成表面距离栅格的一个实例,其中源数据集为点数据集,表面栅格为对应区域的 DEM 栅格,生成了表面距离栅格、表面方向栅格和表面分配栅格。

../_images/SurfaceDistance.png
参数:
  • input_data (DatasetVector or DatasetGrid or DatasetImage or str) -- 生成距离栅格的源数据集。源是指感兴趣的研究对象或地物,如学校、道路或消防栓等。包含源的数据集,即为源数据集。源数据集可以为 点、线、面数据集,也可以为栅格数据集,栅格数据集中具有有效值的栅格为源,对于无值则视为该位置没有源。
  • surface_grid_dataset (DatasetGrid or str) -- 表面栅格
  • max_distance (float) -- 生成距离栅格的最大距离,大于该距离的栅格其计算结果取无值。若某个栅格单元格 A 到最近源之间的最短距离大于该值,则结果数据集中该栅格的值取无值。
  • cell_size (float) -- 结果数据集的分辨率,是生成距离栅格的可选参数
  • max_upslope_degrees (float) -- 最大上坡角度。单位为度,取值范围为大于或等于0。默认值为 90 度,即不考虑上坡角度。 如果指定了最大上坡角度,则选择路线的时候会考虑地形的上坡的角度。从当前单元格行进到下一个高程更高的单元格 为上坡,上坡角度即上坡方向与水平面的夹角。如果上坡角度大于给定值,则不会考虑此行进方向,即给出的路线不会 经过上坡角度大于该值的区域。可想而知,可能会因为该值的设置而导致没有符合条件的路线。此外,由于坡度的表示 范围为0到90度,因此,虽然可以指定为一个大于90度的值,但产生的效果与指定为90度相同,即不考虑上坡角度。
  • max_downslope_degree (float) -- 设置最大下坡角度。单位为度,取值范围为大于或等于0。 如果指定了最大下坡角度,则选择路线的时候会考虑地形的下坡的角度。从当前单元格行进到下一个高程小于当前高 程的单元格为下坡,下坡角度即下坡方向与水平面的夹角。如果下坡角度大于给定值,则不会考虑此行进方向,即给 出的路线不会经过下坡角度大于该值的区域。可想而知,可能会因为该值的设置而导致没有符合条件的路线。此外, 由于坡度的表示范围为0到90度,因此,虽然可以指定为一个大于90度的值,但产生的效果与指定为90度相同,即不 考虑下坡角度。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据集所在的数据源
  • out_distance_grid_name (str) -- 结果距离栅格数据集的名称。如果名称为空,将自动获取有效的数据集名称。
  • out_direction_grid_name (str) -- 方向栅格数据集的名称,如果为空,将不生成方向栅格数据集
  • out_allocation_grid_name (str) -- 分配栅格数据集的名称,如果为空,将不生成 分配栅格数据集
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

如果生成成功,返回结果数据集或数据集名称的元组,其中第一个为距离栅格数据集,第二个为方向栅格数据集,第三个为分配栅格数据集,如果没有设置方向栅格数据集名称和 分配栅格数据集名称,对应的值为 None

返回类型:

tuple[DataetGrid] or tuple[str]

iobjectspy.analyst.surface_path_line(source_point, target_point, surface_grid_dataset, max_upslope_degrees=90.0, max_downslope_degree=90.0, smooth_method=None, smooth_degree=0, progress=None)

根据给定的参数,计算源点和目标点之间的最短表面距离路径(一个二维矢量线对象)。该方法用于根据给定的源点、目标点和表面栅格,计算源点与目标点之间的最短表面距离路径。

设置最大上坡角度(max_upslope_degrees)和最大下坡角度(max_downslope_degree)可以使分析得出的路线不经过过于陡峭的地形。 但注意,如果指定了上下坡角度限制,也可能得不到分析结果,这与最大上下坡角度的值和表面栅格所表达的地形有关。下图展示了将最 大上坡角度和最大下坡角度分别均设置为 5 度、10 度和 90 度(即不限制上下坡角度)时的表面距离最短路径,由于对上下坡角度做出 了限制,因此表面距离最短路径是以不超过最大上下坡角度为前提而得出的。

../_images/SurfacePathLine.png
参数:
  • source_point (Point2D) -- 指定的源点。
  • target_point (Point2D) -- 指定的目标点。
  • surface_grid_dataset (DatasetGrid or str) -- 表面栅格
  • max_upslope_degrees (float) -- 最大上坡角度。单位为度,取值范围为大于或等于0。默认值为 90 度,即不考虑上坡角度。 如果指定了最大上坡角度,则选择路线的时候会考虑地形的上坡的角度。从当前单元格行进到下一个高程更高的单元格 为上坡,上坡角度即上坡方向与水平面的夹角。如果上坡角度大于给定值,则不会考虑此行进方向,即给出的路线不会 经过上坡角度大于该值的区域。可想而知,可能会因为该值的设置而导致没有符合条件的路线。此外,由于坡度的表示 范围为0到90度,因此,虽然可以指定为一个大于90度的值,但产生的效果与指定为90度相同,即不考虑上坡角度。
  • max_downslope_degree (float) -- 设置最大下坡角度。单位为度,取值范围为大于或等于0。 如果指定了最大下坡角度,则选择路线的时候会考虑地形的下坡的角度。从当前单元格行进到下一个高程小于当前高 程的单元格为下坡,下坡角度即下坡方向与水平面的夹角。如果下坡角度大于给定值,则不会考虑此行进方向,即给 出的路线不会经过下坡角度大于该值的区域。可想而知,可能会因为该值的设置而导致没有符合条件的路线。此外, 由于坡度的表示范围为0到90度,因此,虽然可以指定为一个大于90度的值,但产生的效果与指定为90度相同,即不 考虑下坡角度。
  • smooth_method (SmoothMethod or str) -- 计算两点(源和目标)间最短路径时对结果路线进行光滑的方法
  • smooth_degree (int) -- 计算两点(源和目标)间最短路径时对结果路线进行光滑的光滑度。 光滑度的值越大,光滑度的值越大,则结果矢量线的光滑度越高。当 smooth_method 不为 NONE 时有效。光滑度的有效取值与光滑方法有关,光滑方法有 B 样条法和磨角法: - 光滑方法为 B 样条法时,光滑度的有效取值为大于等于2的整数,建议取值范围为[2,10]。 - 光滑方法为磨角法时,光滑度代表一次光滑过程中磨角的次数,设置为大于等于1的整数时有效
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

返回表示最短路径的线对象和最短路径的花费

返回类型:

tuple[GeoLine,float]

iobjectspy.analyst.calculate_hill_shade(input_data, shadow_mode, azimuth, altitude_angle, z_factor, out_data=None, out_dataset_name=None, progress=None)

三维晕渲图是指通过模拟实际地表的本影与落影的方式反映地形起伏状况的栅格图。通过采用假想的光源照射地表,结合栅格数据得到的坡度坡向信息, 得到各像元 的灰度值,面向光源的斜坡的灰度值较高,背向光源的灰度值较低,即为阴影区,从而形象表现出实际地表的地貌和地势。 由栅格数据计算得出的这种山体阴影图 往往具有非常逼真的立体效果,因而称其为三维晕渲图。

../_images/CalculateHillShade.png

三维晕渲图在描述地表三维状况和地形分析中都具有比较重要的价值,当将其他专题信息叠加在三维晕渲图之上时,将会更加提高三维晕渲图的应用价值和直观效果。

在生成三维晕渲图时,需要指定假想光源的位置,该位置由光源的方位角和高度角确定。方位角确定光源的方向,高度角是光源照射时倾斜角度。例如,当光源的方位角 为 315 度,高度角为 45 度时,其与地表的相对位置如下图所示。

../_images/CalculateHillShade_1.png

三维晕渲图有三种类型:渲染阴影效果、渲染效果和阴影效果,通过 :py:class`ShadowMode` 类来指定。

参数:
  • input_data (DatasetGrid or str) -- 指定的待生成三维晕渲图的栅格数据集
  • shadow_mode (ShadowMode or str) -- 三维晕渲图的渲染类型
  • azimuth (float) --

    指定的光源方位角。用于确定光源的方向,是从光源所在位置的正北方向线起,依顺时针方向到光源与目标方向线 的夹角,范围为 0-360 度,以正北方向为 0 度,依顺时针方向递增。

    ../_images/Azimuth.png
  • altitude_angle (float) --

    指定的光源高度角。用于确定光源照射的倾斜角度,是光源与目标的方向线与水平面间的夹角,范围为 0-90 度。当光源高度角为 90 度时,光源正射地表。

    ../_images/AltitudeAngle.png
  • z_factor (float) -- 指定的高程缩放系数。该值是指在栅格中,栅格值(Z 坐标,即高程值)相对于 X 和 Y 坐标的单位变换系数。通常有 X,Y,Z 都参加的计算中,需要将高程值乘以一个高程缩放系数,使得三者单位一致。例如,X、Y 方向上的单位是米,而 Z 方向的单位是英尺,由于 1 英尺等于 0.3048 米,则需要指定缩放系数为 0.3048。如果设置为 1.0,表示不缩放。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据集所在的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetGrid or str

iobjectspy.analyst.calculate_slope(input_data, slope_type, z_factor, out_data=None, out_dataset_name=None, progress=None)

计算坡度,并返回坡度栅格数据集,即坡度图。 坡度是地表面上某一点的切面和水平面所成的夹角。坡度值越大,表示地势越陡峭

注意:
计算坡度时,要求待计算的栅格值(即高程)的单位与 x,y 坐标的单位相同。如果不一致,可通过高程缩放系数(方法中对应 zFactor 参数)来调整。 但注意,当高程值单位与坐标单位间的换算无法通过固定值来调节时,则需要通过其他途径对数据进行处理。最常见的情况之一是 DEM 栅格采用地理坐标系时, 单位为度,而高程值单位为米,此时建议对 DEM 栅格进行投影转换,将 x,y 坐标转换为平面坐标。
参数:
  • input_data (DatasetGrid or str) -- 指定的的待计算坡度的栅格数据集
  • slope_type (SlopeType or str) -- 坡度的单位类型
  • z_factor (float) -- 指定的高程缩放系数。该值是指在栅格中,栅格值(Z 坐标,即高程值)相对于 X 和 Y 坐标的单位变换系数。通常有 X,Y,Z 都参加的计算中,需要将高程值乘以一个高程缩放系数,使得三者单位一致。例如,X、Y 方向上的单位是米,而 Z 方向的单位是 英尺,由于 1 英尺等于 0.3048 米,则需要指定缩放系数为 0.3048。如果设置为 1.0,表示不缩放。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据集所在的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetGrid or str

iobjectspy.analyst.calculate_aspect(input_data, out_data=None, out_dataset_name=None, progress=None)

计算坡向,并返回坡向栅格数据集,即坡向图。 坡向是指坡面的朝向,它表示地形表面某处最陡的下坡方向。坡向反映了斜坡所面对的方向,任意斜坡的倾斜方向可取 0~360 度中的任意方向,所以坡向计算的 结果范围为 0~360 度。从正北方向(0 度)开始顺时针计算

参数:
  • input_data (DatasetGrid or str) -- 指定的待计算坡向的栅格数据集
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据集所在的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetGrid or str

iobjectspy.analyst.compute_point_aspect(input_data, specified_point)

计算 DEM 栅格上指定点处的坡向。 DEM 栅格上指定点处的坡向,与坡向图(calculate_aspect 方法)的计算方法相同,是将该点所在单元格与其周围的相 邻的八个单元格所形成的 3 × 3 平面作为计算单元,通过三阶反距离平方权差分法计算水平高程变化率和垂直高程变化率从而得出坡向。更多介绍,请参阅 calculate_aspect() 方法。

注意:
当指定点所在的单元格为无值时,计算结果为 -1,这与生成坡向图不同;当指定的点位于 DEM 栅格的数据集范围之外时,计算结果为 -1。
参数:
  • input_data (DatasetGrid or str) -- 指定的待计算坡向的栅格数据集
  • specified_point (Point2D) -- 指定的地理坐标点。
返回:

指定点处的坡向。单位为度。

返回类型:

float

iobjectspy.analyst.compute_point_slope(input_data, specified_point, slope_type, z_factor)

计算 DEM 栅格上指定点处的坡度。 DEM 栅格上指定点处的坡度,与坡度图(calculate_slope 方法)的计算方法相同,是将该点所在单元格与其周围的相邻的八个单元格所形成的 3 × 3 平面作 为计算单元,通过三阶反距离平方权差分法计算水平高程变化率和垂直高程变化率从而得出坡度。更多介绍,请参阅 calculate_slope 方法。

注意:
当指定点所在的单元格为无值时,计算结果为 -1,这与生成坡度图不同;当指定的点位于 DEM 栅格的数据集范围之外时,计算结果为 -1。
参数:
  • input_data (DatasetGrid or str) -- 指定的待计算坡向的栅格数据集
  • specified_point (Point2D) -- 指定的地理坐标点。
  • slope_type (SlopeType or str) -- 指定的坡度单位类型。可以用角度、弧度或百分数来表示。以使用角度为例,坡度计算的结果范围为 0~90 度。
  • z_factor (float) -- 指定的高程缩放系数。该值是指在 DEM 栅格中,栅格值(Z 坐标,即高程值)相对于 X 和 Y 坐标的单位变换系数。通常有 X,Y,Z 都参加的计算中,需要将高程值乘以一个高程缩放系数,使得三者单位一致。例如,X、Y 方向上的单位是米,而 Z 方向的单位是英尺,由于 1 英尺等于 0.3048 米,则需要指定缩放系数为 0.3048。如果设置为 1.0,表示不缩放。
返回:

指定点处的坡度。单位为 type 参数指定的类型。

返回类型:

float

iobjectspy.analyst.calculate_ortho_image(input_data, colors, no_value_color, out_data=None, out_dataset_name=None, progress=None)

根据给定的颜色集合生成正射三维影像。

正射影像是采用数字微分纠正技术,通过周边邻近栅格的高程得到当前点的合理日照强度,进行正射影像纠正。

参数:
  • input_data (DatasetGrid or str) -- 指定的待计算三维正射影像的 DEM 栅格。
  • colors (Colors or dict[float,tuple]) -- 三维投影后的颜色集合。输入如果为 dict,则表示高程值与颜色值的对应关系。 可以不必在高程颜色对照表中列出待计算栅格的所有栅格值(高程值)及其对应颜色,未在高程颜色对照表中列出的高程值,其在结果影像中的颜色将通过插值得出。
  • no_value_color (tuple or int) -- 无值栅格的颜色
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据集所在的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetGrid or str

iobjectspy.analyst.compute_surface_area(input_data, region)

计算表面面积,即计算所选多边形区域内的 DEM 栅格拟合的三维曲面的总的表面面积。

参数:
  • input_data (DatasetGrid or str) -- 指定的待计算表面面积的 DEM 栅格。
  • region (GeoRegion) -- 指定的用于计算表面面积的多边形
返回:

表面面积的值。单位为平方米。返回 -1 表示计算失败。

返回类型:

float

iobjectspy.analyst.compute_surface_distance(input_data, line)

计算栅格表面距离,即计算在 DEM 栅格拟合的三维曲面上沿指定的线段或折线段的曲面距离。

注意:
  • 表面量算所量算的距离是曲面上的,因而比平面上的值要大。
  • 当用于量算的线超出了 DEM 栅格的范围时,会先按数据集范围对线对象进行裁剪,按照位于数据集范围内的那部分线来计算表面距离。
参数:
  • input_data (DatasetGrid or str) -- 指定的待计算表面距离的 DEM 栅格。
  • line (GeoLine) -- 用于计算表面距离的二维线。
返回:

表面距离的值。单位为米。

返回类型:

float

iobjectspy.analyst.compute_surface_volume(input_data, region, base_value)

计算表面体积,即计算所选多边形区域内的 DEM 栅格拟合的三维曲面与一个基准平面之间的空间上的体积。

参数:
  • input_data (DatasetGrid or str) -- 待计算体积的 DEM 栅格。
  • region (GeoRegion) -- 用于计算体积的多边形。
  • base_value (float) -- 基准平面的值。单位与待计算的 DEM 栅格的栅格值单位相同。
返回:

指定的基准平面的值。单位与待计算的 DEM 栅格的栅格值单位相同。

返回类型:

float

iobjectspy.analyst.divide_math_analyst(first_operand, second_operand, user_region=None, out_data=None, out_dataset_name=None, progress=None)

栅格除法运算。将输入的两个栅格数据集的栅格值逐个像元地相除。栅格代数运算的具体使用,参考 expression_math_analyst()

如果输入两个像素类型(PixelFormat)均为整数类型的栅格数据集,则输出整数类型的结果数据集;否则,输出浮点型的结果数据集。如果输入的两个栅格数据集 的像素类型精度不同,则运算的结果数据集的像素类型与二者中精度较高者保持一致。

参数:
  • first_operand (DatasetGrid or str) -- 指定的第一栅格数据集。
  • second_operand (DatasetGrid or str) -- 指定的第二栅格数据集。
  • user_region (GeoRegion) -- 用户指定的有效计算区域。如果为 None,则表示计算全部区域,如果参与运算的数据集范围不一致,将使用所有数据集的范围的交集作为计算区域。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据集所在的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetGrid or str

iobjectspy.analyst.plus_math_analyst(first_operand, second_operand, user_region=None, out_data=None, out_dataset_name=None, progress=None)

栅格加法运算。将输入的两个栅格数据集的栅格值逐个像元地相加。 栅格代数运算的具体使用,参考 expression_math_analyst()

如果输入两个像素类型(PixelFormat)均为整数类型的栅格数据集,则输出整数类型的结果数据集;否则,输出浮点型的结果数据集。如果输入的两个栅格数据集 的像素类型精度不同,则运算的结果数据集的像素类型与二者中精度较高者保持一致。

参数:
  • first_operand (DatasetGrid or str) -- 指定的第一栅格数据集。
  • second_operand (DatasetGrid or str) -- 指定的第二栅格数据集。
  • user_region (GeoRegion) -- 用户指定的有效计算区域。如果为 None,则表示计算全部区域,如果参与运算的数据集范围不一致,将使用所有数据集的范围的交集作为计算区域。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据集所在的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetGrid or str

iobjectspy.analyst.minus_math_analyst(first_operand, second_operand, user_region=None, out_data=None, out_dataset_name=None, progress=None)

栅格减法运算。逐个像元地从第一个栅格数据集的栅格值中减去第二个数据集的栅格值。进行此运算时,输入栅格数据集的顺序很重要,顺序不同,结果通常也是不相同的。栅格代数运算的具体使用,参考 expression_math_analyst()

如果输入两个像素类型(PixelFormat)均为整数类型的栅格数据集,则输出整数类型的结果数据集;否则,输出浮点型的结果数据集。如果输入的两个栅格数据集 的像素类型精度不同,则运算的结果数据集的像素类型与二者中精度较高者保持一致。

参数:
  • first_operand (DatasetGrid or str) -- 指定的第一栅格数据集。
  • second_operand (DatasetGrid or str) -- 指定的第二栅格数据集。
  • user_region (GeoRegion) -- 用户指定的有效计算区域。如果为 None,则表示计算全部区域,如果参与运算的数据集范围不一致,将使用所有数据集的范围的交集作为计算区域。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据集所在的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetGrid or str

iobjectspy.analyst.multiply_math_analyst(first_operand, second_operand, user_region=None, out_data=None, out_dataset_name=None, progress=None)

栅格乘法运算。将输入的两个栅格数据集的栅格值逐个像元地相乘。栅格代数运算的具体使用,参考 expression_math_analyst()

如果输入两个像素类型(PixelFormat)均为整数类型的栅格数据集,则输出整数类型的结果数据集;否则,输出浮点型的结果数据集。如果输入的两个栅格数据集 的像素类型精度不同,则运算的结果数据集的像素类型与二者中精度较高者保持一致。

参数:
  • first_operand (DatasetGrid or str) -- 指定的第一栅格数据集。
  • second_operand (DatasetGrid or str) -- 指定的第二栅格数据集。
  • user_region (GeoRegion) -- 用户指定的有效计算区域。如果为 None,则表示计算全部区域,如果参与运算的数据集范围不一致,将使用所有数据集的范围的交集作为计算区域。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据集所在的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetGrid or str

iobjectspy.analyst.to_float_math_analyst(input_data, user_region=None, out_data=None, out_dataset_name=None, progress=None)

栅格浮点运算。将输入的栅格数据集的栅格值转换成浮点型。 如果输入的栅格值为双精度浮点型,进行浮点运算后的结果栅格值也转换为单精度浮点型。

参数:
  • input_data (DatasetGrid or str) -- 指定的第一栅格数据集。
  • user_region (GeoRegion) -- 用户指定的有效计算区域。如果为 None,则表示计算全部区域,如果参与运算的数据集范围不一致,将使用所有数据集的范围的交集作为计算区域。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据集所在的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetGrid or str

iobjectspy.analyst.to_int_math_analyst(input_data, user_region=None, out_data=None, out_dataset_name=None, progress=None)

栅格取整运算。提供对输入的栅格数据集的栅格值进行取整运算。取整运算的结果是去除栅格值的小数部分,只保留栅格值的整数。如果输入栅格值为整数类型,进行取整运算后的结果与输入栅格值相同。

参数:
  • input_data (DatasetGrid or str) -- 指定的第一栅格数据集。
  • user_region (GeoRegion) -- 用户指定的有效计算区域。如果为 None,则表示计算全部区域,如果参与运算的数据集范围不一致,将使用所有数据集的范围的交集作为计算区域。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据集所在的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetGrid or str

iobjectspy.analyst.expression_math_analyst(expression, pixel_format, out_data, is_ingore_no_value=True, user_region=None, out_dataset_name=None, progress=None)

栅格代数运算类。用于提供对一个或多个栅格数据集的数学运算及函数运算。

栅格代数运算的思想是运用代数学的观点对地理特征和现象进行空间分析。实质上,是对多个栅格数据集(DatasetGrid)进行数学运算以及函数运算。运算结果 栅格的像元值是由输入的一个或多个栅格同一位置的像元的值通过代数规则运算得到的。

栅格分析中很多功能都是基于栅格代数运算的,作为栅格分析的核心内容,栅格代数运算用途十分广泛,能够帮助我们解决各种类型的实际问题。如建筑工程中的计 算填挖方量,将工程实施前的DEM栅格与实施后的DEM栅格相减,就能够从结果栅格中得到施工前后的高程差,将结果栅格的像元值与像元所代表的实际面积相乘, 就可以得知工程的填方量与挖方量;又如,想要提取2000年全国范围内平均降雨量介于20毫米和50毫米的地区,可以通过“20<年平均降雨量<50”关系运算表达式, 对年平均降雨量栅格数据进行运算而获得。

通过该类的方法进行栅格代数运算主要有以下两种途径:

  • 使用该类提供的基础运算方法。该类提供了六个用于进行基础运算的方法,包括 plus(加法运算)、minus(减法运算)、multiply(乘法运算)、 divide(除法运算)、to_int(取整运算)和 to_float(浮点运算)。使用这几个方法可以完成一个或多个栅格数据对应栅格值的算术运算。对于相 对简单的运算,可以通过多次调用这几个方法来实现,如 (A/B)-(A/C)。
  • 执行运算表达式。使用表达式不仅可以对一个或多个栅格数据集实现运算符运算,还能够进行函数运算。运算符包括算术运算符、关系运算符和布尔运算符, 算术运算主要包括加法(+)、减法(-)、乘法(*)、除法(/);布尔运算主要包括和(And)、或(Or)、异或(Xor)、非(Not);关系运算主要包括 =、<、>、<>、>=、<=。注意,对于布尔运算和关系运算均有三种可能的输出结果:真=1、假=0及无值(只要有一个输入值为无值,结果即为无值)。

此外,还支持 21 种常用的函数运算,如下图所示:

../_images/MathAnalyst_Function.png

执行栅格代数运算表达式,支持自定义表达式栅格运算,通过自定义表达式可以进行算术运算、条件运算、逻辑运算、函数运算(常用函数、三角函数)以及复合运算。 栅格代数运算表达式的组成需要遵循以下规则:

  • 运算表达式应为一个形如下式的字符串:

    [DatasourceAlias1.Raster1] + [DatasourceAlias2.Raster2] 使用“ [数据源别名.数据集名] ”来指定参加运算的栅格数据集;注意要使用方括号把名字括起来。

  • 栅格代数运算支持四则运算符("+" 、"-" 、"*" 、"/" )、条件运算符(">" 、">=" 、"<" 、"<=" 、"<>" 、"==" )、逻辑运算符("|" 、"&" 、"Not()" 、"^" )和一些常用数学函数("abs()" 、"acos()" 、"asin()" 、"atan()" 、"acot()" 、"cos()" 、"cosh()" 、"cot()" 、"exp()" 、"floor()" 、"mod(,)" 、"ln()" 、"log()" 、"pow(,)" 、"sin()" 、"sinh()" 、"sqrt()" 、"tan()" 、"tanh()" 、"Isnull()" 、"Con(,,)" 、"Pick(,,,..)" )。

  • 代数运算的表达式中各个函数之间可以嵌套使用,直接用条件运算符计算的栅格结果都为二值(如大于、小于等),即满足条件的用1代替,不满足的用0代替,若想使用其他值来表示满足条件和不满足条件的取值,可以使用条件提取函数Con(,,)。例如:"Con(IsNull([SURFACE_ANALYST.Dem3] ) ,100,Con([SURFACE_ANALYST.Dem3] > 100,[SURFACE_ANALYST.Dem3] ,-9999) ) " ,该表达式的含义是:栅格数据集 Dem3 在别名为 SURFACE_ANALYST 的数据源中,将其中无值栅格变为 100,剩余栅格中,大于100 的,值保持不变,小于等于 100 的,值改成 -9999。

  • 如果栅格计算中有小于零的负值,注意要加小括号,如:[DatasourceAlias1.Raster1] - ([DatasourceAlias2.Raster2])。

  • 表达式中,运算符连接的操作数可以是一个栅格数据集,也可以是数字或者数学函数。

  • 数学函数的自变量可以为一个数值,也可以为某个数据集,或者是一个数据集或多个数据集的运算表达式。

  • 表达式必须是没有回车的单行表达式。

  • 表达式中必须至少含有一个输入栅格数据集。

注意:

  • 参与运算的两个数据集,如果其像素类型(PixelFormat)不同,则运算的结果数据集的像素类型与二者中精度较高者保持一致。例如,一个为32位整型,一个为单精度浮点型,那么进行加法运算后,结果数据集的像素类型将为单精度浮点型。
  • 对于栅格数据集中的无值数据,如果忽略无值,则无论何种运算,结果仍为无值;如果不忽略无值,意味着无值将参与运算。例如,两栅格数据集 A 和 B 相加,A 某单元格为无值,值为-9999,B 对应单元格值为3000,如果不忽略无值,则运算结果该单元格值为-6999。
参数:
  • expression (str) -- 自定义的栅格运算表达式。
  • pixel_format (PixelFormat or str) -- 指定的结果数据集的像素格式。注意,如果指定的像素类型的精度低于参与运算的栅格数据集像素类型的精度,运算结果可能不正确。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据集所在的数据源
  • is_ingore_no_value (bool) -- 是否忽略无值栅格数据。true 表示忽略无值数据,即无值栅格不参与运算。
  • user_region (GeoRegion) -- 用户指定的有效计算区域。如果为 None,则表示计算全部区域,如果参与运算的数据集范围不一致,将使用所有数据集 的范围的交集作为计算区域。
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetGrid or str

class iobjectspy.analyst.StatisticsField(source_field=None, stat_type=None, result_field=None)

基类:object

对字段进行统计的信息。主要用于 summary_points()

初始化对象

参数:
  • source_field (str) -- 被统计的字段名称
  • stat_type (StatisticsFieldType or str) -- 统计类型
  • result_field (str) -- 结果字段名称
result_field

str -- 结果字段名称

set_result_field(value)

设置结果字段名称

参数:value (str) -- 结果字段名称
返回:self
返回类型:StatisticsField
set_source_field(value)

设置被统计的字段名称

参数:value (str) -- 字段名称
返回:self
返回类型:StatisticsField
set_stat_type(value)

设置字段统计类型

参数:value (StatisticsFieldType or str) -- 字段统计类型
返回:self
返回类型:StatisticsField
source_field

str -- 被统计的字段名称

stat_type

StatisticsFieldType -- 字段统计类型

iobjectspy.analyst.create_line_one_side_multi_buffer(input_data, radius, is_left, unit=None, segment=24, is_save_attributes=True, is_union_result=False, is_ring=True, out_data=None, out_dataset_name='BufferResult', progress=None)

创建矢量线数据集单边多重缓冲区。缓冲区介绍请参考 create_buffer()。 线的单边多重缓冲区,是指在线对象的一侧生成多重缓冲区。左侧是指沿线对象的节点序列方向的左侧,右侧为节点序列方向的右侧。

../_images/LineOneSideMultiBuffer.png
参数:
  • input_data (DatasetVector or Recordset) -- 指定的创建多重缓冲区的源矢量数据集。只支持线数据集或线记录集
  • radius (list[float] or tuple[float] or str) -- 指定的多重缓冲区半径列表。单位由 unit 参数指定。
  • is_left (bool) -- 是否生成左缓冲区。设置为 True,在线的左侧生成缓冲区,否则在右侧生成缓冲区。
  • unit (BufferRadiusUnit) -- 指定的缓冲区半径单位。
  • segment (int) -- 指定的弧段拟合数
  • is_save_attributes (bool) -- 是否保留进行缓冲区分析的对象的字段属性。当合并结果面数据集时,该参数无效,即当 is_union_result 为 False 时有效。
  • is_union_result (bool) -- 是否合并缓冲区,即是否将源数据各对象生成的所有缓冲区域进行合并运算后返回。
  • is_ring (bool) -- 是否生成环状缓冲区。设置为 True,则生成多重缓冲区时外圈缓冲区是以环状区域与内圈数据相邻的;设置为 False,则外围缓冲区是一个包含了内圈数据的区域。
  • out_data (Datasource) -- 存储结果数据的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetVector or str

iobjectspy.analyst.create_multi_buffer(input_data, radius, unit=None, segment=24, is_save_attributes=True, is_union_result=False, is_ring=True, out_data=None, out_dataset_name='BufferResult', progress=None)

创建矢量数据集多重缓冲区。缓冲区介绍请参考 create_buffer()

参数:
  • input_data (DatasetVector or Recordset) -- 指定的创建多重缓冲区的源矢量数据集或记录集。支持点、线、面数据集和网络数据集。对网络数据集进行分析,是对其中的弧段作缓冲区。
  • radius (list[float] or tuple[float]) -- 指定的多重缓冲区半径列表。单位由 unit 参数指定。
  • unit (BufferRadiusUnit or str) -- 指定的缓冲区半径单位。
  • segment (int) -- 指定的弧段拟合数。
  • is_save_attributes (bool) -- 是否保留进行缓冲区分析的对象的字段属性。当合并结果面数据集时,该参数无效,即当 is_union_result 为 False 时有效。
  • is_union_result (bool) -- 是否合并缓冲区,即是否将源数据各对象生成的所有缓冲区域进行合并运算后返回。
  • is_ring (bool) -- 是否生成环状缓冲区。设置为 True,则生成多重缓冲区时外圈缓冲区是以环状区域与内圈数据相邻的;设置为 False,则外围缓冲区是一个包含了内圈数据的区域。
  • out_data (Datasource) -- 存储结果数据的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetVector or str

iobjectspy.analyst.compute_min_distance(source, reference, min_distance, max_distance, out_data=None, out_dataset_name=None, progress=None)

最近距离计算。求算“被计算记录集”中每一个对象到“参考记录集”中在查询范围内的所有对象的距离中的最小值(即最近距离),并将最近距离信息保存到一个新的属性表数据集中。 最近距离计算功能用于计算“被计算记录集”中每一个对象(称为“被计算对象”)到“参考记录集”中在查询范围内的所有对象(称为“参考对象”)的距离中的最小值,也就是最近距离,计算的结果为一个纯属性表数据集,记录了“被计算对象”到最近的“参考对象”的距离信息,使用三个属性字段存储,分别为:Source_ID(“被计算对象”的 SMID)、根据参考对象的类型可能为 Point_ID、Line_ID、Region_ID(“参考对象”的 SMID)以及 Distance(前面二者的距离值)。如果被计算对象与多个参考对象具有最近距离,则属性表中相应的添加多条记录。

  • 支持的数据类型

    “被计算记录集”仅支持二维点记录集,“参考记录集”可以是为从二维点、线、面数据集以及二维网络数据集获得的记录集。从二维网络数据集可以获得存有弧段的记录集,或存有结点的记录集(从网络数据集的子集获取),将这两种记录集作为“参考记录集”,可用于查找最近的弧段或最近的结点。

    “被计算记录集”和“参考记录集”可以是同一个记录集,也可以是从同一个数据集查询出的不同记录集,这两种情况下,不会计算对象到自身的距离。

  • 查询范围

    查询范围由用户指定的一个最小距离和一个最大距离构成,用于过滤不参与计算的“参考对象”,即从“被计算对象”出发,只有与其距离介于最小距离和最大距离之间(包括等于)的“参考对象”参与计算。如果将查询范围设置为从“0”到“-1”,则表示计算到“参考记录集”中所有对象的最近距离。

    如下图所示,红色圆点来自“被计算记录集”,方块来自“参考记录集”,粉色区域表示查询范围,则只有位于查询范围内的蓝色方块参与最近距离计算,也就是说本例的计算的结果只包含红色圆点与距其最近的蓝色方块的 SMID 和距离值

    ../_images/ComputeDistance.png
  • 注意事项:

    • “被计算记录集”和“参考记录集”所属的数据集的必须具有相同的坐标系。

    • 如下图所示,点到线对象的距离,是计算点到整个线对象的最小距离,即在线上找到一点与被计算点的距离最短;同样的,点到面对象的距离,是计算点到面对象的整个边界的最小距离。

      ../_images/ComputeDistance_1.png
    • 计算两个对象间距离时,出现包含或(部分)重叠的情况时,距离均为 0。例如点对象在线对象上,二者间距离为 0。

参数:
  • source (DatasetVector or Recordset or str) -- 指定的被计算记录集。只支持二维点记录集和数据集
  • reference (DatasetVector or Recordset or str) -- 指定的参考记录集。支持二维点、线、面记录集和数据集
  • min_distance (float) -- 指定的查询范围的最小距离。取值范围为大于或等于 0。单位与被计算记录集所属数据集的单位相同。
  • max_distance (float) -- 指定的查询范围的最大距离。取值范围为大于 0 的值及 -1。当设置为 -1 时,表示不限制最大距离。单位与被计算记录集所属数据集的单位相同。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 指定的用于存储结果属性表数据集的数据源。
  • out_dataset_name (str) -- 指定的结果属性表数据集的名称。
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetVector

iobjectspy.analyst.compute_range_distance(source, reference, min_distance, max_distance, out_data=None, out_dataset_name=None, progress=None)

范围距离计算。求算“被计算记录集”中每一个对象到“参考记录集”中在查询范围内的每一个对象的距离,并将距离信息保存到一个新的属性表数据集中。

该功能用于计算记录集 A 中每一个对象到记录集 B 中在查询范围内的每一个对象的距离,记录集 A 称为“被计算记录集”,当中的对象称作“被计算对象”,记录集 B 称为“参考记录集”,当中的对象称作“参考对象”。“被计算记录集”和“参考记录集”可以是同一个记录集,也可以是从同一个数据集查询出的不同记录集,这两种情况下,不会计算对象到自身的距离。

查询范围由一个最小距离和一个最大距离构成,用于过滤不参与计算的“参考对象”,即从“被计算对象”出发,只有与其距离介于最小距离和最大距离之间(包括等于)的“参考对象”参与计算。

如下图所示,红色圆点为“被计算对象”,方块为“参考对象”,粉色区域表示查询范围,则只有位于查询范围内的蓝色方块参与距离计算,也就是说本例的计算的结果只包含红色圆点与粉色区域内的蓝色方块的 SMID 和距离值。

../_images/ComputeDistance.png

范围距离计算的结果为一个纯属性表数据集,记录了“被计算对象”到“参考对象”的距离信息,使用三个属性字段存储,分别为:Source_ID(“被计算对象”的 SMID)、根据参考对象的类型可能为 Point_ID、Line_ID、Region_ID(“参考对象”的 SMID)以及 Distance(前面二者的距离值)。

注意事项:

  • “被计算记录集”和“参考记录集”所属的数据集的必须具有相同的坐标系。

  • 如下图所示,点到线对象的距离,是计算点到整个线对象的最小距离,即在线上找到一点与被计算点的距离最短;同样的,点到面对象的距离,是计算点到面对象的整个边界的最小距离。

    ../_images/ComputeDistance_1.png
  • 计算两个对象间距离时,出现包含或(部分)重叠的情况时,距离均为 0。例如点对象在线对象上,二者间距离为 0。

参数:
  • source (DatasetVector or Recordset or str) -- 指定的被计算记录集。只支持二维点记录集或数据集
  • reference (DatasetVector or Recordset or str) -- 指定的参考记录集。只支持二维点、线、面记录集或数据集
  • min_distance (float) -- 指定的查询范围的最小距离。取值范围为大于或等于 0。 单位与被计算记录集所属数据集的单位相同。
  • max_distance (float) -- 指定的查询范围的最大距离。取值范围为大于或等于 0,且必须大于或等于最小距离。单位与被计算记录集所属数据集的单位相同。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 指定的用于存储结果属性表数据集的数据源。
  • out_dataset_name (str) -- 指定的结果属性表数据集的名称。
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetVector

iobjectspy.analyst.integrate(source, tolerance, unit=None, progress=None)

整合, 将容限范围内的节点捕捉在一起。节点容限较大会导致要素重叠或导致面和线对象被删除,还可能导致不被期望移动的节点发生移动。 所以,选取容限值时应当根据实际情形设置合理的容限值。

注意:整合功能将直接修改源数据集。

参数:
  • source (DatasetVector or str) -- 指定的待整合的数据集。可以为点、线、面数据集。
  • tolerance (float) -- 指定的节点容限。
  • unit (Unit or str) -- 指定的节点容限单位。
  • progress (function) --
返回:

进度信息处理函数,具体参考 StepEvent

返回类型:

bool

iobjectspy.analyst.eliminate(source, region_tolerance, vertex_tolerance, is_delete_single_region=False, progress=None)

碎多边形合并,即将数据集中小于指定面积的多边形合并到相邻的多边形中。目前仅支持将碎多边形合并到与其相邻的具有最大面积的多边形中。

在数据制作和处理过程中,或对不精确的数据进行叠加后,都可能产生一些细碎而无用的多边形,称为碎多边形。可以通过“碎多边形合并” 功能将这些细碎多边形合并到相邻的多边形中,或删除孤立的碎多边形(没有与其他多边形相交或者相切的多边形),以达到简化数据的目的。

一般面积远远小于数据集中其他对象的多边形才被认为是“碎多边形”,通常是同一数据集中最大面积的百万分之一到万分之一间,但可以依 据实际研究的需求来设置最小多边形容限。如下图所示的数据中,在较大的多边形的边界上,有很多无用的碎多边形。

../_images/Eliminate_1.png

下图是对该数据进行“碎多边形合并”处理后的结果,与上图对比可以看出,碎多边形都被合并到了相邻的较大的多边形中。

../_images/Eliminate_2.png

注意:

  • 该方法适用于两个面具有公共边界的情况,处理后会把公共边界去除。
  • 进行碎多边形合并处理后,数据集内的对象数量可能减少。
参数:
  • source (DatasetVector or str) -- 指定的待进行碎多边形合并的数据集。只支持矢量二维面数据集,指定其他类型的数据集会抛出异常。
  • region_tolerance (float) -- 指定的最小多边形容限。单位与系统计算的面积(SMAREA 字段)的单位一致。将 SMAREA 字段的值与该容限值对比,小于该值的多边形将被消除。取值范围为大于等于0,指定为小于0的值会抛出异常。
  • vertex_tolerance (float) -- 指定的节点容限。单位与进行碎多边形合并的数据集单位相同。若两个节点之间的距离小于此容限值,则合并过程中会自动将这两个节点合并为一个节点。取值范围大于等于0,指定为小于0的值会抛出异常。
  • is_delete_single_region (bool) -- 指定是否删除孤立的小多边形。如果为 true 会删除孤立的小多边形,否则不删除。
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

整合成功返回 True,失败返回 False

返回类型:

bool

iobjectspy.analyst.edge_match(source, target, edge_match_mode, tolerance=None, is_union=False, edge_match_line=None, out_data=None, out_dataset_name=None, progress=None)

图幅接边,对两个二维线数据集进行自动接边。

参数:
  • source (DatasetVector) -- 接边源数据集。只能是二维线数据集。
  • target (DatasetVector) -- 接边目标数据。只能是二维线数据集,与接边源数据有相同的坐标系。
  • edge_match_mode (EdgeMatchMode or str) -- 接边模式。
  • tolerance (float) -- 接边容限。单位与进行接边的数据集的单位相同。
  • is_union (bool) -- 是否进行接边融合。
  • edge_match_line (GeoLine) -- 数据接边的接边线。在接边方式为交点位置接边 EdgeMatchMode.THE_INTERSECTION 的时候用来计算交点, 不设置将按照数据集范围自动计算接边线来计算交点。 设置接边线后,发生接边关联的对象的端点将尽可能的靠到接边线上。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 接边关联数据所在的数据源。
  • out_dataset_name (str) -- 接边关联数据的数据集名称。
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

如果设置了接边关联数据集且接边成功,则返回接边关联数据集对象或数据集名称。如果没有设置接边关联数据集,将不会生成 接边关联数据集,则返回是否进行接边成功。

返回类型:

DatasetVector or str or bool

iobjectspy.analyst.region_to_center_line(region_data, out_data=None, out_dataset_name=None, progress=None)

提取面数据集或记录集的中心线,一般用于提取河流的中心线。

该方法用于提取面对象的中心线。如果面包含岛洞,提取时会绕过岛洞,采用最短路径绕过。如下图。

../_images/RegionToCenterLine_1.png

如果面对象不是简单的长条形,而是具有分叉结构,则提取的中心线是最长的一段。如下图所示。

../_images/RegionToCenterLine_2.png
参数:
  • region_data (Recordset or DatasetVector) -- 指定的待提取中心线的面记录集或面数据集
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据源信息或数据源对象
  • out_dataset_name (str) -- 结果中心线数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集对象或结果数据集名称

返回类型:

DatasetVector or str

iobjectspy.analyst.dual_line_to_center_line(source_line, max_width, min_width, out_data=None, out_dataset_name=None, progress=None)

根据给定的宽度从双线记录集或数据集中提取中心线。 该功能一般用于提取双线道路或河流的中心线。双线要求连续且平行或基本平行,提取效果如下图。

../_images/DualLineToCenterLine.png

注意:

  • 双线一般为双线道路或双线河流,可以是线数据,也可以是面数据。
  • max_width 和 min_width 参数用于指定记录集中双线的最大宽度和最小宽度,用于提取最小和最大宽度之间的双线的中心线。小于最小宽度、大于最大宽度部分的双线不提取中心线,且大于最大宽度的双线保留,小于最小宽度的双线丢弃。
  • 对于双线道路或双线河流中比较复杂的交叉口,如五叉六叉,或者双线的最大宽度和最小宽度相差较大的情形,提取的结果可能不理想。
参数:
  • source_line (DatasetVector or Recordset or str) -- 指定的双线记录集或数据集。要求为面类型的数据集或记录集。
  • max_width (float) -- 指定的双线的最大宽度。要求为大于 0 的值。单位与双线记录集所属的数据集相同。
  • min_width (float) -- 指定的双线的最小宽度。要求为大于或等于 0 的值。单位与双线记录集所属的数据集相同。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 指定的用于存储结果中心线数据集的数据源。
  • out_dataset_name (str) -- 指定的结果中心线数据集的名称。
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集对象或结果数据集名称

返回类型:

DatasetVector or str

iobjectspy.analyst.grid_extract_isoline(extracted_grid, interval, datum_value=0.0, expected_z_values=None, resample_tolerance=0.0, smooth_method='BSPLINE', smoothness=0, clip_region=None, out_data=None, out_dataset_name=None, progress=None)

用于从栅格数据集中提取等值线,并将结果保存为数据集。

等值线是由一系列具有相同值的点连接而成的光滑曲线或折线,如等高线、等温线。等值线的分布反映了栅格表面上值的变化,等值线分布越密集的地方, 表示栅格表面值的变化比较剧烈,例如,如果为等高线,则越密集,坡度越陡峭,反之坡度越平缓。通过提取等值线,可以找到高程、温度、降水等的值相同的位置, 同时等值线的分布状况也可以显示出变化的陡峭和平缓区。

如下所示,上图为某个区域的 DEM 栅格数据,下图是从上图中提取的等高线。DEM 栅格数据的高程信息是存储在每一个栅格单元中的,栅格是有大小的,栅格的大小取决于栅格数据的分辨率 ,即每一个栅格单元代表实际地面上的相应地块的大小,因此,栅格数据不能很精确的反应每一位置上的高程信息 ,而矢量数据在这方面相对具有很大的优势,因此,从栅格数据中提取等高线 ,把栅格数据变成矢量数据,就可以突出显示数据的细节部分,便于分析,例如,从等高线数据中可以明显的区分地势的陡峭与舒缓的部位,可以区分出山脊山谷

../_images/SurfaceAnalyst_1.png ../_images/SurfaceAnalyst_2.png

SuperMap 提供两种方法来提取等值线:

  • 通过设置基准值(datum_value)和等值距(interval)来提取等间距的等值线。该方法是以等值距为间隔向基准值的前后两个方向 计算提取哪些高程的等值线。例如,高程范围为15-165的 DEM 栅格数据,设置基准值为50,等值距为20,则提取等值线的高程分别 为:30、50、70、90、110、130和150。
  • 通过 expected_z_values 方法指定一个 Z 值的集合,则只提取高程为集合中值的等值线/面。例如,高程范围为0-1000的 DEM 栅 格数据,指定 Z 值集合为[20,300,800],那么提取的结果就只有 20、300、800 三条等值线或三者构成的等值面。
注意:
  • 如果同时调用了上面两种方法所需设置的属性,那么只有 expected_z_values 方法有效,即只提取指定的值的等值线。因此,想要 提取等间距的等值线,就不能调用 expected_z_values 方法。
参数:
  • extracted_grid (DatasetGrid or str) -- 指定的提取操作需要的参数。
  • interval (float) -- 等值距,等值距是两条等值线之间的间隔值,必须大于0.
  • datum_value (float) --

    设置等值线的基准值。基准值与等值距(interval)共同决定提取哪些高程上的等值线。基准值作为一个生成等值 线的初始起算值,以等值距为间隔向其前后两个方向计算,因此并不一定是最小等值线的值。例如,高程范围为 220-1550 的 DEM 栅格数据,如果设基准值为 500,等值距为 50,则提取等值线的结果是:最小等值线值为 250, 最大等值线值为 1550。

    当同时设置 expected_z_values 时,只会考虑 expected_z_values 设置的值,即只提取高程为这些值的等值线。

  • expected_z_values (list[float] or str) -- 期望分析结果的 Z 值集合。Z 值集合存储一系列数值,该数值为待提取等值线的值。即,仅高程值在Z值集 合中的等值线会被提取。 当同时设置 datum_value 时,只会考虑 expected_z_values 设置的值,即只提取高程为这些值的等值线。
  • resample_tolerance (float) --

    重采样的距离容限系数。通过对提取出的等值线行重采样,可以简化最终提取的等值线数据。SuperMap 在 提取等值线/面时使用的重采样方法为光栏法(VectorResampleType.RTBEND),该方法需要一个重采样 距离容限进行采样控制。它的值由重采样的距离容限系数乘以源栅格分辨率得出,一般取值为源栅格分辨率 的 0~1 倍。

    重采样的距离容限系数默认为 0,即不进行任何采样,保证结果正确,但通过设置合理的参数,可以加快执 行速度。容限值越大,等值线边界的控制点越少,此时可能出现等值线相交的情况。因此,推荐用户先使 用默认值来提取等值线。

  • smooth_method (SmoothMethod or str) -- 滑处理所使用的方法
  • smoothness (int) -- 设置等值线或等值面的光滑度。 光滑度为 0 或 1表示不进行光滑处理,值越大则光滑度越高。等值线提取时,光滑度可自由设置
  • clip_region (GeoRegion) -- 指定的裁剪面对象。如果不需要对操作结果进行裁剪,可以使用 None 值取代该参数。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 用于存放结果数据集的数据源。如果为空,则会直接返回等值线对象的列表。
  • out_dataset_name (str) -- 指定的提取结果数据集的名称。
  • progress (进度信息处理函数,具体参考 StepEvent) -- function
返回:

提取等值线得到的数据集或数据集名称,或等值线对象列表。

返回类型:

DatasetVector or str or list[GeoLine]

iobjectspy.analyst.grid_extract_isoregion(extracted_grid, interval, datum_value=0.0, expected_z_values=None, resample_tolerance=0.0, smooth_method='BSPLINE', smoothness=0, clip_region=None, out_data=None, out_dataset_name=None, progress=None)

用于从栅格数据集中提取等值面。

SuperMap 提供两种方法来提取等值面:

  • 通过设置基准值(datum_value)和等值距(interval)来提取等间距的等值面。该方法是以等值距为间隔向基准值的前后两个方向计算 提取哪些高程的等值线。例如,高程范围为15-165的 DEM 栅格数据,设置基准值为50,等值距为20,则提取等值线的高程分别为: 30、50、70、90、110、130和150。
  • 通过 expected_z_values 方法指定一个 Z 值的集合,则只提取高程为集合中值的等值面。例如,高程范围为0-1000的 DEM 栅格数据, 指定 Z 值集合为[20,300,800],那么提取的结果就只有20、300、800三者构成的等值面。

注意:

  • 如果同时调用了上面两种方法所需设置的属性,那么只有 setExpectedZValues 方法有效,即只提取指定的值的等值面。 因此,想要提取等间距的等值面,就不能调用 expected_z_values 方法。
参数:
  • extracted_grid (指定的待提取的栅格数据集。) -- DatasetGrid or str
  • interval (float) -- 等值距,等值距是两条等值线之间的间隔值,必须大于0
  • datum_value (float) --

    设置等值线的基准值。基准值与等值距(interval)共同决定提取哪些高程上的等值面。基准值作为一个生成等值 线的初始起算值,以等值距为间隔向其前后两个方向计算,因此并不一定是最小等值面的值。例如,高程范围为 220-1550 的 DEM 栅格数据,如果设基准值为 500,等值距为 50,则提取等值线的结果是:最小等值线值为 250, 最大等值线值为 1550。

    当同时设置 expected_z_values 时,只会考虑 expected_z_values 设置的值,即只提取高程为这些值的等值线。

  • expected_z_values (list[float] or str) -- 期望分析结果的 Z 值集合。Z 值集合存储一系列数值,该数值为待提取等值线的值。即,仅高程值在Z值集 合中的等值线会被提取。 当同时设置 datum_value 时,只会考虑 expected_z_values 设置的值,即只提取高程为这些值的等值线。
  • resample_tolerance (float) -- 重采样的距离容限系数。通过对提取出的等值线行重采样,可以简化最终提取的等值线数据。SuperMap 在 提取等值线/面时使用的重采样方法为光栏法(VectorResampleType.RTBEND),该方法需要一个重采样 距离容限进行采样控制。它的值由重采样的距离容限系数乘以源栅格分辨率得出,一般取值为源栅格分辨率 的 0~1 倍。 重采样的距离容限系数默认为 0,即不进行任何采样,保证结果正确,但通过设置合理的参数,可以加快执 行速度。容限值越大,等值线边界的控制点越少,此时可能出现等值线相交的情况。因此,推荐用户先使 用默认值来提取等值线。
  • smooth_method (SmoothMethod or str) -- 滑处理所使用的方法
  • smoothness (int) -- 设置等值面的光滑度。 光滑度为 0 或 1表示不进行光滑处理,值越大则光滑度越高。 对于等值面的提取,采用先提取等值线然后生成等值面的方式,若将光滑度设置为2, 则中间结果数据集,即等值线对象的点数将为原始数据集点数的2倍,当光滑度设定值不断增大时,点数将成2的指数倍 增长,这将大大降低等值面提取的效率甚至可能导致提取失败。
  • clip_region (GeoRegion) -- 指定的裁剪面对象。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 用于存放结果数据集的数据源。如果为空,则直接返回等值面对象列表
  • out_dataset_name (str) -- 指定的提取结果数据集的名称。
  • progress (进度信息处理函数,具体参考 StepEvent) -- function
返回:

提取等值面得到的数据集或数据集名称,或等值面对象列表

返回类型:

DatasetVector or str or list[GeoRegion]

iobjectspy.analyst.point_extract_isoline(extracted_point, z_value_field, resolution, interval, terrain_interpolate_type=None, datum_value=0.0, expected_z_values=None, resample_tolerance=0.0, smooth_method='BSPLINE', smoothness=0, clip_region=None, out_data=None, out_dataset_name=None, progress=None)

用于从点数据集中提取等值线,并将结果保存为数据集。方法的实现原理类似“从点数据集中提取等值线”的方法,不同之处在于, 这里的操作对象是点数据集,因此, 实现的过程是先对点数据集中的点数据使用 IDW 插值法('InterpolationAlgorithmType.IDW` ) 进行插值分析,得到栅格数据集(方法实现的中间结果,栅格值为单精度浮点型),然后从栅格数据集中提取等值线。

点数据中的点是分散分布,点数据能够很好的表现位置信息,但对于点本身的其他属性信息却表现不出来,例如,已经获取了某个研究区域的 大量采样点的高程信息,如下所示 (上图),从图上并不能看出地势高低起伏的趋势,看不出哪里地势陡峭、哪里地形平坦,如果我们运用 等值线的原理,将这些点数据所蕴含的信息以等值线的形式表现出来, 即将相邻的具有相同高程值的点连接起来 ,形成下面下图所示的等 高线图,那么关于这个区域的地形信息就明显的表现出来了。不同的点数据提取的等值线具有不同的含义,主要依据点数据多代表的信息而定, 如果点的值代表温度,那么提取的等值线就是等温线;如果点的值代表雨量,那么提取的等值线就是等降水量线,等等。

../_images/SurfaceAnalyst_3.png ../_images/SurfaceAnalyst_4.png

注意:

  • 从点数据(点数据集/记录集/三维点集合)中提取等值线(面)时,插值得出的中间结果栅格的分辨率如果太小,会导致提取等值线(面) 失败。这里提供一个判断方法:使用点数据的 Bounds 的长和宽分别除以设置的分辨率,也就是中间结果栅格的行列数,如果行列数任何一 个大于10000,即认为分辨率设置的过小了,此时系统会抛出异常
参数:
  • extracted_point (DatasetVector or str or Recordset) -- 指定的待提取的点数据集或记录集
  • z_value_field (str) -- 指定的用于提取操作的字段名称。提取等值线时,将使用该字段中的值,对点数据集进行插值分析。
  • resolution (float) -- 指定的中间结果(栅格数据集)的分辨率。
  • interval (float) -- 等值距,等值距是两条等值线之间的间隔值,必须大于0
  • terrain_interpolate_type (TerrainInterpolateType or str) -- 地形插值类型。
  • datum_value (float) --

    设置等值线的基准值。基准值与等值距(interval)共同决定提取哪些高程上的等值线。基准值作为一个生成等值 线的初始起算值,以等值距为间隔向其前后两个方向计算,因此并不一定是最小等值线的值。例如,高程范围为 220-1550 的 DEM 栅格数据,如果设基准值为 500,等值距为 50,则提取等值线的结果是:最小等值线值为 250, 最大等值线值为 1550。

    当同时设置 expected_z_values 时,只会考虑 expected_z_values 设置的值,即只提取高程为这些值的等值线。

  • expected_z_values (list[float] or str) -- 期望分析结果的 Z 值集合。Z 值集合存储一系列数值,该数值为待提取等值线的值。即,仅高程值在Z值集 合中的等值线会被提取。 当同时设置 datum_value 时,只会考虑 expected_z_values 设置的值,即只提取高程为这些值的等值线。
  • resample_tolerance (float) --

    重采样的距离容限系数。通过对提取出的等值线行重采样,可以简化最终提取的等值线数据。SuperMap 在 提取等值线/面时使用的重采样方法为光栏法(VectorResampleType.RTBEND),该方法需要一个重采样 距离容限进行采样控制。它的值由重采样的距离容限系数乘以源栅格分辨率得出,一般取值为源栅格分辨率 的 0~1 倍。

    重采样的距离容限系数默认为 0,即不进行任何采样,保证结果正确,但通过设置合理的参数,可以加快执 行速度。容限值越大,等值线边界的控制点越少,此时可能出现等值线相交的情况。因此,推荐用户先使 用默认值来提取等值线。

  • smooth_method (SmoothMethod or str) -- 滑处理所使用的方法
  • smoothness (int) -- 设置等值线或等值面的光滑度。 光滑度为 0 或 1表示不进行光滑处理,值越大则光滑度越高。等值线提取时,光滑度可自由设置
  • clip_region (GeoRegion) -- 指定的裁剪面对象。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 用于存放结果数据集的数据源。 如果为空,则会直接返回等值线对象的列表。
  • out_dataset_name (str) -- 指定的提取结果数据集的名称。
  • progress (进度信息处理函数,具体参考 StepEvent) -- function
返回:

提取等值线得到的数据集或数据集名称,或等值线对象列表

返回类型:

DatasetVector or str or list[GeoLine]

iobjectspy.analyst.points_extract_isoregion(extracted_point, z_value_field, interval, resolution=None, terrain_interpolate_type=None, datum_value=0.0, expected_z_values=None, resample_tolerance=0.0, smooth_method='BSPLINE', smoothness=0, clip_region=None, out_data=None, out_dataset_name=None, progress=None)

用于从点数据集中提取等值面。方法的实现原理是先对点数据集使用 IDW 插值法(InterpolationAlgorithmType.IDW)进行插值分析, 得到栅格数据集(方法实现的中间结果,栅格值为单精度浮点型),接着从栅格数据集中提取等值线, 最终由等值线构成等值面。

等值面是由相邻的等值线封闭组成的面。等值面的变化可以很直观的表示出相邻等值线之间的变化,诸如高程、温度、降水、污染或大气压 力等用等值面来表示是非常直观、 有效的。等值面分布的效果与等值线的分布相同,也是反映了栅格表面上的变化,等值面分布越密集的地 方,表示栅格表面值有较大的变化,反之则表示栅格表面值变化较少; 等值面越窄的地方,表示栅格表面值有较大的变化,反之则表示栅格 表面值变化较少。

如下所示,上图为存储了高程信息的点数据集,下图为从上图点数据集中提取的等值面,从等值面数据中可以明显的分析出地形的起伏变化, 等值面越密集, 越狭窄的地方表示地势越陡峭,反之,等值面越稀疏,较宽的地方表示地势较舒缓,变化较小。

../_images/SurfaceAnalyst_5.png ../_images/SurfaceAnalyst_6.png

注意:

  • 从点数据(点数据集/记录集/三维点集合)中提取等值面时,插值得出的中间结果栅格的分辨率如果太小,会导致提取等值面 失败。这里提供一个判断方法:使用点数据的 Bounds 的长和宽分别除以设置的分辨率,也就是中间结果栅格的行列数,如果行列数任何一个 大于10000,即认为分辨率设置的过小了,此时系统会抛出异常。
参数:
  • extracted_point (DatasetVector or str or Recordset) -- 指定的待提取的点数据集或记录集
  • z_value_field (str) -- 指定的用于提取操作的字段名称。提取等值面时,将使用该字段中的值,对点数据集进行插值分析。
  • interval (float) -- 等值距,等值距是两条等值线之间的间隔值,必须大于0
  • resolution (float) -- 指定的中间结果(栅格数据集)的分辨率。
  • terrain_interpolate_type (TerrainStatisticType) -- 指定的地形插值类型。
  • datum_value (float) --

    设置等值线的基准值。基准值与等值距(interval)共同决定提取哪些高程上的等值面。基准值作为一个生成等值 线的初始起算值,以等值距为间隔向其前后两个方向计算,因此并不一定是最小等值面的值。例如,高程范围为 220-1550 的 DEM 栅格数据,如果设基准值为 500,等值距为 50,则提取等值线的结果是:最小等值线值为 250, 最大等值线值为 1550。

    当同时设置 expected_z_values 时,只会考虑 expected_z_values 设置的值,即只提取高程为这些值的等值线。

  • expected_z_values (list[float] or str) -- 期望分析结果的 Z 值集合。Z 值集合存储一系列数值,该数值为待提取等值线的值。即,仅高程值在Z值集 合中的等值线会被提取。 当同时设置 datum_value 时,只会考虑 expected_z_values 设置的值,即只提取高程为这些值的等值线。
  • resample_tolerance (float) -- 重采样的距离容限系数。通过对提取出的等值线行重采样,可以简化最终提取的等值线数据。SuperMap 在 提取等值线/面时使用的重采样方法为光栏法(VectorResampleType.RTBEND),该方法需要一个重采样 距离容限进行采样控制。它的值由重采样的距离容限系数乘以源栅格分辨率得出,一般取值为源栅格分辨率 的 0~1 倍。 重采样的距离容限系数默认为 0,即不进行任何采样,保证结果正确,但通过设置合理的参数,可以加快执 行速度。容限值越大,等值线边界的控制点越少,此时可能出现等值线相交的情况。因此,推荐用户先使 用默认值来提取等值线。
  • smooth_method (SmoothMethod or str) -- 滑处理所使用的方法
  • smoothness (int) -- 设置等值面的光滑度。 光滑度为 0 或 1表示不进行光滑处理,值越大则光滑度越高。 对于等值面的提取,采用先提取等值线然后生成等值面的方式,若将光滑度设置为2, 则中间结果数据集,即等值线对象的点数将为原始数据集点数的2倍,当光滑度设定值不断增大时,点数将成2的指数倍 增长,这将大大降低等值面提取的效率甚至可能导致提取失败。
  • clip_region (GeoRegion) -- 指定的裁剪面对象。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 用于存放结果数据集的数据源。如果为空,则直接返回等值面对象列表
  • out_dataset_name (str) -- 指定的提取结果数据集的名称。
  • progress (进度信息处理函数,具体参考 StepEvent) -- function
返回:

提取等值面得到的数据集或数据集名称,或等值面对象列表

返回类型:

DatasetVector or str or list[GeoRegion]

iobjectspy.analyst.point3ds_extract_isoline(extracted_points, resolution, interval, terrain_interpolate_type=None, datum_value=0.0, expected_z_values=None, resample_tolerance=0.0, smooth_method='BSPLINE', smoothness=0, clip_region=None, out_data=None, out_dataset_name=None, progress=None)

用于从三维点集合中提取等值线,并将结果保存为数据集。方法的实现原理是先利用点集合中存储的三维信息(高程或者温度等),也就是 除了点的坐标信息的数据, 对点数据进行插值分析,得到栅格数据集(方法实现的中间结果,栅格值为单精度浮点型),然后从栅格数据集 中提取等值线。

点数据提取等值线介绍参考 point_extract_isoline()

注意:

  • 从点数据(点数据集/记录集/三维点集合)中提取等值线(面)时,插值得出的中间结果栅格的分辨率如果太小,会导致提取等值线(面) 失败。这里提供一个判断方法:使用点数据的 Bounds 的长和宽分别除以设置的分辨率,也就是中间结果栅格的行列数,如果行列数任何一 个大于10000,即认为分辨率设置的过小了,此时系统会抛出异常
参数:
  • extracted_points (list[Point3D]) -- 指定的待提取等值线的点串,该点串中的点是三维点,每一个点存储了 X,Y 坐标信息和只有一个三维度的信息(例如:高程信息等)。
  • resolution (float) -- 指定的中间结果(栅格数据集)的分辨率。
  • interval (float) -- 等值距,等值距是两条等值线之间的间隔值,必须大于0
  • terrain_interpolate_type (TerrainInterpolateType or str) -- 地形插值类型。
  • datum_value (float) --

    设置等值线的基准值。基准值与等值距(interval)共同决定提取哪些高程上的等值线。基准值作为一个生成等值 线的初始起算值,以等值距为间隔向其前后两个方向计算,因此并不一定是最小等值线的值。例如,高程范围为 220-1550 的 DEM 栅格数据,如果设基准值为 500,等值距为 50,则提取等值线的结果是:最小等值线值为 250, 最大等值线值为 1550。

    当同时设置 expected_z_values 时,只会考虑 expected_z_values 设置的值,即只提取高程为这些值的等值线。

  • expected_z_values (list[float] or str) -- 期望分析结果的 Z 值集合。Z 值集合存储一系列数值,该数值为待提取等值线的值。即,仅高程值在Z值集 合中的等值线会被提取。 当同时设置 datum_value 时,只会考虑 expected_z_values 设置的值,即只提取高程为这些值的等值线。
  • resample_tolerance (float) -- 重采样的距离容限系数。通过对提取出的等值线行重采样,可以简化最终提取的等值线数据。SuperMap 在 提取等值线/面时使用的重采样方法为光栏法(VectorResampleType.RTBEND),该方法需要一个重采样 距离容限进行采样控制。它的值由重采样的距离容限系数乘以源栅格分辨率得出,一般取值为源栅格分辨率 的 0~1 倍。 重采样的距离容限系数默认为 0,即不进行任何采样,保证结果正确,但通过设置合理的参数,可以加快执 行速度。容限值越大,等值线边界的控制点越少,此时可能出现等值线相交的情况。因此,推荐用户先使 用默认值来提取等值线。
  • smooth_method (SmoothMethod or str) -- 滑处理所使用的方法
  • smoothness (int) -- 设置等值线或等值面的光滑度。 光滑度为 0 或 1表示不进行光滑处理,值越大则光滑度越高。等值线提取时,光滑度可自由设置;
  • clip_region (GeoRegion) -- 指定的裁剪面对象。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 用于存放结果数据集的数据源。如果为空,则直接返回等值线对象列表
  • out_dataset_name (str) -- 指定的提取结果数据集的名称。
  • progress (进度信息处理函数,具体参考 StepEvent) -- function
返回:

提取等值线得到的数据集或数据集名称,或等值线对象列表

返回类型:

DatasetVector or str or list[GeoLine]

iobjectspy.analyst.point3ds_extract_isoregion(extracted_points, resolution, interval, terrain_interpolate_type=None, datum_value=0.0, expected_z_values=None, resample_tolerance=0.0, smooth_method='BSPLINE', smoothness=0, clip_region=None, out_data=None, out_dataset_name=None, progress=None)

用于从三维点集合中提取等值面,并将结果保存为数据集。方法的实现原理是先利用点集合中存储的第三维信息(高程或者温度等),也就 是除了点的坐标信息的数据, 对点数据使用 IDW 插值法(InterpolationAlgorithmType.IDW)进行插值分析,得到栅格数据集(方法实现 的中间结果,栅格值为单精度浮点型),接着从栅格数据集中提取等值面。

点数据提取等值面介绍,参考 points_extract_isoregion()

参数:
  • extracted_points (list[Point3D]) -- 指定的待提取等值面的点串,该点串中的点是三维点,每一个点存储了 X,Y 坐标信息和只有一个第三维度的信息(例如:高程信息等)。
  • resolution (float) -- 指定的中间结果(栅格数据集)的分辨率
  • interval (float) -- 等值距,等值距是两条等值线之间的间隔值,必须大于0
  • terrain_interpolate_type (TerrainInterpolateType or str) -- 指定的地形插值类型。
  • datum_value (float) --

    设置等值线的基准值。基准值与等值距(interval)共同决定提取哪些高程上的等值面。基准值作为一个生成等值 线的初始起算值,以等值距为间隔向其前后两个方向计算,因此并不一定是最小等值面的值。例如,高程范围为 220-1550 的 DEM 栅格数据,如果设基准值为 500,等值距为 50,则提取等值线的结果是:最小等值线值为 250, 最大等值线值为 1550。

    当同时设置 expected_z_values 时,只会考虑 expected_z_values 设置的值,即只提取高程为这些值的等值线。

  • expected_z_values (list[float] or str) -- 期望分析结果的 Z 值集合。Z 值集合存储一系列数值,该数值为待提取等值线的值。即,仅高程值在Z值集 合中的等值线会被提取。 当同时设置 datum_value 时,只会考虑 expected_z_values 设置的值,即只提取高程为这些值的等值线。
  • resample_tolerance (float) -- 重采样的距离容限系数。通过对提取出的等值线行重采样,可以简化最终提取的等值线数据。SuperMap 在 提取等值线/面时使用的重采样方法为光栏法(VectorResampleType.RTBEND),该方法需要一个重采样 距离容限进行采样控制。它的值由重采样的距离容限系数乘以源栅格分辨率得出,一般取值为源栅格分辨率 的 0~1 倍。 重采样的距离容限系数默认为 0,即不进行任何采样,保证结果正确,但通过设置合理的参数,可以加快执 行速度。容限值越大,等值线边界的控制点越少,此时可能出现等值线相交的情况。因此,推荐用户先使 用默认值来提取等值线。
  • smooth_method (SmoothMethod or str) -- 滑处理所使用的方法
  • smoothness (int) -- 设置等值面的光滑度。 光滑度为 0 或 1表示不进行光滑处理,值越大则光滑度越高。 对于等值面的提取,采用先提取等值线然后生成等值面的方式,若将光滑度设置为2, 则中间结果数据集,即等值线对象的点数将为原始数据集点数的2倍,当光滑度设定值不断增大时,点数将成2的指数倍 增长,这将大大降低等值面提取的效率甚至可能导致提取失败。
  • clip_region (GeoRegion) -- 指定的裁剪面对象。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 用于存放结果数据集的数据源。如果为空,则直接返回等值面对象列表
  • out_dataset_name (str) -- 指定的提取结果数据集的名称。
  • progress (进度信息处理函数,具体参考 StepEvent) -- function
返回:

提取等值面得到的数据集或数据集名称,或等值面对象列表

返回类型:

DatasetVector or str or list[GeoRegion]

iobjectspy.analyst.grid_basic_statistics(grid_data, function_type=None, progress=None)

栅格基本统计分析,可指定变换函数类型。用于对栅格数据集进行基本的统计分析,包括最大值、最小值、平均值和标准差等。

指定变换函数时,用来统计的数据是原始栅格值经过函数变换后得到的值。

参数:
  • grid_data (DatasetGrid or str) -- 待统计的栅格数据
  • function_type (FunctionType or str) -- 变换函数类型
  • progress (进度信息处理函数,具体参考 StepEvent) -- function
返回:

基本统计分析结果

返回类型:

BasicStatisticsAnalystResult

class iobjectspy.analyst.BasicStatisticsAnalystResult

基类:object

栅格基本统计分析结果类

first_quartile

float -- 栅格基本统计分析计算所得的第一四分值

kurtosis

float -- 栅格基本统计分析计算所得的峰度

max

float -- 栅格基本统计分析计算所得的最大值

mean

float -- 栅格基本统计分析计算所得的最小值

median

float -- 栅格基本统计分析计算所得的中位数

min

float

skewness

float -- 栅格基本统计分析计算所得的偏度

std

float -- 栅格基本统计分析计算所得的均方差(标准差)

third_quartile

float -- 栅格基本统计分析计算所得的第三四分值

to_dict()

输出为 dict 对象

返回类型:dict
iobjectspy.analyst.grid_common_statistics(grid_data, compare_datasets_or_value, compare_type, is_ignore_no_value, out_data=None, out_dataset_name=None, progress=None)

栅格常用统计分析,将一个栅格数据集逐行逐列按照某种比较方式与一个(或多个)栅格数据集,或一个固定值进行比较,比较结果为“真”的像元值为 1,为“假”的像元值为 0。

关于无值的说明:

  • 当待统计源数据集的栅格有无值时,如果忽略无值,则统计结果栅格也为无值,否则使用该无值参与统计;当各比较数据集的栅格有无值时, 如果忽略无值,则此次统计(待统计栅格与该比较数据集的计算)不计入结果,否则使用该无值进行比较。
  • 当无值不参与运算(即忽略无值)时,统计结果数据集中无值的值,由结果栅格的像素格式决定,为最大像元值,例如,结果栅格数据集像素 格式为 PixelFormat.UBIT8,即每个像元使用 8 个比特表示,则无值的值为 255。在此方法中,结果栅格的像素格式是由比较栅格数据集 的数量来决定的。比较数据集得个数、结果栅格的像素格式和结果栅格中无值的值三者的对应关系如下所示:
../_images/CommonStatistics.png
参数:
  • grid_data (DatasetGrid or str) -- 指定的待统计的栅格数据。
  • compare_datasets_or_value (list[DatasetGrid] or list[str] or float) -- 指定的比较的数据集集合或固定值。指定固定值时,固定值的单位与待统计的栅格数据集的栅格值单位相同。
  • compare_type (StatisticsCompareType or str) -- 指定的比较类型
  • is_ignore_no_value (bool) -- 指定是否忽略无值。如果为 true,即忽略无值,则计算区域内的无值不参与计算,结果栅格值仍为无值;若为 false,则计算区域内的无值参与计算。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 用于存储结果数据的数据源。
  • out_dataset_name (str) -- 结果数据集的名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

统计结果栅格数据集或数据集名称

返回类型:

DatasetGrid or str

iobjectspy.analyst.grid_neighbour_statistics(grid_data, neighbour_shape, is_ignore_no_value=True, grid_stat_mode='SUM', unit_type='CELL', out_data=None, out_dataset_name=None, progress=None)

栅格邻域统计分析。

邻域统计分析,是对输入数据集中的每个像元的指定扩展区域中的像元进行统计,将运算结果作为像元的值。统计的方法包括:总和、 最大值、最小值、众数、少数、中位数等,请参见 GridStatisticsMode 枚举类型。目前提供的邻域范围类型(请参见 NeighbourShapeType 枚举类型)有:矩形、圆形、圆环和扇形。

下图为邻域统计的原理示意,假设使用“总和”作为统计方法做矩形邻域统计,邻域大小为 3×3,那么对于图中位于第二行第三列的单元格, 它的值则由以其为中心向周围扩散得到的一个 3×3 的矩形内所有像元值的和来决定。

../_images/NeighbourStatistics.png

邻域统计的应用十分广泛。例如:

  • 对表示物种种类分布的栅格计算每个邻域内的生物种类(统计方法:种类),从而观察该地区的物种丰度;

  • 对坡度栅格统计邻域内的坡度差(统计方法:值域),从而评估该区域的地形起伏状况;

    ../_images/NeighbourStatistics_1.png
  • 邻域统计还用于图像处理,如统计邻域内的平均值(称为均值滤波)或中位数(称为中值滤波)可以达到平滑的效果,从而去除噪声或过多的细节,等等。

    ../_images/NeighbourStatistics_2.png
参数:
  • grid_data (DatasetGrid or str) -- 指定的待统计的栅格数据。
  • neighbour_shape (NeighbourShape) -- 邻域形状
  • is_ignore_no_value (bool) -- 指定是否忽略无值。如果为 true,即忽略无值,则计算区域内的无值不参与计算,结果栅格值仍为无值;若为 false,则计算区域内的无值参与计算。
  • grid_stat_mode (GridStatisticsMode or str) -- 邻域分析的统计方法
  • unit_type (NeighbourUnitType or str) -- 邻域统计的单位类型
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 用于存储结果数据的数据源。
  • out_dataset_name (str) -- 结果数据集的名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

统计结果栅格数据集或数据集名称

返回类型:

DatasetGrid or str

iobjectspy.analyst.altitude_statistics(point_data, grid_data, out_data=None, out_dataset_name=None)

高程统计,统计二维点数据集中每个点对应的栅格值,并生成一个三维点数据集,三维点对象的 Z 值即为被统计的栅格像素的高程值。

参数:
返回:

统计三维数据集或数据集名称

返回类型:

DatasetGrid or str

iobjectspy.analyst.zonal_statistics_on_raster_value(value_data, zonal_data, zonal_field, is_ignore_no_value=True, grid_stat_mode='SUM', out_data=None, out_dataset_name=None, out_table_name=None, progress=None)

栅格分带统计,方法中值数据为栅格的数据集,带数据可以是矢量或栅格数据。

栅格分带统计,是以某种统计方法对区域内的单元格的值进行统计,将每个区域内的统计值赋给该区域所覆盖的所有单元格,从而得到结果栅格。栅格分带统计涉及两种数据,值数据和带数据。值数据即被统计的栅格数据,带数据为标识统计区域的数据,可以为栅格或矢量面数据。下图为使用栅格带数据进行分带统计的算法示意,其中灰色单元格代表无值数据。

../_images/ZonalStatisticsOnRasterValue_1.png

当带数据为栅格数据集时,连续的栅格值相同的单元格作为一个带(区域);当带数据为矢量面数据集时,要求其属性表中有一个标识带的字段,以数值来区分不同的带,如果两个及以上的面对象(可以相邻,也可以不相邻)的标识值相同,则进行分带统计时,它们将作为一个带进行统计,即在结果栅格中,这些面对象对应位置的栅格值都是这些面对象范围内的所有单元格的栅格值的统计值。

分带统计的结果包含两部分:一是分带统计结果栅格,每个带内的栅格值相同,即按照统计方法计算所得的值;二是一个记录了每个分带内统计信息的属性表,包含 ZONALID(带的标识)、PIXELCOUNT(带内单元格数)、MININUM(最小值)、MAXIMUM(最大值)、RANGE_VALUE(值域)、SUM_VALUE(和)、MEAN(平均值)、STD(标准差)、VARIETY(种类)、MAJORITY(众数)、MINORITY(少数)、MEDIAN(中位数)等字段。

下面通过一个实例来了解分带统计的应用。

  1. 如下图所示,左图是 DEM 栅格值,将其作为值数据,右图为对应区域的行政区划,将其作为带数据,进行分带统计;
../_images/ZonalStatisticsOnRasterValue_2.png
  1. 使用上面的数据,将最大值作为统计方法,进行分带统计。结果包括如下图所示的结果栅格,以及对应的统计信息属性表(略)。结果栅格中,每个带内的栅格值均相等,即在该带范围内的值栅格中最大的栅格值,也就是高程值。该例统计了该地区每个行政区内最高的高程。
../_images/ZonalStatisticsOnRasterValue_3.png

注意,分带统计的结果栅格的像素类型(PixelFormat)与指定的分带统计类型(通过 ZonalStatisticsAnalystParameter 类的 setStatisticsMode 方法设置)有关:

 * 当统计类型为种类(VARIETY)时,结果栅格像素类型为 BIT32;  * 当统计类型为最大值(MAX)、最小值(MIN)、值域(RANGE)时,结果栅格的像素类型与源栅格保持一致;  * 当统计类型为平均值(MEAN)、标准差(STDEV)、总和(SUM)、众数(MAJORITY)、最少数(MINORITY)、中位数(MEDIAN)时,结果栅格的像素类型为 DOUBLE。

参数:
  • value_data (DatasetGrid or str) -- 需要被统计的值数据
  • zonal_data (DatasetGrid or DatasetVector or str) -- 待统计的分带数据集。仅支持像素格式(PixelFormat)为 UBIT1、UBIT4、UBIT8 和 UBIT16 的栅格数据集或矢量面数据集。
  • zonal_field (str) -- 矢量分带数据中用于标识带的字段。字段类型只支持32位整型。
  • is_ignore_no_value (bool) -- 统计时是否忽略无值数据。 如果为 True,表示无值栅格不参与运算;若为 False,表示有无值参与的运算,结果仍为无值
  • grid_stat_mode (GridStatisticsMode or str) -- 分带统计类型
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 用于存储结果数据的数据源。
  • out_dataset_name (str) -- 结果数据集的名称
  • out_table_name (str) -- 分析结果属性表的名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

返回一个 tuple,tuple 有两个元素,第一个为结果数据集或名称,第二个为结果属性表数据集或名称

返回类型:

tuple[DatasetGrid, DatasetGrid] or tuple[str,str]

class iobjectspy.analyst.GridHistogram(source_data, group_count, function_type=None, progress=None)

基类:object

创建给定栅格数据集的直方图。

直方图,又称柱状图,由一系列高度不等的矩形块来表示一份数据的分布情况。一般横轴表示类别,纵轴表示分布情况。

栅格直方图的横轴表示栅格值的分组,栅格值将被划分到这 N(默认为 100)个组中,即每个组对应着一个栅格值范围;纵轴表示频数,即 栅格值在每组的值范围内的单元格的个数。

下图是栅格直方图的示意图。该栅格数据的最小值和最大值分别为 0 和 100,取组数为 10,得出每组的频数,绘制如下的直方图。矩形块 上方标注了该组的频数,例如,第 6 组的栅格值范围为 [50,60),栅格数据中值在此范围内的单元格共有 3 个,因此该组的频数为 3。

../_images/BuildHistogram.png

注:直方图分组的最后一组的值范围为前闭后闭,其余均为前闭后开。

在通过此方法获得栅格数据集的直方图(GridHistogram)对象后,可以通过该对象的 get_frequencies 方法返回每个组的频数,还可以通过 get_group_count 方法重新指定栅格直方图的组数,然后再通过 get_frequencies 方法返回每组的频数。

下图为创建栅格直方图的一个实例。本例中,最小栅格值为 250,最大栅格值为 1243,组数为 500,获取各组的频数,绘制出如右侧所示的 栅格直方图。从右侧的栅格直方图,可以非常直观的了解栅格数据集栅格值的分布情况。

../_images/BuildHistogram_1.png

构造栅格直方图对象

参数:
  • source_data (DatasetGrid or str) -- 指定的栅格数据集
  • group_count (int) -- 指定的直方图的组数。必须大于 0。
  • function_type (指定的变换函数类型。) -- FunctionType
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
class HistogramSegmentInfo(count, max_value, min_value, range_max, range_min)

基类:object

栅格直方图每个分段区间的信息类。

count

int -- 分段区间内容值的个数

max

float -- 分段区间内容值的最大值

min

float -- 分段区间内容值的最小值

range_max

float -- 分段区间的最大值

range_min

float -- 分段区间的最小值

get_frequencies()

返回栅格直方图每个组的频数。直方图的每个组都对应了一个栅格值范围,值在这个范围内的所有单元格的个数即为该组的频数。

返回:返回栅格直方图每个组的频数。
返回类型:list[int]
get_group_count()

返回栅格直方图横轴上的组数。

返回:返回栅格直方图横轴上的组数。
返回类型:int
get_segments()

返回栅格直方图每个组的区间信息。

返回:栅格直方图每个组的区间信息。
返回类型:list[GridHistogram.HistogramSegmentInfo]
set_group_count(count)

设置栅格直方图横轴上的组数。

参数:count (int) -- 栅格直方图横轴上的组数。必须大于 0。
返回类型:self
iobjectspy.analyst.thin_raster(source, back_or_no_value, back_or_no_value_tolerance, out_data=None, out_dataset_name=None, progress=None)

栅格细化,通常在将栅格转换为矢量线数据前使用。

栅格数据细化处理可以减少栅格数据中用于标识线状地物的单元格的数量,从而提高矢量化的速度和精度。一般作为栅格转线矢量数据之 前的预处理,使转换的效果更好。例如一幅扫描的等高线图上可能使用 5、6 个单元格来显示一条等高线的宽度,细化处理后,等高线的 宽度就只用一个单元格来显示了,有利于更好地进行矢量化。

../_images/ThinRaster.png

关于无值/背景色及其容限的说明:

进行栅格细化时,允许用户标识那些不需要细化的单元格。对于栅格数据集,通过无值及其容限来确定这些值,对于影像数据集,则通过背景色及其容限来确定。

  • 当对栅格数据集进行细化时,栅格值为 back_or_no_value 参数指定的值的单元格被视为无值,不参与细化,而栅格的原无值将作为有效值来参与细化; 同时,在 back_or_no_value_tolerance 参数指定的无值的容限范围内的单元格也不参与细化。例如,指定无值的值为 a,指定的无值的容限为 b, 则栅格值在 [a-b,a+b] 范围内的单元格均不参与细化。
  • 当对影像数据集进行细化时,栅格值为指定的值的单元格被视为背景色,不参与细化;同时,在 back_or_no_value_tolerance 参数指 定的背景色的容限范围内的单元格也不参与细化。

需要注意,影像数据集中栅格值代表的是一个颜色值,因此,如果想要将某种颜色设为背景色,为 back_or_no_value 参数指定的值应为 将该颜色(RGB 值)转为 32 位整型之后的值,系统内部会根据像素格式再进行相应的转换。背景色的容限同样为一个 32 位整型值。该 值在系统内部被转为分别对应 R、G、B 的三个容限值,例如,指定为背景色的颜色为 (100,200,60),指定的容限值为 329738,该值对应 的 RGB 值为 (10,8,5),则值在 (90,192,55) 和 (110,208,65) 之间的颜色均不参与细化。

注意:对于栅格数据集,如果指定的无值的值,在待细化的栅格数据集的值域范围外,会分析失败,返回 None。

参数:
  • source (DatasetImage or DatasetGrid or str) -- 指定的待细化的栅格数据集。支持影像数据集。
  • back_or_no_value (int or tuple) -- 指定栅格的背景色或表示无值的值。可以使用一个 int 或 tuple 来表示一个 RGB 或 RGBA 值。
  • back_or_no_value_tolerance (float or tuple) -- 栅格背景色的容限或无值的容限。可以使用一个 float 或 tuple 来表示一个 RGB 或 RGBA 值。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 用于存储结果数据的数据源。
  • out_dataset_name (str) -- 结果数据集的名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

Dataset or str

iobjectspy.analyst.raster_mosaic(inputs, back_or_no_value, back_tolerance, join_method, join_pixel_format, cell_size, encode_type='NONE', valid_rect=None, out_data=None, out_dataset_name=None, progress=None)

栅格数据集镶嵌。支持栅格数据集和影像数据集。

栅格数据的镶嵌是指将两个或两个以上栅格数据按照地理坐标组成一个栅格数据。有时由于待研究分析的区域很大,或者感兴趣的目标对象 分布很广,涉及到多个栅格数据集或者多幅影像,就需要进行镶嵌。下图展示了六幅相邻的栅格数据镶嵌为一幅数据。

../_images/Mosaic_1.png

进行栅格数据镶嵌时,需要注意以下要点:

  • 待镶嵌栅格必须具有相同的坐标系 镶嵌要求所有栅格数据集或影像数据集具有相同的坐标系,否则镶嵌结果可能出错。可以在镶嵌前通过投影转换统一所有带镶嵌栅格的 坐标系。

  • 重叠区域的处理 镶嵌时,经常会出现两幅或多幅栅格数据之间有重叠区域的情况(如下图,两幅影像在红色框内的区域是重叠的),此时需要指定对重 叠区域栅格的取值方式。SuperMap 提供了五种重叠区域取值方式,使用者可根据实际需求选择适当的方式,详见 RasterJoinType 类。

    ../_images/Mosaic_2.png
  • 关于无值和背景色及其容限的说明 待镶嵌的栅格数据有两种:栅格数据集和影像数据集。对于栅格数据集,该方法可以指定无值及无值的容限,对于影像数据集,该方法 可以指定背景色及其容限。

    • 待镶嵌数据为栅格数据集:

      • 当待镶嵌的数据为栅格数据集时,栅格值为 back_or_no_value 参数所指定的值的单元格,以及在 back_tolerance 参数指定的容限范 围内的单元格被视为无值,这些单元格不会参与镶嵌时的计算(叠加区域的计算),而栅格的原无值单元格则不再是无值数据从而参与运算。
      • 需要注意,无值的容限是用户指定的无值的值的容限,与栅格中原无值无关。
    • 待镶嵌数据为影像数据集

      • 当待镶嵌的数据为影像数据集时,栅格值为 back_or_no_value 参数所指定的值的单元格,以及在 back_tolerance 参数指定的容限 范围内单元格被视为背景色,这些单元格不参与镶嵌时的计算。例如,指定无值的值为 a,指定的无值的容限为 b,则栅格值在 [a-b,a+b] 范围内的单元格均不参与计算。
      • 注意,影像数据集中栅格值代表的是一个颜色。影像数据集的栅格值对应为 RGB 颜色,因此,如果想要将某种颜色设为背景色, 为 back_or_no_value 参数指定的值应为将该颜色(RGB 值)转为 32 位整型之后的值,系统内部会根据像素格式再进行相应的转换。
      • 对于背景色的容限值的设置,与背景色的值的指定方式相同:该容限值为一个 32 位整型值,在系统内部被转换为对应背景色 R、G、B 的三个容限值,例如,指定为背景色的颜色为 (100,200,60),指定的容限值为 329738,该值对应的 RGB 值为 (10,8,5),则值在 (90,192,55) 和 (110,208,65) 之间的颜色均被视为背景色,不参与计算。

注意:

将两个或以上高像素格式的栅格镶嵌成低像素格式的栅格时,结果栅格值可能超出值域,导致错误,因此不建议进行此种操作。

参数:
  • inputs (list[Dataset] or list[str] or str) -- 指定的待镶嵌的数据集的集合。
  • back_or_no_value (float or tuple) -- 指定的栅格背景颜色或无值的值。可以使用一个 float 或 tuple 表示一个 RGB 或 RGBA 值
  • back_tolerance (float or tuple) -- 指定的栅格背景颜色或无值的容限。可以使用一个 float 或 tuple 表示一个 RGB 或 RGBA 值
  • join_method (RasterJoinType or str) -- 指定的镶嵌方法,即镶嵌时重叠区域的取值方式。
  • join_pixel_format (RasterJoinPixelFormat or str) -- 指定的镶嵌结果栅格数据的像素格式。
  • cell_size (float) -- 指定的镶嵌结果数据集的单元格大小。
  • encode_type (EncodeType or str) -- 指定的镶嵌结果数据集的编码方式。
  • valid_rect (Rectangle) -- 指定的镶嵌结果数据集的有效范围。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 指定的用于存储镶嵌结果数据集的数据源信息
  • out_dataset_name (str) -- 指定的镶嵌结果数据集的名称。
  • progress (function) -- 进度信息,具体参考 StepEvent
返回:

镶嵌结果数据集

返回类型:

Dataset

iobjectspy.analyst.build_lake(dem_grid, lake_data, elevation, progress=None)

挖湖,即修改面数据集区域范围内的 DEM 数据集的高程值为指定的数值。 挖湖是指根据已有的湖泊面数据,在 DEM 数据集上显示湖泊信息。如下图所示,挖湖之后,DEM 在湖泊面数据对应位置的栅格值变成指定的高程值,且整个湖泊区域栅格值相同。

../_images/BuildLake.png
参数:
  • dem_grid (DatasetGrid or str) -- 指定的待挖湖的 DEM 栅格数据集。
  • lake_data (DatasetVector or str) -- 指定的湖区域,为面数据集。
  • elevation (str or float) -- 指定的湖区域的高程字段或指定的高程值。如果为 str,则要求字段类型为数值型。如果指定为 None 或空字符串,或湖区域数据集中不存在指定的 字段,则按照湖区域边界对应 DEM 栅格上的最小高程进行挖湖。高程值的单位与 DEM 栅格数据集的栅格值单位相同。
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

成功返回 True,否则返回 False

返回类型:

bool

iobjectspy.analyst.build_terrain(source_datas, lake_dataset=None, lake_altitude_field=None, clip_data=None, erase_data=None, interpolate_type='IDW', resample_len=0.0, z_factor=1.0, is_process_flat_area=False, encode_type='NONE', pixel_format='SINGLE', cell_size=0.0, out_data=None, out_dataset_name=None, progress=None)

根据指定的地形构建参数信息创建地形。 DEM(Digital Elevation Model,数字高程模型)主要用于描述区域地貌形态的空间分布,是地面特性为高程和海拔高程的数字地面模型(DTM), 通常通过高程测量点(或从等高线中进行采样提取高程点)进行数据内插而成。此方法用于构建地形,即对具有高程信息的点或线数据集通过插值生成 DEM 栅格。

../_images/BuildTerrain_1.png

可以通过 source_datas 参数指定用于构建地形的数据集,支持仅高程点、仅等高线以及支持高程点和等高线共同构建。

参数:
  • source_datas (dict[DatasetVector,str] or dict[str,str]) -- 用于构建的点数据集和线数据集,以及数据集的高程字段。要求数据集的坐标系相同。
  • lake_dataset (DatasetVector or str) -- 湖泊面数据集。在结果数据集中,湖泊面数据集区域范围内的高程值小于周边相邻的高程值。
  • lake_altitude_field (str) -- 湖泊面数据集的高程字段
  • clip_data (DatasetVector or str) --

    设置用于裁剪的数据集。构建地形时,仅位于裁剪区域内的 DEM 结果被保留,区域外的部分被赋予无值。

    ../_images/BuildTerrainParameter_1.png
  • erase_data (DatasetVector or str) --

    用于擦除的数据集。构建地形时,位于擦除区域内的结果 DEM 栅格值为无值。仅在 interpolate_type 设置为 TIN 时有效。

    ../_images/BuildTerrainParameter_2.png
  • interpolate_type (TerrainInterpolateType or str) -- 地形插值类型。默认值为 IDW。
  • resample_len (float) -- 采样距离。只对线数据集有效。单位与用于构建地形的线数据集单位一致。仅在 interpolate_type 设置为TIN时有效。 首先对线数据集进行重采样过滤掉一些比较密集的节点,然后再生成 TIN 模型,提高生成速度。
  • z_factor (float) -- 高程缩放系数
  • is_process_flat_area (bool) -- 是否处理平坦区域。等值线生成DEM能较好地处理山顶山谷,点生成DEM也可以处理平坦区域,但效 果没有等值线生成DEM处理的好,主要原因是根据点判断平坦区域结果较为粗糙。
  • encode_type (EncodeType or str) -- 编码方式。对于栅格数据集,目前支持的编码方式有未编码、SGL、LZW 三种方式
  • pixel_format (PixelFormat or str) -- 结果数据集的像素格式
  • cell_size (float) -- 结果数据集的栅格单元的大小,如果指定为 0 或负数,则系统会使用 L/500(L 是指源数据集的区域范围对应的矩形的对角线长度)作为单元格大小。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 用于存储结果数据的数据源。
  • out_dataset_name (str) -- 结果数据集的名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

Dataset or str

iobjectspy.analyst.area_solar_radiation_days(grid_data, latitude, start_day, end_day=160, hour_start=0, hour_end=24, day_interval=5, hour_interval=0.5, transmittance=0.5, z_factor=1.0, out_data=None, out_total_grid_name='TotalGrid', out_direct_grid_name=None, out_diffuse_grid_name=None, out_duration_grid_name=None, progress=None)

计算多天的区域太阳辐射总量,即整个DEM范围内每个栅格的太阳辐射情况。需要指定每天的开始时点、结束时点和开始日期、结束日期。

参数:
  • grid_data (DatasetGrid or str) -- 待计算太阳辐射的DEM栅格数据
  • latitude (float) -- 待计算区域的平均纬度
  • start_day (datetime.date or str or int) -- 起始日期,可以是 "%Y-%m-%d" 格式的字符串,如果为 int,则表示一年中的第几天
  • end_day (datetime.date or str or int) -- 终止日期,可以是 "%Y-%m-%d" 格式的字符串,如果为 int,则表示一年中的第几天
  • hour_start (float or str or datetime.datetime) -- 起始时点,如果输入float 时,可以输入一个 [0,24]范围内的数值,表示一天中的第几个小时。也可以输入一个 datetime.datatime 或 "%H:%M:%S" 格式的字符串
  • hour_end (float or str or datetime.datetime) -- 终止时点,如果输入float 时,可以输入一个 [0,24]范围内的数值,表示一天中的第几个小时。也可以输入一个 datetime.datatime 或 "%H:%M:%S" 格式的字符串
  • day_interval (int) -- 天数间隔,单位为天
  • hour_interval (float) -- 小时间隔,单位为小时。
  • transmittance (float) -- 太阳辐射穿过大气的透射率,值域为[0,1]。
  • z_factor (float) -- 高程缩放系数
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 用于存储结果数据的数据源。
  • out_total_grid_name (str) -- 总辐射量结果数据集名称,数据集名称必须合法
  • out_direct_grid_name (str) -- 直射辐射量结果数据集名称,数据集名称必须合法,且接口内不会自动获取有效的数据集名称
  • out_diffuse_grid_name (str) -- 散射辐射量结果数据集名称,数据集名称必须合法,且接口内不会自动获取有效的数据集名称
  • out_duration_grid_name (str) -- 太阳直射持续时间结果数据集名称,数据集名称必须合法,且接口内不会自动获取有效的数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

返回一个四个元素的 tuple:

  • 第一个为总辐射量结果数据集,
  • 如果设置了直射辐射量结果数据集名称,第二个为直射辐射量结果数据集,否则为 None,
  • 如果设置散射辐射量结果数据集的名称,第三个为散射辐射量结果数据集,否则为 None
  • 如果设置太阳直射持续时间结果数据集的名称,第四个为太阳直射持续时间结果数据集,否则为 None

返回类型:

tuple[DatasetGrid] or tuple[str]

iobjectspy.analyst.area_solar_radiation_hours(grid_data, latitude, day, hour_start=0, hour_end=24, hour_interval=0.5, transmittance=0.5, z_factor=1.0, out_data=None, out_total_grid_name='TotalGrid', out_direct_grid_name=None, out_diffuse_grid_name=None, out_duration_grid_name=None, progress=None)

计算一天内的太阳辐射,需要指定开始时点、结束时点及开始日期作为要计算的日期

参数:
  • grid_data (DatasetGrid or str) -- 待计算太阳辐射的DEM栅格数据
  • latitude (float) -- 待计算区域的平均纬度
  • day (datetime.date or str or int) -- 待计算的指定日期。可以是 "%Y-%m-%d" 格式的字符串,如果为 int,则表示一年中的第几天。
  • hour_start (float or str or datetime.datetime) -- 起始时点,如果输入float 时,可以输入一个 [0,24]范围内的数值,表示一天中的第几个小时。也可以输入一个 datetime.datatime 或 "%H:%M:%S" 格式的字符串
  • hour_end (float or str or datetime.datetime) -- 终止时点,如果输入float 时,可以输入一个 [0,24]范围内的数值,表示一天中的第几个小时。也可以输入一个 datetime.datatime 或 "%H:%M:%S" 格式的字符串
  • hour_interval (float) -- 小时间隔,单位为小时。
  • transmittance (float) -- 太阳辐射穿过大气的透射率,值域为[0,1]。
  • z_factor (float) -- 高程缩放系数
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 用于存储结果数据的数据源。
  • out_total_grid_name (str) -- 总辐射量结果数据集名称,数据集名称必须合法
  • out_direct_grid_name (str) -- 直射辐射量结果数据集名称,数据集名称必须合法,且接口内不会自动获取有效的数据集名称
  • out_diffuse_grid_name (str) -- 散射辐射量结果数据集名称,数据集名称必须合法,且接口内不会自动获取有效的数据集名称
  • out_duration_grid_name (str) -- 太阳直射持续时间结果数据集名称,数据集名称必须合法,且接口内不会自动获取有效的数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

返回一个四个元素的 tuple:

  • 第一个为总辐射量结果数据集,
  • 如果设置了直射辐射量结果数据集名称,第二个为直射辐射量结果数据集,否则为 None,
  • 如果设置散射辐射量结果数据集的名称,第三个为散射辐射量结果数据集,否则为 None
  • 如果设置太阳直射持续时间结果数据集的名称,第四个为太阳直射持续时间结果数据集,否则为 None

返回类型:

tuple[DatasetGrid] or tuple[str]

iobjectspy.analyst.basin(direction_grid, out_data=None, out_dataset_name=None, progress=None)

关于水文分析:

  • 水文分析基于数字高程模型(DEM)栅格数据建立水系模型,用于研究流域水文特征和模拟地表水文过程,并对未来的地表水文情况做出预估。水文分析模型能够帮助我们分析洪水的范围,定位径流污染源,预测地貌改变对径流的影响等,广泛应用于区域规划、农林、灾害预测、道路设计等诸多行业和领域。

  • 地表水的汇流情况很大程度上决定于地表形状,而 DEM 数据能够表达区域地貌形态的空间分布,在描述流域地形,如流域边界、坡度和坡向、河网提取等方面具有突出优势,因而非常适用于水文分析。

  • SuperMap 提供的水文分析主要内容有填充洼地、计算流向、计算流长、计算累积汇水量、流域划分、河流分级、连接水系及水系矢量化等。

    • 水文分析的一般流程为:

      ../_images/HydrologyAnalyst_2.png
    • 如何获得栅格水系?

      水文分析中很多功能都需要基于栅格水系数据,如提取矢量水系(stream_to_line() 方法)、河流分级(stream_order() 方法)、 连接水系(:stream_link() 方法)等。

      通常,可以从累积汇水量栅格中提取栅格水系数据。在累积汇水量栅格中,单元格的值越大,代表该区域的累积汇水量越大。累积汇水量 较高的单元格可视为河谷,因此,可以通过设定一个阈值,提取累积汇水量大于该值的单元格,这些单元格就构成栅格水系。值得说明的 是,对于不同级别的河谷、不同区域的相同级别的河谷,该值可能不同,因此该阈值的确定需要依据研究区域的实际地形地貌并通过不断的试验来确定。

      在 SuperMap 中,要求用于进一步分析(提取矢量水系、河流分级、连接水系等)的栅格水系为一个二值栅格,这可以通过栅格代数运算 来实现,使大于或等于累积汇水量阈值的单元格为 1,否则为 0,如下图所示。

      ../_images/HydrologyAnalyst_3.png

      因此,提取栅格水系的过程如下:

      1. 获得累积汇水量栅格,可通过 flow_accumulation() 方法实现。
      2. 通过栅格代数运算 expression_math_analyst() 方法对累积汇水量栅格进行关系运算,就可以得到满足要求的栅格水系数据。假设设定 阈值为 1000,则运算表达式为:"[Datasource.FlowAccumulationDataset]>1000"。除此,使用 Con(x,y,z) 函数也可以得到想 要的结果,即表达式为:"Con([Datasource.FlowAccumulationDataset]>1000,1,0)"。

根据流向栅格计算流域盆地。流域盆地即为集水区域,是用于描述流域的方式之一。

计算流域盆地是依据流向数据为每个单元格分配唯一盆地的过程,如下图所示,流域盆地是描述流域的方式之一,展现了那些所有相互连接且处于同一流域盆地的栅格。

../_images/Basin.png
参数:
  • direction_grid (DatasetGrid or str) -- 流向栅格数据集。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 存储结果数据集的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

流域盆地栅格数据集或数据集名称

返回类型:

DatasetGrid or str

iobjectspy.analyst.build_quad_mesh(quad_mesh_region, left_bottom, left_top, right_bottom, right_top, cols=0, rows=0, out_col_field=None, out_row_field=None, out_data=None, out_dataset_name=None, progress=None)

对单个简单面对象进行网格剖分。 流体问题是一个连续性的问题,为了简化对其的研究以及建模处理的方便,对研究区域进行离散化处理,其思路就是建立离散的网格,网格划分就是对连续的物理区域进行剖分,把它分成若干个网格,并确定各个网格中的节点,用网格内的一个值来代替整个网格区域的基本情况,网格作为计算与分析的载体,其质量的好坏对后期的数值模拟的精度和计算效率有重要的影响。

网格剖分的步骤:

1.数据预处理,包含去除重复点等。给定一个合理的容限,去除重复点,使得最后的网格划分结果更趋合理,不会出现看起来从1个点
(实际是重复点)出发有多条线的现象。
2.多边形分解:对于复杂的多边形区域,我们采用分块逐步划分的方法来进行网格的构建,将一个复杂的不规则多边形区域划分为多个简
单的单连通区域,然后对每个单连通区域执行网格划分程序,最后再将各个子区域网格拼接起来构成对整个区域的划分。
3.选择四个角点:这4个角点对应着网格划分的计算区域上的4个顶点,其选择会对划分的结果造成影响。其选择应尽量在原区域近似四边

形的四个顶点上,同时要考虑整体的流势。

../_images/SelectPoint.png

4.为了使划分的网格呈现四边形的特征,构成多边形的顶点数据(不在同一直线上)需参与构网。

5.进行简单区域网格划分。

注:简单多边形:多边形内任何直线或边都不会交叉。

../_images/QuadMeshPart.png

说明:

RightTopIndex 为右上角点索引号,LeftTopIndex 为左上角点索引号,RightBottomIndex 为右下角点索引号,LeftBottomIndex 为左下角点索引号。则 nCount1=(RightTopIndex- LeftTopIndex+1)和 nCount2=(RightBottomIndex- LeftBottomIndex+1), 如果:nCount1不等于nCount2,则程序不处理。

水文分析的相关介绍,请参考 basin()

参数:
  • quad_mesh_region (GeoRegion) -- 网格剖分的面对象
  • left_bottom (Point2D) -- 网格剖分的区域多边形左下角点坐标。四个角点选择依据:4个角点对应着网格剖分的计算区域上的4个顶点, 其选择会对剖分的结果造成影响。其选择应尽量在原区域近似四边形的四个顶点上,同时要考虑整体的流势。
  • left_top (Point2D) -- 网格剖分的区域多边形左上角点坐标
  • right_bottom (Point2D) -- 网格剖分的区域多边形右下角点坐标
  • right_top (Point2D) -- 网格剖分的区域多边形右上角点坐标
  • cols (int) -- 网格剖分的列方向节点数。默认值为0,表示不参与处理;若不为0,但是此值若小于多边形列方向的最大点数减一,则 以多边形列方向的最大点数减一作为列数(cols);若大于多边形列方向的最大点数减一,则会自动加点,使列方 向的数目为 cols。 举例来讲:如果用户希望将一矩形面对象划分为2*3(高*宽)=6个小矩形,则列方向数目(cols)为3。
  • rows (int) -- 网格剖分的行方向节点数。默认值为0,表示不参与处理;若不为0,但是此值小于多边形行方向的最大点数减一,则以 多边形行方向的最大点数减一作为行数(rows);若大于多边形行方向的最大点数减一,则会自动加点,使行方向的 数目为 rows。举例来讲:如果用户希望将一矩形面对象划分为2*3(高*宽)=6个小矩形,则行方向数目(rows)为2。
  • out_col_field (str) -- 格网剖分结果对象的列属性字段名称。此字段用来保存剖分结果对象的列号。
  • out_row_field (str) -- 格网剖分结果对象的行属性字段名称。此字段用来保存剖分结果对象的行号。
  • out_data (DatasourceConnectionInfo or Datasource or str) -- 存放剖分结果数据集的数据源。
  • out_dataset_name (str) -- 剖分结果数据集的名称。
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

剖分后的结果数据集,剖分出的多个面以子对象形式返回。

返回类型:

DatasetVector or str

iobjectspy.analyst.fill_sink(surface_grid, exclude_area=None, out_data=None, out_dataset_name=None, progress=None)

对 DEM 栅格数据填充伪洼地。 洼地是指周围栅格都比其高的区域,分为自然洼地和伪洼地。

 * 自然洼地,是实际存在的洼地,是地表真实形态的反映,如冰川或喀斯特地貌、采矿区、坑洞等,一般远少于伪洼地;  * 伪洼地,主要是由数据处理造成的误差、不合适的插值方法导致,在 DEM 栅格数据中很常见。

在确定流向时,由于洼地高程低于周围栅格的高程,一定区域内的流向都将指向洼地,导致水流在洼地聚集不能流出,引起汇水网络的中断, 因此,填充洼地通常是进行合理流向计算的前提。

在填充某处洼地后,有可能产生新的洼地,因此,填充洼地是一个不断重复识别洼地、填充洼地的过程,直至所有洼地被填充且不再产生新 的洼地。下图为填充洼地的剖面示意图。

../_images/FillSink.png

该方法可以指定一个点或面数据集,用于指示的真实洼地或需排除的洼地,这些洼地不会被填充。使用准确的该类数据,将获得更为真实的 无伪洼地地形,使后续分析更为可靠。

用于指示洼地的数据,如果是点数据集,其中的一个或多个点位于洼地内即可,最理想的情形是点指示该洼地区域的汇水点;如果是面数据 集,每个面对象应覆盖一个洼地区域。

可以通过 exclude_area 参数,指定一个点或面数据集,用于指示的真实洼地或需排除的洼地,这些洼地不会被填充。使用准确的该类数据, 将获得更为真实的无伪洼地地形,使后续分析更为可靠。用于指示洼地的数据,如果是点数据集,其中的一个或多个点位于洼地内即可,最 理想的情形是点指示该洼地区域的汇水点;如果是面数据集,每个面对象应覆盖一个洼地区域。

如果 exclude_area 为 None,则会将 DEM 栅格中所有洼地填充,包括伪洼地和真实洼地

水文分析的相关介绍,请参考 basin()

参数:
  • surface_grid (DatasetGrid or str) -- 指定的要进行填充洼地的 DEM 数据
  • exclude_area (DatasetVector or str) -- 指定的用于指示已知自然洼地或要排除的洼地的点或面数据。如果是点数据集,一个或多个点所在的区域指示为洼地; 如果是面数据集,每个面对象对应一个洼地区域。如果为 None,则会将 DEM 栅格中所有洼地填充,包括伪洼地和真实洼地
  • out_data (DatasourceConnectionInfo or Datasource or str) -- 用于存储结果数据集的数据源
  • out_dataset_name (str) -- 结果数据集的名称。
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

无伪洼地的 DEM 栅格数据集或数据集名称。如果填充伪洼地失败,则返回 None。

返回类型:

DatasetVector or str

iobjectspy.analyst.flow_accumulation(direction_grid, weight_grid=None, out_data=None, out_dataset_name=None, progress=None)

根据流向栅格计算累积汇水量。可应用权重数据集计算加权累积汇水量。 累积汇水量是指流向某个单元格的所有上游单元格的水流累积量,是基于流向数据计算得出的。

累积汇水量的值可以帮助我们识别河谷和分水岭。单元格的累积汇水量较高,说明该地地势较低,可视为河谷;为0说明该地地势较高,可能为分水岭。因此,累积汇水量是提取流域的各种特征参数(如流域面积、周长、排水密度等)的基础。

计算累积汇水量的基本思路是:假定栅格数据中的每个单元格处有一个单位的水量,依据水流方向图顺次计算每个单元格所能累积到的水量(不包括当前单元格的水量)。

下图显示了由水流方向计算累积汇水量的过程。

../_images/FlowAccumulation_1.png

下图为流向栅格和基于其生成的累积汇水量栅格。

../_images/FlowAccumulation_2.png

在实际应用中,每个单元格的水量不一定相同,往往需要指定权重数据来获取符合需求的累积汇水量。使用了权重数据后,累积汇水量的计算过程中,每个单元格的水量不再是一个单位,而是乘以权重(权重数据集的栅格值)后的值。例如,将某时期的平均降雨量作为权重数据,计算所得的累积汇水量就是该时期的流经每个单元格的雨量。

注意,权重栅格必须与流向栅格具有相同的范围和分辨率。

水文分析的相关介绍,请参考 basin()

参数:
  • direction_grid (DatasetGrid or str) -- 流向栅格数据。
  • weight_grid (DatasetGrid or str) -- 权重栅格数据。设置为 None 表示不使用权重数据集。
  • out_data (DatasourceConnectionInfo or Datasource or str) -- 用于存储结果数据集的数据源
  • out_dataset_name (str) -- 结果数据集的名称。
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

累积汇水量栅格数据集或数据集名称。如果计算失败,则返回 None。

返回类型:

DatasetVector or str

iobjectspy.analyst.flow_direction(surface_grid, force_flow_at_edge, out_data=None, out_dataset_name=None, out_drop_grid_name=None, progress=None)

对 DEM 栅格数据计算流向。为保证流向计算的正确性,建议使用填充伪洼地之后的 DEM 栅格数据。

流向,即水文表面水流的方向。计算流向是水文分析的关键步骤之一。水文分析的很多功能需要基于流向栅格,如计算累积汇水量、计算流 长和流域等。

SuperMap 使用最大坡降法(D8,Deterministic Eight-node)计算流向。这种方法通过计算单元格的最陡下降方向作为水流的方向。中心 单元格与相邻单元格的高程差与距离的比值称为高程梯度。最陡下降方向即为中心单元格与高程梯度最大的单元格所构成的方向,也就是中 心栅格的流向。单元格的流向的值,是通过对其周围的8个邻域栅格进行编码来确定的。如下图所示,若中心单元格的水流方向是左边,则其 水流方向被赋值16;若流向右边,则赋值1。

在 SuperMap 中,通过对中心栅格的 8 个邻域栅格编码(如下图所示),中心栅格的水流方向便可由其中的某一值来确定。例如,若中心 栅格的水流方向是左边,则其水流方向被赋值 16;若流向右边,则赋值 1。

../_images/FlowDirection_1.png

计算流向时,需要注意栅格边界单元格的处理。位于栅格边界的单元格比较特殊,通过 forceFlowAtEdge 参数可以指定其流向是否向外, 如果向外,则边界栅格的流向值如下图(左)所示,否则,位于边界上的单元格将赋为无值,如下图(右)所示。

../_images/FlowDirection_2.png

计算 DEM 数据每个栅格的流向得到流向栅格。下图显示了基于无洼地的 DEM 数据生成的流向栅格。

../_images/FlowDirection_3.png

水文分析的相关介绍,请参考 basin()

参数:
  • surface_grid (DatasetGrid or str) -- 用于计算流向的 DEM 数据
  • force_flow_at_edge (bool) -- 指定是否强制边界的栅格流向为向外。如果为 True,则 DEM 栅格边缘处的所有单元的流向都是从栅格向外流动。
  • out_data (DatasourceConnectionInfo or Datasource or str) -- 用于存储结果数据集的数据源
  • out_dataset_name (str) -- 结果流向数据集的名称
  • out_drop_grid_name (str) --

    结果高程梯度栅格数据集名称。可选参数。用于计算流向的中间结果。中心单元格与相邻单元格的高程差与距离的比值称 为高程梯度。如下图所示,为流向计算的一个实例,该实例中生成了高程梯度栅格

    ../_images/FlowDirection.png
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

返回一个2个元素的tuple,第一个元素为 结果流向栅格数据集或数据集名称,如果设置了结果高程梯度栅格数据集名称, 则第二个元素为结果高程梯度栅格数据集或数据集名称,否则为 None

返回类型:

tuple[DatasetGrid,DatasetGrid] or tuple[str,str]

iobjectspy.analyst.flow_length(direction_grid, up_stream, weight_grid=None, out_data=None, out_dataset_name=None, progress=None)

根据流向栅格计算流长,即计算每个单元格沿着流向到其流向起始点或终止点之间的距离。可应用权重数据集计算加权流长。

流长,是指每个单元格沿着流向到其流向起始点或终止点之间的距离,包括上游方向和下游方向的长度。水流长度直接影响地面径流的速度, 进而影响地面土壤的侵蚀力,因此在水土保持方面具有重要意义,常作为土壤侵蚀、水土流失情况的评价因素。

流长的计算基于流向数据,流向数据表明水流的方向,该数据集可由流向分析创建;权重数据定义了每个单元格的水流阻力。流长一般用于 洪水的计算,水流往往会受到诸如坡度、土壤饱和度、植被覆盖等许多因素的阻碍,此时对这些因素建模,需要提供权重数据集。

流长有两种计算方式:

  • 顺流而下:计算每个单元格沿流向到下游流域汇水点之间的最长距离。
  • 溯流而上:计算每个单元格沿流向到上游分水线顶点的最长距离。

下图分别为以顺流而下和溯流而上计算得出的流长栅格:

../_images/FlowLength.png

权重数据定义了每个栅格单元间的水流阻力,应用权重所获得的流长为加权距离(即距离乘以对应权重栅格的值)。例如,将流长分析应用 于洪水的计算,洪水流往往会受到诸如坡度、土壤饱和度、植被覆盖等许多因素的阻碍,此时对这些因素建模,需要提供权重数据集。

注意,权重栅格必须与流向栅格具有相同的范围和分辨率。

水文分析的相关介绍,请参考 basin()

参数:
  • direction_grid (DatasetGrid or str) -- 指定的流向栅格数据。
  • up_stream (bool) -- 指定顺流而下计算还是溯流而上计算。True 表示溯流而上,False 表示顺流而下。
  • weight_grid (DatasetGrid or str) -- 指定的权重栅格数据。设置为 None 表示不使用权重数据集。
  • out_data (DatasourceConnectionInfo or Datasource or str) -- 用于存储结果数据集的数据源
  • out_dataset_name (str) -- 结果流长栅格数据集的名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果流长栅格数据集或数据集名称

返回类型:

DatasetGrid or str

iobjectspy.analyst.stream_order(stream_grid, direction_grid, order_type, out_data=None, out_dataset_name=None, progress=None)

对河流进行分级,根据河流等级为栅格水系编号。

流域中的河流分为干流和支流,在水文学中,根据河流的流量、形态等因素对河流进行分级。在水文分析中,可以从河流的级别推断出河流的某些特征。

该方法以栅格水系为基础,依据流向栅格对河流分级,结果栅格的值即代表该条河流的等级,值越大,等级越高。SuperMap 提供两种河流 分级方法:Strahler 法和 Shreve 法。有关这两种方法的介绍请参见 :py:class`StreamOrderType` 枚举类型。

如下图所示,是河流分级的一个实例。根据 Shreve 河流分级法,该区域的河流被分为14个等级。

../_images/StreamOrder.png

水文分析的相关介绍,请参考 basin()

参数:
  • stream_grid (DatasetGrid or str) -- 栅格水系数据
  • direction_grid (DatasetGrid or str) -- 流向栅格数据
  • order_type (StreamOrderType or str) -- 流域水系编号方法
  • out_data (DatasourceConnectionInfo or Datasource or str) -- 用于存储结果数据集的数据源
  • out_dataset_name (str) -- 结果栅格数据集的名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

编号后的栅格流域水系网络,为一个栅格数据集。返回结果数据集或数据集名称。

返回类型:

DatasetGrid or str

iobjectspy.analyst.stream_to_line(stream_grid, direction_grid, order_type, out_data=None, out_dataset_name=None, progress=None)

提取矢量水系,即将栅格水系转化为矢量水系。

提取矢量水系是基于流向栅格,将栅格水系转化为矢量水系(一个矢量线数据集)的过程。得到矢量水系后,就可以进行各种基于矢量的计 算、处理和空间分析,如构建水系网络。下图为 DEM 数据以及对应的矢量水系。

../_images/StreamToLine.png

通过该方法获得的矢量水系数据集,保留了河流的等级和流向信息。

  • 在提取矢量水系的同时,系统计算每条河流的等级,并在结果数据集中自动添加一个名为“StreamOrder”的属性字段来存储该值。分级的方式可 通过 order_type 参数设置。
  • 流向信息存储在结果数据集中名为“Direction”的字段中,以0或1来表示,0表示流向与该线对象的几何方向一致,1表示与线对象的几何 方向相反。通过该方法获得的矢量水系的流向均与其几何方向相同,即“Direction”字段值都为0。在对矢量水系构建水系网络后,可直接 使用(或根据实际需要进行修改)该字段作为流向字段。

水文分析的相关介绍,请参考 basin()

参数:
  • stream_grid (DatasetGrid or str) -- 栅格水系数据
  • direction_grid (DatasetGrid or str) -- 流向栅格数据
  • order_type (StreamOrderType or str) -- 河流分级方法
  • out_data (DatasourceConnectionInfo or Datasource or str) -- 用于存储结果数据集的数据源
  • out_dataset_name (str) -- 结果矢量水系数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

矢量水系数据集或数据集名称

返回类型:

DatasetVector or str

连接水系,即根据栅格水系和流向栅格为每条河流赋予唯一值。 连接水系基于栅格水系和流向栅格,为水系中的每条河流分别赋予唯一值,值为整型。连接后的水系网络记录了水系节点的连接信息,体现了 水系的网络结构。

如下图所示,连接水系后,每条河段都有唯一的栅格值。图中红色的点为交汇点,即河段与河段相交的位置。河段是河流的一部分,它连接 两个相邻交汇点,或连接一个交汇点和汇水点,或连接一个交汇点和分水线。因此,连接水系可用于确定流域盆地的汇水点。

../_images/StreamLink_1.png

下图连接水系的一个实例。

../_images/StreamLink_2.png

水文分析的相关介绍,请参考 basin()

参数:
  • stream_grid (DatasetGrid or str) -- 栅格水系数据
  • direction_grid (DatasetGrid or str) -- 流向栅格数据
  • out_data (DatasourceConnectionInfo or Datasource or str) -- 用于存储结果数据集的数据源
  • out_dataset_name (str) -- 结果栅格数据集的名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

连接后的栅格水系,为一个栅格数据集。返回结果栅格数据集或数据集名称

返回类型:

DatasetGrid or str

iobjectspy.analyst.watershed(direction_grid, pour_points_or_grid, out_data=None, out_dataset_name=None, progress=None)

流域分割,即生成指定汇水点(汇水点栅格数据集)的流域盆地。

将一个流域划分为若干个子流域的过程称为流域分割。通过 basin() 方法,可以获取较大的流域,但实际分析中,可能需要将较大的流域划 分出更小的流域(称为子流域)。

确定流域的第一步是确定该流域的汇水点,那么,流域分割同样首先要确定子流域的汇水点。与使用 basin 方法计算流域盆地不同,子流 域的汇水点可以在栅格的边界上,也可能位于栅格的内部。该方法要求输入一个汇水点栅格数据,该数据可通过提取汇水点功能( pour_points() 方法) 获得。此外,还可以使用另一个重载方法,输入表示汇水点的二维点集合来分割流域。

水文分析的相关介绍,请参考 basin()

参数:
  • direction_grid (DatasetGrid or str) -- 流向栅格数据
  • pour_points_or_grid (DatasetGrid or str or list[Point2D]) -- 汇水点栅格数据或指定的汇水点(二维点列表),汇水点使用地理坐标单位。
  • out_data (DatasourceConnectionInfo or Datasource or str) -- 用于存储结果数据集的数据源
  • out_dataset_name (str) -- 结果汇水点的流域盆地栅格数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

汇水点的流域盆地栅格数据集或数据集名称

返回类型:

DatasetGrid or str

iobjectspy.analyst.pour_points(direction_grid, accumulation_grid, area_limit, out_data=None, out_dataset_name=None, progress=None)

根据流向栅格和累积汇水量栅格生成汇水点栅格。

汇水点位于流域的边界上,通常为边界上的最低点,流域内的水从汇水点流出,所以汇水点必定具有较高的累积汇水量。根据这一特点,就可以基于累积汇水量和流向栅格来提取汇水点。

汇水点的确定需要一个累积汇水量阈值,累积汇水量栅格中大于或等于该阈值的位置将作为潜在的汇水点,再依据流向最终确定汇水点的位置。该阈值的确定十分关键,影响着汇水点的数量、位置以及子流域的大小和范围等。合理的阈值,需要考虑流域范围内的土壤特征、坡度特征、气候条件等多方面因素,根据实际研究的需求来确定,因此具有较大难度。

获得了汇水点栅格后,可以结合流向栅格来进行流域的分割( watershed() 方法)。

水文分析的相关介绍,请参考 basin()

参数:
  • direction_grid (DatasetGrid or str) -- 流向栅格数据
  • accumulation_grid (DatasetGrid or str) -- 累积汇水量栅格数据
  • area_limit (int) -- 汇水量限制值
  • out_data (DatasourceConnectionInfo or Datasource or str) -- 用于存储结果数据集的数据源
  • out_dataset_name (str) -- 结果栅格数据集的名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果栅格数据集或数据集名称

返回类型:

DatasetGrid or str

iobjectspy.analyst.measure_central_element(source, group_field=None, weight_field=None, self_weight_field=None, distance_method='EUCLIDEAN', stats_fields=None, out_data=None, out_dataset_name=None, progress=None)

关于空间度量:

空间度量用来计算的数据可以是点、线、面。对于点、线和面对象,在距离计算中会使用对象的质心。对象的质心为所有子对象的加权 平均中心。点对象的加权项为1(即质心为自身),线对象的加权项是长度,而面对象的加权项是面积。

用户可以通过空间度量计算来解决以下问题:

  1. 数据的中心在哪里?
  2. 数据的分布呈什么形状和方向?
  3. 数据是如何分散布局?

空间度量包括中心要素( measure_central_element() )、方向分布( measure_directional() )、 标准距离( measure_standard_distance() )、方向平均值( measure_linear_directional_mean() )、 平均中心( measure_mean_center() )、中位数中心( measure_median_center() )等。

计算矢量数据的中心要素,返回结果矢量数据集。

  • 中心要素是与其他所有对象质心的累积距离最小,位于最中心的对象。
  • 如果设置了分组字段,则结果矢量数据集将包含 “分组字段名_Group” 字段。
  • 实际上,距其他所有对象质心的累积距离最小的中心要素可能会有多个,但中心要素方法只会输出SmID 字段值最小的对象。
参数:
  • source (DatasetVector or str) -- 待计算的数据集。可以为点、线、面数据集。
  • group_field (str) -- 分组字段的名称
  • weight_field (str) -- 权重字段的名称
  • self_weight_field (str) -- 自身权重字段的名称
  • distance_method (DistanceMethod or str) -- 距离计算方法类型
  • stats_fields (list[tuple[str,SpatialStatisticsType]] or list[tuple[str,str]] or str) -- 统计字段的类型,为一个字典类型,字典类型的 key 为字段名,value 为统计类型。
  • out_data (DatasourceConnectionInfo or Datasource or str) -- 用于存储结果数据集的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果矢量数据集或数据集名称

返回类型:

DatasetVector or str

iobjectspy.analyst.measure_directional(source, group_field=None, ellipse_size='SINGLE', stats_fields=None, out_data=None, out_dataset_name=None, progress=None)

计算矢量数据的方向分布,返回结果矢量数据集。

  • 方向分布是根据所有对象质心的平均中心(有权重,为加权)为圆点,计算x和y坐标的标准差为轴得到的标准差椭圆。
  • 标准差椭圆的圆心x和y坐标、两个标准距离(长半轴和短半轴)、椭圆的方向,分别储存在结果矢量数据集中的CircleCenterX、 CircleCenterY、SemiMajorAxis、SemiMinorAxis、RotationAngle字段中。如果设置了分组字段,则结果矢量数据集将包含 “分组字段名_Group” 字段。
  • 椭圆的方向RotationAngle字段中的正值表示正椭圆(长半轴的方向为X轴方向, 短半轴的方向为Y轴方向))按逆时针旋转,负值表示 正椭圆按顺时针旋转。
  • 输出的椭圆大小有三个级别:Single(一个标准差)、Twice(二个标准差)和Triple(三个标准差),详细介绍请参见 EllipseSize 类。
  • 用于计算方向分布的标准差椭圆算法是由D. Welty Lefever在1926年提出,用来度量数据的方向和分布。首先确定椭圆的圆心,即平均 中心(有权重,为加权);然后确定椭圆的方向;最后确定长轴和短轴的长度。
../_images/MeasureDirection.png

关于空间度量介绍,请参考 measure_central_element()

参数:
  • source (DatasetVector or str) -- 待计算的数据集。可以为点、线、面数据集。
  • group_field (str) -- 分组字段名称
  • ellipse_size (EllipseSize or str) -- 椭圆大小类型
  • stats_fields (list[tuple[str,SpatialStatisticsType]] or list[tuple[str,str]] or str) -- 统计字段的类型,为一个list类型,list 中存储2个元素的tuple,tuple的第一个元素为被统计的字段,第二个元素为统计类型
  • out_data (DatasourceConnectionInfo or Datasource or str) -- 用于存储结果数据集的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果矢量数据集

返回类型:

DatasetVector or str

iobjectspy.analyst.measure_linear_directional_mean(source, group_field=None, weight_field=None, is_orientation=False, stats_fields=None, out_data=None, out_dataset_name=None, progress=None)

计算线数据集的方向平均值,并返回结果矢量数据集。

  • 线性方向平均值是根据所有线对象的质心的平均中心点为其中心、长度等于所有输入线对象的平均长度、方位或方向为由所有输入线对象 的起点和终点(每个线对象都只会使用起点和终点来确定方向)计算得到的平均方位或平均方向创建的线对象。
  • 线对象的平均中心x和y坐标、平均长度、罗盘角、方向平均值、圆方差,分别储存在结果矢量数据集中的AverageX、AverageY、 AverageLength、CompassAngle、DirectionalMean、CircleVariance字段中。如果设置了分组字段,则结果矢量数据集将包含 “分组字段名_Group” 字段。
  • 线对象的罗盘角(CompassAngle)字段表示以正北方为基准方向按顺时针旋转;方向平均值(DirectionalMean)字段表示以正东方为 基准方向按逆时针旋转;圆方差(CircleVariance)表示方向或方位偏离方向平均值的程度,如果输入线对象具有非常相似(或完全相同) 的方向则该值会非常小,反之则相反。
../_images/MeasureLinearDirectionalMean.png

关于空间度量介绍,请参考 measure_central_element()

参数:
  • source (DatasetVector or str) -- 待计算的数据集。为线数据集。
  • group_field (str) -- 分组字段名称
  • weight_field (str) -- 权重字段名称
  • is_orientation (bool) -- 是否忽略起点和终点的方向。为 False 时,将在计算方向平均值时使用起始点和终止点的顺序;为 True 时,将忽略起始点和终止点的顺序。
  • stats_fields (list[tuple[str,SpatialStatisticsType]] or list[tuple[str,str]] or str) -- 统计字段的类型,为一个list类型,list 中存储2个元素的tuple,tuple的第一个元素为被统计的字段,第二个元素为统计类型
  • out_data (DatasourceConnectionInfo or Datasource or str) -- 用于存储结果数据集的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetVector or str

iobjectspy.analyst.measure_mean_center(source, group_field=None, weight_field=None, stats_fields=None, out_data=None, out_dataset_name=None, progress=None)

计算矢量数据的平均中心,返回结果矢量数据集。

  • 平均中心是根据输入的所有对象质心的平均x和y坐标构造的点。
  • 平均中心的x和y坐标分别储存在结果矢量数据集中的SmX和SmY字段中。如果设置了分组字段,则结果矢量数据集将包含 “分组字段名_Group” 字段。
../_images/MeasureMeanCenter.png

关于空间度量介绍,请参考 measure_central_element()

参数:
  • source (DatasetVector or str) -- 待计算的数据集。可以为点、线、面数据集。
  • group_field (str) -- 分组字段
  • weight_field (str) -- 权重字段
  • stats_fields (list[tuple[str,SpatialStatisticsType]] or list[tuple[str,str]] or str) -- 统计字段的类型,为一个list类型,list 中存储2个元素的tuple,tuple的第一个元素为被统计的字段,第二个元素为统计类型
  • out_data (DatasourceConnectionInfo or Datasource or str) -- 用于存储结果数据集的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetVector or str

iobjectspy.analyst.measure_median_center(source, group_field, weight_field, stats_fields=None, out_data=None, out_dataset_name=None, progress=None)

计算矢量数据的中位数中心,返回结果矢量数据集。

  • 中位数中心是根据输入的所有对象质心,使用迭代算法找出到所有对象质心的欧式距离最小的点。
  • 中位数中心的x和y坐标分别储存在结果矢量数据集中的SmX和SmY字段中。如果设置了分组字段,则结果矢量数据集将包含 “分组字段名_Group” 字段。
  • 实际上,距所有对象质心的距离最小的点可能有多个,但中位数中心方法只会返回一个点。
  • 用于计算中位数中心的算法是由Kuhn,Harold W.和Robert E. Kuenne在1962年提出的迭代加权最小二乘法(Weiszfeld算法),之后由 James E. Burt和Gerald M. Barber进一步概括。首先以平均中心(有权重,为加权)作为起算点,利用加权最小二乘法得到候选点,将 候选点重新作为起算点代入计算得到新的候选点,迭代计算直到候选点到所有对象质心的欧式距离最小为止。
../_images/MeasureMedianCenter.png

关于空间度量介绍,请参考 measure_central_element()

参数:
  • source (DatasetVector or str) -- 待计算的数据集。可以为点、线、面数据集。
  • group_field (str) -- 分组字段
  • weight_field (str) -- 权重字段
  • stats_fields (list[tuple[str,SpatialStatisticsType]] or list[tuple[str,str]] or str) -- 统计字段的类型,为一个list类型,list 中存储2个元素的tuple,tuple的第一个元素为被统计的字段,第二个元素为统计类型
  • out_data (DatasourceConnectionInfo or Datasource or str) -- 用于存储结果数据集的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetVector or str

iobjectspy.analyst.measure_standard_distance(source, group_field, weight_field, ellipse_size='SINGLE', stats_fields=None, out_data=None, out_dataset_name=None, progress=None)

计算矢量数据的标准距离,返回结果矢量数据集。

  • 标准距离是根据所有对象质心的平均中心(有权重,为加权)为圆心,计算x和y坐标的标准距离为半径得到的圆。
  • 圆的圆心x和y坐标、标准距离(圆的半径),分别储存在结果矢量数据集中的CircleCenterX、CircleCenterY、StandardDistance字 段中。如果设置了分组字段,则结果矢量数据集将包含 “分组字段名_Group” 字段。
  • 输出的圆大小有三个级别:Single(一个标准差)、Twice(二个标准差)和Triple(三个标准差),详细介绍请参见 EllipseSize 枚举类型。
../_images/MeasureStandardDistance.png

关于空间度量介绍,请参考 measure_central_element()

参数:
  • source (DatasetVector or str) -- 待计算的数据集。为线数据集
  • group_field (str) -- 分组字段
  • weight_field (str) -- 权重字段
  • ellipse_size (EllipseSize or str) -- 椭圆大小类型
  • stats_fields (list[tuple[str,SpatialStatisticsType]] or list[tuple[str,str]] or str) -- 统计字段的类型,为一个list类型,list 中存储2个元素的tuple,tuple的第一个元素为被统计的字段,第二个元素为统计类型
  • out_data (DatasourceConnectionInfo or Datasource or str) -- 用于存储结果数据集的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetVector or str

class iobjectspy.analyst.AnalyzingPatternsResult

基类:object

分析模式结果类。该类用于获取分析模式计算的结果,包括结果指数、期望、方差、Z得分和P值等。

expectation

float -- 分析模式结果中的期望值

index

float -- 分析模式结果中的莫兰指数或GeneralG指数

p_value

float -- 分析模式结果中的P值

variance

float -- 分析模式结果中的方差值

z_score

float -- 分析模式结果中的Z得分

iobjectspy.analyst.auto_correlation(source, assessment_field, concept_model='INVERSEDISTANCE', distance_method='EUCLIDEAN', distance_tolerance=-1.0, exponent=1.0, k_neighbors=1, is_standardization=False, weight_file_path=None, progress=None)

分析模式介绍:

分析模式可评估一组数据是形成离散空间模式、聚类空间模式或者随机空间模式。

  • 分析模式用来计算的数据可以是点、线、面。对于点、线和面对象,在距离计算中会使用对象的质心。对象的质心为所有子对象的加权平均中心。点对象的加权项为1(即质心为自身),线对象的加权项是长度,而面对象的加权项是面积。

  • 分析模式类采用推论式统计,会在进行统计检验时预先建立"零假设",假设要素或要素之间相关的值都表现为随机空间模式。

  • 分析结果计算中会给出一个P值用来表示"零假设"的正确概率,用以判定是接受"零假设"还是拒绝"零假设"。

  • 分析结果计算中会给出一个Z得分用来表示标准差的倍数,用以判定数据是呈聚类、离散或随机。

  • 要拒绝"零假设",就必须要承担可能做出错误选择(即错误的拒绝"零假设")的风险。

    下表显示了不同置信度下未经校正的临界P值和临界Z得分:

    ../_images/AnalyzingPatterns.png
  • 用户可以通过分析模式来解决以下问题:

    • 数据集中的要素或数据集中要素关联的值是否发生空间聚类?
    • 数据集的聚类程度是否会随时间变化?

分析模式包括空间自相关分析( auto_correlation() )、平均最近邻分析( average_nearest_neighbor() )、 高低值聚类分析( high_or_low_clustering() )、增量空间自相关分析( incremental_auto_correlation() )等。

对矢量数据集进行空间自相关分析,并返回空间自相关分析结果。空间自相关返回的结果包括莫兰指数、期望、方差、z得分、P值, 请参阅 AnalyzingPatternsResult 类。

../_images/AnalyzingPatterns_autoCorrelation.png
参数:
返回:

空间自相关结果

返回类型:

AnalyzingPatternsResult

iobjectspy.analyst.high_or_low_clustering(source, assessment_field, concept_model='INVERSEDISTANCE', distance_method='EUCLIDEAN', distance_tolerance=-1.0, exponent=1.0, k_neighbors=1, is_standardization=False, weight_file_path=None, progress=None)

对矢量数据集进行高低值聚类分析,并返回高低值聚类分析结果。 高低值聚类返回的结果包括GeneralG指数、期望、方差、z得分、P值, 请参阅 AnalyzingPatternsResult 类。

../_images/AnalyzingPatterns_highOrLowClustering.png

关于分析模式介绍,请参考 auto_correlation()

参数:
返回:

高低值聚类结果

返回类型:

AnalyzingPatternsResult

iobjectspy.analyst.average_nearest_neighbor(source, study_area, distance_method='EUCLIDEAN', progress=None)

对矢量数据集进行平均最近邻分析,并返回平均最近邻分析结果数组。

  • 平均最近邻返回的结果包括最近邻指数、预期平均距离、平均观测距离、z得分、P值,请参阅 AnalyzingPatternsResult 类。
  • 给定的研究区域面积大小必须大于等于0;如果研究区域面积等于0,则会自动生成输入数据集的最小面积外接矩形,用该矩形的面积来进行计算。 该默认值为: 0 。
  • 距离计算方法类型可以指定相邻要素之间的距离计算方式(参阅 DistanceMethod )。如果输入数据集为地理坐标系,则会采用弦测量方法来 计算距离。地球表面上的任意两点,两点之间的弦距离为穿过地球体连接两点的直线长度。
../_images/AnalyzingPatterns_AverageNearestNeighbor.png

关于分析模式介绍,请参考 auto_correlation()

参数:
  • source (DatasetVector or str) -- 待计算的数据集。可以为点、线、面数据集。
  • study_area (float) -- 研究区域面积
  • distance_method (DistanceMethod or str) -- 距离计算方法
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

平均最近邻分析结果

返回类型:

AnalyzingPatternsResult

iobjectspy.analyst.incremental_auto_correlation(source, assessment_field, begin_distance=0.0, distance_method='EUCLIDEAN', incremental_distance=0.0, incremental_number=10, is_standardization=False, progress=None)

对矢量数据集进行增量空间自相关分析,并返回增量空间自相关分析结果数组。增量空间自相关返回的结果包括增量距离、莫兰指数、期望、方差、z得分、P值, 请参阅 IncrementalResult 类。

增量空间自相关会为一系列的增量距离运行空间自相关方法(参考 auto_correlation() ),空间关系概念化模型默认为固定距离 模型(参阅 ConceptualizationModel.FIXEDDISTANCEBAND

关于分析模式介绍,请参考 auto_correlation()

参数:
  • source (DatasetVector or str) -- 待计算的数据集。可以为点、线、面数据集。
  • assessment_field (str) -- 评估字段的名称。仅数值字段有效。
  • begin_distance (float) -- 增量空间自相关开始分析的起始距离。
  • distance_method (DistanceMethod or str) -- 距离计算方法类型
  • incremental_distance (float) -- 距离增量,增量空间自相关每次分析的间隔距离。
  • incremental_number (int) -- 递增的距离段数目。为增量空间自相关指定分析数据集的次数,该值的范围为:2 ~ 30。
  • is_standardization (bool) -- 是否对空间权重矩阵进行标准化。若进行标准化,则每个权重都会除以该行的和。
  • progress (function) -- 进度信息,具体参考 StepEvent
返回:

增量空间自相关分析结果列表。

返回类型:

list[IncrementalResult]

class iobjectspy.analyst.IncrementalResult

基类:iobjectspy._jsuperpy.analyst.AnalyzingPatternsResult

增量空间自相关结果类。该类用于获取增量空间自相关计算的结果,包括结果增量距离、莫兰指数、期望、方差、Z得分和P值等。

distance

float -- 增量空间自相关结果中的增量距离

iobjectspy.analyst.cluster_outlier_analyst(source, assessment_field, concept_model='INVERSEDISTANCE', distance_method='EUCLIDEAN', distance_tolerance=-1.0, exponent=1.0, is_FDR_adjusted=False, k_neighbors=1, is_standardization=False, weight_file_path=None, out_data=None, out_dataset_name=None, progress=None)

聚类分布介绍:

聚类分布可识别一组数据具有统计显著性的热点、冷点或者空间异常值。

聚类分布用来计算的数据可以是点、线、面。对于点、线和面对象,在距离计算中会使用对象的质心。对象的质心为所有子对象的加权 平均中心。点对象的加权项为1(即质心为自身),线对象的加权项是长度,而面对象的加权项是面积。

用户可以通过聚类分布计算来解决以下问题:

  1. 聚类或冷点和热点出现在哪里?
  2. 空间异常值的出现位置在哪里?
  3. 哪些要素十分相似?

聚类分布包括聚类和异常值分析(cluster_outlier_analyst())、热点分析(hot_spot_analyst())、 优化热点分析(optimized_hot_spot_analyst())等

聚类和异常值分析,返回结果矢量数据集。

  • 结果数据集中包括局部莫兰指数(ALMI_MoranI)、z得分(ALMI_Zscore)、P值(ALMI_Pvalue)和聚类和异常值类型(ALMI_Type)。
  • z得分和P值都是统计显著性的度量,用于逐要素的判断是否拒绝"零假设"。置信区间字段会识别具有统计显著性的聚类和异常值。如果, 要素的Z得分是一个较高的正值,则表示周围的要素拥有相似值(高值或低值),聚类和异常值类型字段将具有统计显著性的高值聚类表示 为"HH",将具有统计显著性的低值聚类表示为"LL";如果,要素的Z得分是一个较低的负值值,则表示有一个具有统计显著性的空间数据异常 值,聚类和异常值类型字段将指出低值要素围绕高值要素表示为"HL",将高值要素围绕低值要素表示为"LH"。
  • 在没有设置 is_FDR_adjusted,统计显著性以P值和Z字段为基础,否则,确定置信度的关键P值会降低以兼顾多重测试和空间依赖性。
../_images/ClusteringDistributions_clusterOutlierAnalyst.png
参数:
返回:

结果数据集或数据集名称

返回类型:

DatasetVector or str

iobjectspy.analyst.hot_spot_analyst(source, assessment_field, concept_model='INVERSEDISTANCE', distance_method='EUCLIDEAN', distance_tolerance=-1.0, exponent=1.0, is_FDR_adjusted=False, k_neighbors=1, is_standardization=False, self_weight_field=None, weight_file_path=None, out_data=None, out_dataset_name=None, progress=None)

热点分析,返回结果矢量数据集。

  • 结果数据集中包括z得分(Gi_Zscore)、P值(Gi_Pvalue)和置信区间(Gi_ConfInvl)。
  • z得分和P值都是统计显著性的度量,用于逐要素的判断是否拒绝"零假设"。置信区间字段会识别具有统计显著性的热点和冷点。置信区间 为+3和-3的要素反映置信度为99%的统计显著性,置信区间为+2和-2的要素反映置信度为95%的统计显著性,置信区间为+1和-1的要素反映置 信度为90%的统计显著性,而置信区间为0的要素的聚类则没有统计意义。
  • 在没有设置 is_FDR_adjusted 方法的情况下,统计显著性以P值和Z字段为基础,否则,确定置信度的关键P值会降低以兼顾多重测试和空间依赖性。
../_images/ClusteringDistributions_hotSpotAnalyst.png

关于聚类分布介绍,参考 cluster_outlier_analyst()

参数:
返回:

结果数据集或数据集名称

返回类型:

DatasetVector or str

iobjectspy.analyst.optimized_hot_spot_analyst(source, assessment_field=None, aggregation_method='NETWORKPOLYGONS', aggregating_polygons=None, bounding_polygons=None, out_data=None, out_dataset_name=None, progress=None)

优化的热点分析,返回结果矢量数据集。

  • 结果数据集中包括z得分(Gi_Zscore)、P值(Gi_Pvalue)和置信区间(Gi_ConfInvl),详细介绍请参阅 hot_spot_analyst() 方法结果。
  • z得分和P值都是统计显著性的度量,用于逐要素的判断是否拒绝"零假设"。置信区间字段会识别具有统计显著性的热点和冷点。置信区间 为+3和-3的要素反映置信度为99%的统计显著性,置信区间为+2和-2的要素反映置信度为95%的统计显著性,置信区间为+1和-1的要素反映 置信度为90%的统计显著性,而置信区间为0的要素的聚类则没有统计意义。
  • 如果提供分析字段,则会直接执行热点分析; 如果未提供分析字段,则会利用提供的聚合方法(参阅 AggregationMethod)聚 合所有输入事件点以获得计数,从而作为分析字段执行热点分析。
  • 执行热点分析时,默认概念化模型为 ConceptualizationModel.FIXEDDISTANCEBAND 、错误发现率(FDR)为 True , 统计显著性将使用错误发现率(FDR)校正法自动兼顾多重测试和空间依赖性。
../_images/ClusteringDistributions_OptimizedHotSpotAnalyst.png

关于聚类分布介绍,参考 cluster_outlier_analyst()

参数:
  • source (DatasetVector or str) -- 待计算的数据集。如果设置了评估字段,可以为点、线、面数据集,否则,则必须为点数据集。
  • assessment_field (str) -- 评估字段的名称。
  • aggregation_method (AggregationMethod or str) --

    聚合方法。如果未设置提供分析字段,则需要为优化的热点分析提供的聚合方法。

  • aggregating_polygons (DatasetVector or str) -- 聚合事件点以获得事件计数的面数据集。如果未提供分析字段(assessment_field) 且 aggregation_method 设置为 AggregationMethod.AGGREGATIONPOLYGONS 时,提供聚合事件点以获得事件计数的面数据集。 如果设置了评估字段,此参数无效。
  • bounding_polygons (DatasetVector or str) -- 事件点发生区域的边界面数据集。必须为面数据集。如果未提供分析字段(assessment_field)且 aggregation_method 设置为 AggregationMethod.NETWORKPOLYGONS 时,提供事件点发生区域的边界面数据集。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 结果数据源信息
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetVector or str

iobjectspy.analyst.collect_events(source, out_data=None, out_dataset_name=None, progress=None)

收集事件,将事件数据转换成加权数据。

  • 结果点数据集中包含一个 Counts 字段,该字段会保存每个唯一位置所有质心的总和。
  • 收集事件只会处理质心坐标完全相同的对象,并且只会保留一个质心,去除其余的重复点。
  • 对于点、线和面对象,在距离计算中会使用对象的质心。对象的质心为所有子对象的加权平均中心。点对象的加权项为1(即质心为自身), 线对象的加权项是长度,而面对象的加权项是面积。
参数:
  • source (DatasetVector or str) -- 待收集的数据集。可以为点、线、面数据集。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 用于存储结果点数据集的数据源。
  • out_dataset_name (str) -- 结果点数据集名称。
  • progress (function) -- 进度信息,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

DatasetVector or str

iobjectspy.analyst.build_weight_matrix(source, unique_id_field, file_path, concept_model='INVERSEDISTANCE', distance_method='EUCLIDEAN', distance_tolerance=-1.0, exponent=1.0, k_neighbors=1, is_standardization=False, progress=None)

构建空间权重矩阵。

  • 空间权重矩阵文件旨在生成、存储、重用和共享一组要素之间关系的空间关系概念化模型。文件采用的是二进制文件格式创建,要素关系 存储为稀疏矩阵。
  • 该方法会生成一个空间权重矩阵文件,文件格式为 ‘*.swmb’。生成的空间权重矩阵文件可用来进行分析,只要将空间关系概念化模型设 置为 ConceptualizationModel.SPATIALWEIGHTMATRIXFILE 并且通过 weight_file_path 参数指定创建的空间权重矩阵 文件的完整路径。
参数:
返回:

如果构建空间权重矩阵,返回 True,否则返回 False

返回类型:

bool

iobjectspy.analyst.weight_matrix_file_to_table(file_path, out_data, out_dataset_name=None, progress=None)

空间权重矩阵文件转换成属性表。

结果属性表包含源唯一ID字段(UniqueID)、相邻要素唯一ID字段(NeighborsID)、权重字段(Weight)。

参数:
  • file_path (str) -- 空间权重矩阵文件路径。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 用于存储结果属性表的数据源
  • out_dataset_name (str) -- 结果属性表名称
  • progress (function) -- 进度信息,具体参考 StepEvent
返回:

结果属性表数据集或数据集名称。

返回类型:

DatasetVector or str

iobjectspy.analyst.GWR(source, explanatory_fields, model_field, kernel_function='GAUSSIAN', band_width_type='AICC', distance_tolerance=0.0, kernel_type='FIXED', neighbors=2, out_data=None, out_dataset_name=None, progress=None)

空间关系建模介绍:

  • 用户可以通过空间关系建模来解决以下问题:
    • 为什么某一现象会持续的发生,是什么因素导致了这种情况?
    • 导致某一事故发生率比预期的要高的因素有那些?有没有什么方法来减少整个城市或特定区域内的事故发生率?
    • 对某种现象建模以预测其他地点或者其他时间的数值?
  • 通过回归分析,你可以对空间关系进行建模、检查和研究,可以帮助你解释所观测到的空间模型后的诸多因素。比如线性关系是正或者 是负;对于正向关系,即存在正相关性,某一变量随着另一个变量增加而增加;反之,某一变量随着另一个变量增加而减小;或者两个变量无关系。

地理加权回归分析。

  • 地理加权回归分析结果信息包含一个结果数据集和地理加权回归结果汇总(请参阅 GWRSummary 类)。
  • 结果数据集包含交叉验证(CVScore)、预测值(Predicted)、回归系数(Intercept、C1_解释字段名)、残差(Residual)、标准误 (StdError)、系数标准误(SE_Intercept、SE1_解释字段名)、伪t值(TV_Intercept、TV1_解释字段名)和Studentised残差(StdResidual)等。

说明:

  • 地理加权回归分析是一种用于空间变化关系的线性回归的局部形式,可用来在空间变化依赖和独立变量之间的关系研究。对地理要素所 关联的数据变量之间的关系进行建模,从而可以对未知值进行预测或者更好地理解可对要建模的变量产生影响的关键因素。回归方法使 你可以对空间关系进行验证并衡量空间关系的稳固性。
  • 交叉验证(CVScore):交叉验证在回归系数估计时不包括回归点本身即只根据回归点周围的数据点进行回归计算。该值就是每个回归 点在交叉验证中得到的估计值与实际值之差,它们的平方和为CV值。作为一个模型性能指标。
  • 预测值(Predicted):这些值是地理加权回归得到的估计值(或拟合值)。
  • 回归系数(Intercept):它是地理加权回归模型的回归系数,为回归模型的回归截距,表示所有解释变量均为零时因变量的预测值。
  • 回归系数(C1_解释字段名):它是解释字段的回归系数,表示解释变量与因变量之间的关系强度和类型。如果回归系数为正,则解释 变量与因变量之间的关系为正向的;反之,则存在负向关系。如果关系很强,则回归系数也相对较大;关系较弱时,则回归系数接近于0。
  • 残差(Residual):这些是因变量无法解释的部分,是估计值和实际值之差,标准化残差的平均值为0,标准差为1。残差可用于确定模 型的拟合程度,残差较小表明模型拟合效果较好,可以解释大部分预测值,说明这个回归方程是有效的。
  • 标准误(StdError):估计值的标准误差,用于衡量每个估计值的可靠性。较小的标准误表明拟合值与实际值的差异程度越小,模型拟合效果越好。
  • 系数标准误(SE_Intercept、SE1_解释字段名):这些值用于衡量每个回归系数估计值的可靠性。系数的标准误差与实际系数相比较小 时,估计值的可信度会更高。较大的标准误差可能表示存在局部多重共线性问题。
  • 伪t值(TV_Intercept、TV1_解释字段名):是对各个回归系数的显著性检验。当T值大于临界值时,拒绝零假设,回归系数显著即回归系 估计值是可靠的;当T值小于临界值时,则接受零假设,回归系数不显著。
  • Studentised残差(StdResidual):残差和标准误的比值,该值可用来判断数据是否异常,若数据都在(-2,2)区间内,表明数据具 有正态性和方差齐性;若数据超出(-2,2)区间,表明该数据为异常数据,无方差齐性和正态性。
参数:
  • source (DatasetVector or str) -- 待计算的数据集。可以为点、线、面数据集。
  • explanatory_fields (list[str] or str) -- 解释字段的名称的集合
  • model_field (str) -- 建模字段的名称
  • kernel_function (KernelFunction or str) -- 核函数类型
  • band_width_type (BandWidthType or str) -- 带宽确定方式
  • distance_tolerance (float) -- 带宽范围
  • kernel_type (KernelType or str) -- 带宽类型
  • neighbors (int) -- 相邻数目。只有当带宽类型设置为 KernelType.ADAPTIVE 且宽确定方式设置为 BandWidthType.BANDWIDTH 时有效。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 用于存储结果数据集的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息,具体参考 StepEvent
返回:

返回一个两个元素的 tuple,tuple 的第一个元素为 GWRSummary ,第二个元素为地理加权回归结果数据集。

返回类型:

tuple[GWRSummary, DatasetVector]

class iobjectspy.analyst.GWRSummary

基类:object

地理加权回归结果汇总类。该类给出了地理加权回归分析的结果汇总,例如带宽、相邻数、残差平方和、AICc和判定系数等。

AIC

float -- 地理加权回归结果汇总中的AIC。与AICc类似,是衡量模型拟合优良性的一种标准,可以权衡所估计模型的复杂度和模型拟 合数据的优良性,在评价模型时是兼顾了简洁性和精确性。表明增加自由参数的数目提高了拟合的优良性,AIC鼓励数据的 拟合性,但是应尽量避免出现过度拟合的情况。所以优先考虑AIC值较小的,是寻找可以最好的解释数据但包含最少自由参 数的模型。

AICc

float -- 地理加权回归结果汇总中的AICc。当数据增加时,AICc收敛为AIC,也是模型性能的一种度量,有助与比较不同的回归模型。 考虑到模型复杂性,具有较低AICc值的模型将更好的拟合观测数据。AICc不是拟合度的绝对度量,但对于比较用于同一因变 量且具有不同解释变量的模型非常有用。如果两个模型的AICc值相差大于3,具有较低AICc值的模型将视为更佳的模型。

Edf

float -- 地理加权回归结果汇总中的有效自由度。数据的数目与有效的参数数量(EffectiveNumber)的差值,不一定是整数,可用 来计算多个诊断测量值。自由度较大的模型拟合度会较差,能够较好的反应数据的真实情况,统计量会变得比较可靠;反之, 拟合效果会较好,但是不能较好的反应数据的真实情况,模型数据的独立性被削弱,关联度增加。

R2

float -- 地理加权回归结果汇总中的判定系数(R2)。判定系数是拟合度的一种度量,其值在0.0和1.0范围内变化,值越大模型越好。 此值可解释为回归模型所涵盖的因变量方差的比例。R2计算的分母为因变量值的平方和,添加一个解释变量不会更改分母但是 会更改分子,这将出现改善模型拟合的情况,但是也可能假象。

R2_adjusted

float -- 地理加权回归结果汇总中的校正的判定系数。校正的判定系数的计算将按分子和分母的自由度对它们进行正规化。这具有对 模型中变量数进行补偿的效果,由于校正的R2值通常小于R2值。但是,执行校正时,无法将该值的解释作为所解释方差的比例。 自由度的有效值是带宽的函数,因此,AICc是对模型进行比较的首选方式。

band_width

float -- 地理加权回归结果汇总中的带宽范围。

  • 用于各个局部估计的带宽范围,它控制模型中的平滑程度。通常,你可以选择默认的带宽范围,方法是:设置带宽确定 方式(kernel_type)方法选择 BandWidthType.AICCBandWidthType.CV,这两个选项都将尝试识别最佳带宽范围。
  • 由于"最佳"条件对于 AIC 和 CV 并不相同,都会得到相对的最优 AICc 值和 CV 值,因而通常会获得不同的最佳值。
  • 可以通过设置带宽类型(kernel_type)方法提供精确的带宽范围。
effective_number

float -- 地理加权回归结果汇总中的有效的参数数量。反映了估计值的方差与系数估计值的偏差之间的折衷,该值与带宽的选择有关, 可用来计算多个诊断测量值。对于较大的带宽,系数的有效数量将接近实际参数数量,局部系数估计值将具有较小的方差, 但是偏差将会非常大;对于较小的带宽,系数的有效数量将接近观测值的数量,局部系数估计值将具有较大的方差,但是偏 差将会变小。

neighbours

int -- 地理加权回归结果汇总中的相邻数目。

  • 用于各个局部估计的相邻数目,它控制模型中的平滑程度。通常,你可以选择默认的相邻点值,方法是:设置带宽确定方式(kernel_type) 方法选择 BandWidthType.AICCBandWidthType.CV,这两个选项都将尝试识别最佳自适应相邻点数目。
  • 由于"最佳"条件对于 AIC 和 CV 并不相同,都会得到相对的最优 AICc 值和 CV 值,因而通常会获得不同的最佳值。
  • 可以通过设置带宽类型(kernel_type)方法提供精确的自适应相邻点数目。
residual_squares

float -- 地理加权回归结果汇总中的残差平方和。残差平方和为实际值与估计值(或拟合值)的平方之和。此测量值越小,模型越 拟合观测数据,即拟合程度越好。

sigma

float -- 地理加权回归结果汇总中的残差估计标准差。残差的估计标准差,为剩余平方和除以残差的有效自由度的平方根。此统计值 越小,模型拟合效果越好。

class iobjectspy.analyst.OLSSummary(java_object)

基类:object

普通最小二乘法结果汇总类。该类给出了普通最小二乘法分析的结果汇总,例如分布统计量、统计量概率、AICc和判定系数等。

AIC

float -- 普通最小二乘法结果汇总中的AIC。与AICc类似,是衡量模型拟合优良性的一种标准,可以权衡所估计模型的复杂度和模型拟合数 据的优良性,在评价模型时是兼顾了简洁性和精确性。表明增加自由参数的数目提高了拟合的优良性,AIC鼓励数据的拟合性,但是应尽量避 免出现过度拟合的情况。所以优先考虑AIC值较小的,是寻找可以最好的解释数据但包含最少自由参数的模型

AICc

float -- 普通最小二乘法结果汇总中的AICc。当数据增加时,AICc收敛为AIC,也是模型性能的一种度量,有助与比较不同的回归模型。 考虑到模型复杂性,具有较低AICc值的模型将更好的拟合观测数据。AICc不是拟合度的绝对度量,但对于比较用于同一因变量且具有不同解 释变量的模型非常有用。如果两个模型的AICc值相差大于3,具有较低AICc值的模型将视为更佳的模型。

F_dof

int -- 普通最小二乘法结果汇总中的联合F统计量自由度。

F_probability

float -- 普通最小二乘法结果汇总中的联合F统计量的概率。

JB_dof

int -- 普通最小二乘法结果汇总中的Jarque-Bera统计量自由度。

JB_probability

float -- 普通最小二乘法结果汇总中的Jarque-Bera统计量的概率

JB_statistic

float -- 普通最小二乘法结果汇总中的Jarque-Bera统计量。Jarque-Bera统计量能评估模型的偏差,用于指示残差是否呈正态分布。检 验的零假设为残差呈正态分布。对于大小为95%的置信度,联合F统计量概率小于0.05表示模型具有统计显著性,回归不会呈正态分布,模型有 偏差。

KBP_dof

int -- 普通最小二乘法结果汇总中的Koenker(Breusch-Pagan)统计量自由度。

KBP_probability

float -- 普通最小二乘法结果汇总中的Koenker(Breusch-Pagan)统计量的概率

KBP_statistic

float -- 普通最小二乘法结果汇总中的Koenker(Breusch-Pagan)统计量。Koenker(Breusch-Pagan)统计量能评估模型的稳态,用 于确定模型的解释变量是否在地理空间和数据空间中都与因变量具有一致的关系。检验的零假设为检验的模型是稳态的。对于大小为95%的 置信度,联合F统计量概率小于0.05表示模型具有统计显著异方差性或非稳态。当检验结果具有显著性时,则需要参考稳健系数标准差和 概率来评估每个解释变量的效果。

R2

float -- 普通最小二乘法结果汇总中的判定系数(R2)。

R2_adjusted

float -- 普通最小二乘法结果汇总中的校正的判定系数

VIF

list[float] -- 普通最小二乘法结果汇总中的方差膨胀因子

coefficient

list[float] -- 普通最小二乘法结果汇总中的系数。 系数表示解释变量和因变量之间的关系和类型。

coefficient_std

list[float] -- 普通最小二乘法结果汇总中的系数标准差

f_statistic

float -- 普通最小二乘法结果汇总中的联合F统计量。联合F统计量用于检验整个模型的统计显著性。只有在Koenker(Breusch-Pagan) 统计量不具有统计显著性时,联合F统计量才可信。检验的零假设为模型中的解释变量不起作用。对于大小为95%的置信度,联合F统计量概率小 于0.05表示模型具有统计显著性。

probability

list[float] -- 普通最小二乘法结果汇总中的t分布统计量概率

robust_Pr

list[float] -- 普通最小二乘法结果汇总中的稳健系数概率。

robust_SE

list[float] -- 获取普通最小二乘法结果汇总中的稳健系数标准差。

robust_t

list[float] -- 普通最小二乘法结果汇总中的稳健系数t分布统计量。

sigma2

float -- 普通最小二乘法结果汇总中的残差方差。

std_error

list[float] -- 普通最小二乘法结果汇总中的标准误差。

t_statistic

list[float] -- 普通最小二乘法结果汇总中的t分布统计量。

variable

list[float] -- 普通最小二乘法结果汇总中的变量数组

wald_dof

int -- 普通最小二乘法结果汇总中的联合卡方统计量自由度

wald_probability

float -- 普通最小二乘法结果汇总中的联合卡方统计量的概率

wald_statistic

float -- 普通最小二乘法结果汇总中的联合卡方统计量。联合卡方统计量用于检验整个模型的统计显著性。只有在 Koenker(Breusch-Pagan)统计量具有统计显著性时,联合F统计量才可信。检验的零假设为模型中的解释变量不起作用。对于大小为 95%的置信度,联合F统计量概率小于0.05表示模型具有统计显著性。

iobjectspy.analyst.ordinary_least_squares(input_data, explanatory_fields, model_field, out_data=None, out_dataset_name=None, progress=None)

普通最小二乘法。 普通最小二乘法分析结果信息包含一个结果数据集和普通最小二乘法结果汇总。 结果数据集包含预测值(Estimated)、残差(Residual)、标准化残差(StdResid)等。

说明:

  • 预测值(Estimated):这些值是普通最小二乘法得到的估计值(或拟合值)。
  • 残差(Residual):这些是因变量无法解释的部分,是估计值和实际值之差,标准化残差的平均值为0,标准差为1。残差可用于确定模型的拟合程度,残差较小表明模型拟合效果较好,可以解释大部分预测值,说明这个回归方程是有效的。
  • 标准化残差(StdResid):残差和标准误的比值,该值可用来判断数据是否异常,若数据都在(-2,2)区间内,表明数据具有正态性和方差齐性;若数据超出(-2,2)区间,表明该数据为异常数据,无方差齐性和正态性。
参数:
  • input_data (DatasetVector or str) -- 指定的待计算的数据集。可以为点、线、面数据集。
  • explanatory_fields (list[str] or str) -- 解释字段的名称的集合
  • model_field (str) -- 建模字段的名称
  • out_data (Datasource or str) -- 指定的用于存储结果数据集的数据源。
  • out_dataset_name (str) -- 指定的结果数据集名称
  • progress (function) -- 进度信息,具体参考 StepEvent
返回:

返回一个元组,元组的第一个元素为最小二乘法结果数据集或数据集名称,第二个元素为最小二乘法结果汇总

返回类型:

tuple[DatasetVector, OLSSummary] or tuple[str, OLSSummary]

iobjectspy.analyst.calculate_profile(input_data, line)

剖面分析,根据给定线路查看 DEM 栅格沿该线路的剖面,返回剖面线和采样点坐标。 给定一条直线或者折线,查看 DEM 栅格沿此线的纵截面,称为剖面分析。剖面分析的结果包含两部分:剖面线和采样点集合。

  • 采样点

剖面分析需要沿给定线路选取一些点,通过这些点所在位置的高程和坐标信息,来展现剖面效果,这些点称为采样点。采样点的选取依照以下规则, 可结合下图来了解。

  • 给定路线途经的每个单元格内只选取一个采样点;
  • 给定路线的节点都被作为采样点;
  • 如果路线经过且节点不在该单元格内,则将线路与该单元格两条中心线中交角较大的一条的交点作为采样点。
../_images/CalculateProfile_1.png
  • 剖面线和采样点坐标集合

剖面线是剖面分析的结果之一,是一条二维线( GeoLine ),它的节点与采样点一一对应,节点的 X 值表示当前采样点到给定线 路的起点(也是第一个采样点)的直线距离,Y 值为当前采样点所在位置的高程。而采样点集合给出了所有采样点的位置,使用一个二维集合线对 象来存储这些点。剖面线与采样点集合的点是一一对应的,结合剖面线和采样点集合可以知道在某位置的高程以及距离分析的起点的距离。

下图展示了以剖面线的 X 值为横轴,Y 值为纵轴绘制二维坐标系下的剖面线示意图,通过剖面线可以直观的了解沿着给定的线路,地形的高程和地势。

../_images/CalculateProfile_2.png

注意:指定的线路必须在 DEM 栅格的数据集范围内,否则可能分析失败。如果采样点位于无值栅格上,则剖面线上对应的点的高程为0。

参数:
  • input_data (DatasetGrid or str) -- 指定的待进行剖面分析的 DEM 栅格。
  • line (GeoLine) -- 指定的线路,为一条线段或折线。剖面分析给出沿该线路的剖面。
返回:

剖面分析结果,剖面线和采样点集合。

返回类型:

tuple[GeoLine, GeoLine]

class iobjectspy.analyst.CutFillResult(cut_area, cut_volume, fill_area, fill_volume, remainder_area, cut_fill_grid_result)

基类:object

填挖方结果信息类。该对象用于获取对栅格数据集进行填方和挖方计算的结果,例如需要填方、挖方的面积、填方和挖方的体积数等。

关于填挖方结果面积和体积单位的说明:

填挖的面积单位为平方米,体积的单位为平方米乘以高程(即进行填挖的栅格值)的单位。但需注意,如果进行填挖方计算的栅格是地理坐标系,面积的值是一个近似转换到平方米单位的值。

内部构造函数,用户不需要使用

参数:
  • cut_area (float) -- 填挖方分析结果挖掘面积。单位为平方米。当进行填挖方的栅格为地理坐标系时,该值为近似转换
  • cut_volume (float) -- 填挖方分析结果挖掘体积。单位为平方米乘以填挖栅格的栅格值(即高程值)的单位
  • fill_area (float) -- 填挖方分析结果填充面积。单位为平方米。当进行填挖方的栅格为地理坐标系时,该值为近似转换。
  • fill_volume (float) -- 填挖方分析结果填充体积。单位为平方米乘以填挖栅格的栅格值(即高程值)的单位。
  • remainder_area (float) -- 填挖方分析中未进行填挖方的面积。单位为平方米。当进行填挖方的栅格为地理坐标系时,该值为近似转换。
  • cut_fill_grid_result (DatasetGrid or str) -- 填挖方分析的结果数据集。 单元格值大于0表示要挖的深度,小于0表要填的深度。
iobjectspy.analyst.inverse_cut_fill(input_data, volume, is_fill, region=None, progress=None)

反算填挖方,即根据给定的填方或挖方的体积计算填挖后的高程 反算填挖方用于解决这样一类实际问题:已知填挖前的栅格数据和该数据范围内要填或挖的体积,来推求填方或挖方后的高程值。例如,某建筑施 工地的一片区域需要填方,现得知某地可提供体积为 V 的土方,此时使用反算填挖方就可以计算出将这批土填到施工区域后,施工区域的高程是 多少。然后可判断是否达到施工需求,是否需要继续填方。

参数:
  • input_data (DatasetGrid or str) -- 指定的待填挖的栅格数据。
  • volume (float) -- 指定的填或挖的体积。该值为一个大于0的值,如果设置为小于或等于0会抛出异常。单位为平方米乘以待填挖栅格的栅格值单位。
  • is_fill (bool) -- 指定是否进行填方计算。如果为 true 表示进行填方计算,false 表示进行挖方计算。
  • region (GeoRegion or Rectangle) -- 指定的填挖方区域。如果为 None 则填挖计算应用于整个栅格区域。
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

填挖后的高程值。单位与待填挖栅格的栅格值单位一致。

返回类型:

float

iobjectspy.analyst.cut_fill_grid(before_cut_fill_grid, after_cut_full_grid, out_data=None, out_dataset_name=None, progress=None)

栅格填挖方计算,即对填挖方前、后两个栅格数据集对应像元的计算。 地表经常由于沉积和侵蚀等作用引起表面物质的迁移,表现为地表某些区域的表面物质增加,某些区域的表面物质减少。在工程中,通常将表面物质的减少称为“挖方”,而将表面物质的增加称为“填方”。

栅格填挖方计算要求输入两个栅格数据集:填挖方前的栅格数据集和填挖方后的栅格数据集,生成的结果数据集的每个像元值为其两个输入数据集对应像元值的变化值。如果像元值为正,表示该像元处的表面物质减少;如果像元值为负,表示该像元处的表面物质增加。填挖方的计算方法如下图所示:

../_images/CalculationTerrain_CutFill.png

通过该图可以发现,结果数据集=填挖方前栅格数据集-填挖方后栅格数据集。

对于输入的两个栅格数据集及结果数据集有几点内容需要注意:

  • 要求两个输入的栅格数据集有相同的坐标和投影系统,以保证同一个地点有相同的坐标,如果两个输入的栅格数据集的坐标系统不一致,则很有可能产生错误的结果。
  • 理论上,要求输入的两个栅格数据集的空间范围也是一致的。对于空间范围不一致的两个栅格数据集,只计算其重叠区域的表面填挖方的结果。
  • 在其中一个栅格数据集的像元为空值处,计算结果数据集该像元值也为空值。
参数:
  • before_cut_fill_grid (DatasetGrid or str) -- 指定的填挖方前的栅格数据集
  • after_cut_full_grid (DatasetGrid or str) -- 指定的填挖方后的栅格数据集。
  • out_data (Datasource or str) -- 指定的存放结果数据集的数据源。
  • out_dataset_name (str) -- 指定的结果数据集的名称。
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

填挖方结果信息

返回类型:

CutFillResult

iobjectspy.analyst.cut_fill_oblique(input_data, line3d, buffer_radius, is_round_head, out_data=None, out_dataset_name=None, progress=None)

斜面填挖方计算。 斜面填挖方功能是统计在一个地形表面创建一个斜面所需要的填挖量。其原理与选面填挖方相似。

参数:
  • input_data (DatasetGrid or str) -- 指定的待填挖方的栅格数据集。
  • line3d (GeoLine3D) -- 指定的填挖方路线
  • buffer_radius (float) -- 指定的填挖方线路的缓冲区半径。单位与待填挖的栅格数据集的坐标系单位相同。
  • is_round_head (bool) -- 指定是否使用圆头缓冲为填挖方路线创建缓冲区。
  • out_data (Datasource or str) -- 指定的存放结果数据集的数据源
  • out_dataset_name (str) -- 指定的结果数据集的名称。
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

填挖方结果信息

返回类型:

CutFillResult

iobjectspy.analyst.cut_fill_region(input_data, region, base_altitude, out_data=None, out_dataset_name=None, progress=None)

选面填挖方计算。 当需要将一个高低起伏的区域夷为平地时,用户可以通过指定高低起伏的区域以及夷为平地的高程,利用该方法进行选面填挖方计算,计算出填方 面积,挖方面积、 填方量以及挖方量。

参数:
  • input_data (DatasetGrid or str) -- 指定的待填挖的栅格数据集。
  • region (GeoRegion or Rectangle) -- 指定的填挖方区域。
  • base_altitude (float) -- 指定的填挖方区域的结果高程。单位与待填挖的栅格数据集的栅格值单位相同。
  • out_data (Datasource or str) -- 指定的存放结果数据集的数据源。
  • out_dataset_name (str) -- 指定的结果数据集的名称。
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

填挖方结果信息

返回类型:

CutFillResult

iobjectspy.analyst.cut_fill_region3d(input_data, region, out_data=None, out_dataset_name=None, progress=None)

三维面填挖方计算。 一个高低起伏的区域,可以根据这个区域填挖方后的三维面,利用三维面填挖方计算出需要填方的面积,挖方的面积、填方量以及挖方量。

参数:
  • input_data (DatasetGrid or str) -- 指定的待填挖的栅格数据集。
  • region (GeoRegion3D) -- 指定的填挖方区域。
  • out_data (Datasource or str) -- 指定的存放结果数据集的数据源。
  • out_dataset_name (str) -- 指定的结果数据集的名称。
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

填挖方结果信息

返回类型:

CutFillResult

iobjectspy.analyst.flood(input_data, height, region=None, progress=None)

根据指定的高程计算 DEM 栅格的淹没区域。 淹没区域的计算基于 DEM 栅格数据,根据给定的一个淹没后的水位高程(由参数 height 指定),与 DEM 栅格的值(即高程值)进行比较,凡是高程值低于或等于给定水位的单元格均被划入淹没区域,然后将淹没区域转为矢量面输出,源 DEM 数据并不会被改变。通过淹没区域面对象,很容易统计出被淹没的范围、面积等。 下图是计算水位达到 200 时的淹没区域的一个实例,由原始 DEM 数据和淹没区域的矢量面数据集(紫色区域)叠加而成

../_images/Flood.png

注意:该方法返回的面对象是将所有淹没区域进行合并后的结果。

参数:
  • input_data (DatasetGrid or str) -- 指定的需要计算淹没区域的 DEM 数据。
  • height (float) -- 指定的淹没后水位的高程值,DEM 数据中小于或等于该值的单元格会划入淹没区域。单位与待分析的 DEM 栅格的栅格值单位相同。
  • region (GeoRegion or Rectangle) -- 指定的有效计算区域。指定该区域后,只在该区域内计算淹没区域。
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

将所有淹没区域合并后的面对象

返回类型:

GeoRegion

iobjectspy.analyst.thin_raster_bit(input_data, back_or_no_value, is_save_as_grid=True, out_data=None, out_dataset_name=None, progress=None)

通过减少要素宽度的像元来对栅格化的线状要素进行细化,该方法是处理二值图像的细化方法,如果不是二值图像会先处理为二值图像,只需指定背景色的值,背景色以外的值都是需要细化的值。该方法的效率最快。

参数:
  • input_data (DatasetImage or DatasetGrid or str) -- 指定的待细化的栅格数据集。支持影像数据集。
  • back_or_no_value (int or tuple) -- 指定栅格的背景色或表示无值的值。可以使用一个 int 或 tuple 来表示一个 RGB 或 RGBA 值。
  • is_save_as_grid (bool) -- 是否保存为栅格数据集,Ture 表示保存为栅格数据集,False保存为原数据类型(栅格或影像)。保存为栅格数据集便于栅格矢量化时指定值矢量化,方便快速获取线数据。
  • out_data (Datasource or DatasourceConnectionInfo or str) -- 用于存储结果数据的数据源。
  • out_dataset_name (str) -- 结果数据集的名称
  • progress (function) -- 进度信息处理函数,具体参考 StepEvent
返回:

结果数据集或数据集名称

返回类型:

Dataset or str

iobjectspy.analyst.NDVI(input_data, nir_index, red_index, out_data=None, out_dataset_name=None)

归一化植被指数,也叫做归一化差分植被指数或者标准差异植被指数或生物量指标变化。可使植被从水和土中分离出来。

参数:
  • input_data (DatasetImage or str) -- 多波段影像数据集。
  • nir_index (int) -- 近红外波段的索引
  • red_index (int) -- 红波段的索引
  • out_data (Datasource or str) -- 结果数据源
  • out_dataset_name (str) -- 结果数据集名称
返回:

结果数据集,用于保存NDVI值。NDVI值的范围在-1到1之间。

返回类型:

DatasetGrid or str

iobjectspy.analyst.NDWI(input_data, nir_index, green_index, out_data=None, out_dataset_name=None)

归一化水指数。NDWI一般用来提取影像中的水体信息,效果较好.

参数:
  • input_data (DatasetImage or str) -- 多波段影像数据集。
  • nir_index (int) -- 近红外波段的索引
  • green_index (int) -- 绿波段的索引
  • out_data (Datasource or str) -- 结果数据源
  • out_dataset_name (str) -- 结果数据集名称
返回:

结果数据集,用于保存NDWI值。

返回类型:

DatasetGrid or str

iobjectspy.analyst.compute_features_envelope(input_data, is_single_part=True, out_data=None, out_dataset_name=None, progress=None)

计算几何对象的矩形范围面

参数:
  • input_data (DatasetVector or str) -- 待分析的数据集,仅支持线数据集和面数据集。
  • is_single_part (bool) -- 有组合线或者组合面时,是否拆分子对象。默认为 True,拆分子对象。
  • out_data (Datasource or str) -- 结果数据集所在的数据源
  • out_dataset_name (str) -- 结果数据集名称
  • progress (function) -- 进度信息,具体参考 StepEvent
返回:

结果数据集,返回每个对象的范围面。结果数据集中新增了字段"ORIG_FID"用于保存输入对象的ID值。

返回类型:

DatasetVector or str

iobjectspy.analyst.calculate_view_shed(input_data, view_point, start_angle, view_angle, view_radius, out_data=None, out_dataset_name=None, progress=None)

单点可视域分析,即分析单个观察点的可视范围。 单点可视域分析是在栅格表面数据集上,对于给定的一个观察点,查找其在给定的范围内(由观察半径、观察角度决定)所能观察到的区域,也就是给定点的通视区域范围。分析的结果为一个栅格数据集,其中可视区域保持原始栅格表面的栅格值,其他区域为无值。

如下图所示,图中绿色的点为观察点,叠加在原始栅格表面上的蓝色区域即为对其进行可视域分析的结果。

../_images/CalculateViewShed.png

注意:如果指定的观察点的高程小于当前栅格表面对应位置的高程值,则观察点的高程值将被自动设置为当前栅格表面的对应位置的高程。

参数:
  • input_data (DatasetGrid or str) -- 指定的用于可视域分析的栅格表面数据集。
  • view_point (Point3D) -- 指定的观察点位置。
  • start_angle (float) -- 指定的起始观察角度,单位为度,以正北方向为 0 度,顺时针方向旋转。指定为负值或大于 360 度,将自动换算到 0 到 360 度范围内。
  • view_angle (float) -- 指定的观察角度,单位为度,最大值为 360 度。观察角度基于起始角度,即观察角度范围为 [起始角度,起始角度+观察角度]。例如起始角度为 90 度,观察角度为 90 度,那么实际观察的角度范围是从 90 度到 180 度。但注意,当指定为 0 或负值时,无论起始角度为何值,观察角度范围都为 0 到 360 度
  • view_radius (float) -- 指定的观察半径。该值限制了视野范围的大小,若观测半径小于等于 0 时,表示无限制。单位为米
  • out_data (Datasource or str) -- 指定的用于存储结果数据集的数据源
  • out_dataset_name (str) -- 指定的结果数据集的名称
  • progress (function) -- 进度信息,具体参考 StepEvent
返回:

单点可视域分析结果数据集

返回类型:

DatasetGrid or str

iobjectspy.analyst.calculate_view_sheds(input_data, view_points, start_angles, view_angles, view_radiuses, view_shed_type, out_data=None, out_dataset_name=None, progress=None)

多点可视域分析,即分析多个观察点的可视范围,可以为共同可视域或非共同可视域。 多点可视域分析,是根据栅格表面,对给定的观察点集合中每一个观察点进行可视域分析,然后根据指定的可视域类型,计算所有观察点的可视域的交集(称为“共同可视域”)或者并集(称为“非共同可视域”),并将结果输出到一个栅格数据集中,其中可视区域保持原始栅格表面的栅格值,其他区域为无值。

如下图所示,图中绿色的点为观察点,叠加在原始栅格表面上的蓝色区域即为对其进行可视域分析的结果。左图展示了三个观察点的共同可视域,右图则是三个观察点的非共同可视域。

../_images/CalculateViewShed_1.png

注意:如果指定的观察点的高程小于当前栅格表面对应位置的高程值,则观察点的高程值将被自动设置为当前栅格表面的对应位置的高程。

参数:
  • input_data (DatasetGrid or str) -- 指定的用于可视域分析的栅格表面数据集。
  • view_points (list[Point3D]) -- 指定的观察点集合。
  • start_angles (list[float]) -- 指定的起始观察角度集合,与观察点一一对应。单位为度,以正北方向为 0 度,顺时针方向旋转。指定为负值或大于 360 度,将自动换算到 0 到 360 度范围内。
  • view_angles -- 指定的观察角度集合,与观察点和起始观察角度一一对应,单位为度,最大值为 360 度。观察角度基于起始角度,即观察角度范围为 [起始角度,起始角度+观察角度]。例如起始角度为 90 度,观察角度为 90 度,那么实际观察的角度范围是从 90 度到 180 度。 :type view_angles: list[float]
  • view_radiuses (list[float]) -- 指定的观察半径集合,与观察点一一对应。该值限制了视野范围的大小,若观测半径小于等于 0 时,表示无限制。单位为米。
  • view_shed_type (ViewShedType or str) -- 指定的可视域的类型,可以是多个观察点的可视域的交集,也可以是多个观察点可视域的并集。
  • out_data (Datasource or str) -- 指定的用于存储结果数据集的数据源
  • out_dataset_name (str) -- 指定的结果数据集的名称
  • progress (function) -- 进度信息,具体参考 StepEvent
返回:

多点可视域分析结果数据集。

返回类型:

DatasetGrid

class iobjectspy.analyst.VisibleResult(java_object)

基类:object

可视性分析结果类。

该类给出了观察点与被观察点之间可视分析的结果,如果不可视的话,还会给出障碍点的相关信息。

barrier_alter_height

float -- 障碍点建议修改的最大高度值。若将障碍点所在栅格表面的单元格的栅格值(即高程)修改为小于或等于该值,则该点不再阻碍 视线,但注意,并不表示该点之后不存在其他障碍点。可通过 DatasetGrid 类的 set_value() 方法修改栅格值

barrier_point

Point3D -- 障碍点的坐标值。如果观察点与被观察点之间不可视,则该方法的返回值为观察点与被观察点之间的第一个障碍点。如果观察 点与被观察点之间可视时,障碍点坐标取默认值。

from_point_index

int -- 观察点的索引值。如果是两点之间进行可视性分析,则观察点的索引值为 0。

to_point_index

int -- 被观察点的索引值。如果是两点之间进行可视性分析,则被观察点的索引值为 0。

visible

bool -- 观察点与被观察点对之间是否可视

iobjectspy.analyst.is_point_visible(input_data, from_point, to_point)

两点可视性分析,即判断两点之间是否相互可见。 基于栅格表面,判断给定的观察点与被观察点之间是否可见,称为两点间可视性分析。两点间可视性分析的结果有两种:可视与不可视。该方法返 回一个 VisibleResult 对象,该对象用于返回两点间可视性分析的结果,即两点是否可视,如果不可视,会返回第一个阻碍视线的障碍点,还会 给出该障碍点的建议高程值以使该点不再阻碍视线。

参数:
  • input_data (DatasetGrid or str) -- 指定的用于可视性分析的栅格表面数据集。
  • from_point (Point3D) -- 指定的用于可视性分析的起始点,即观察点
  • to_point (Point3D) -- 指定的用于可视性分析的终止点,即被观察点。
返回:

可视性分析的结果

返回类型:

VisibleResult

iobjectspy.analyst.are_points_visible(input_data, from_points, to_points)

多点可视性分析,即判断多点之间是否可两两通视。 多点可视性分析,是根据栅格表面,计算观察点与被观察点之间是否两两通视。两点间可视性分析请参阅另一重载方法 isVisible 方法的介绍。

如果有 m 个观测点和 n 个被观测点,将有 m * n 种观测组合。分析的结果通过一个 VisibleResult 对象数组返回,每个 VisibleResult 对象包括对应的两点是否可视,如果不可视,会给出第一个障碍点,以及该点的建议高程值以使该点不再阻碍视线。

注意:如果指定的观察点的高程小于当前栅格表面对应位置的高程值,则观察点的高程值将被自动设置为当前栅格表面的对应位置的高程。

参数:
  • input_data (DatasetGrid or str) -- 指定的用于可视性分析的栅格表面数据集。
  • from_points (list[Point3D]) -- 指定的用于可视性分析的起始点,即观察点
  • to_points (list[Point3D]) -- 指定的用于可视性分析的终止点,即被观察点。
返回:

可视性分析的结果

返回类型:

list[VisibleResult]

iobjectspy.analyst.line_of_sight(input_data, from_point, to_point)

计算两点间的通视线,即根据地形计算观察点到目标点的视线上的可视部分和不可视部分。 依据地形的起伏,计算从观察点看向目标点的视线上哪些段可视或不可视,称为计算两点间的通视线。观察点与目标点间的这条线称为通视线。 通视线可以帮助了解在给定点能够看到哪些位置,可服务于旅游线路规划、雷达站或信号发射站的选址,以及布设阵地、观察哨所设置等军事活动。

../_images/LineOfSight.png

观察点和目标点的高程由其 Z 值确定。当观察点或目标点的 Z 值小于栅格表面上对应单元格的高程值时,则使用该单元格的栅格值作为观察点或 目标点的高程来计算通视线。

计算两点间通视线的结果为一个二维线对象数组,该数组的第 0 个元素为可视线对象,第 1 个元素为不可视线对象。该数组的长度可能为 1 或
2,这是因为不可视线对象有可能不存在,此时结果数组只包含一个对象,即可视线对象。由于可视线(或不可视线)可能不连续,因此可视线或 不可视线对象有可能是复杂线对象。
参数:
  • input_data (DatasetGrid or str) -- 指定的栅格表面数据集。
  • from_point (Point3D) -- 指定的观察点,是一个三维点对象。
  • to_point (Point3D) -- 指定的目标点,是一个三维点对象。
返回:

结果通视线,是一个二维线数组

返回类型:

list[GeoLine]

iobjectspy.analyst.radar_shield_angle(input_data, view_point, start_angle, end_angle, view_radius, interval, out_data=None, out_dataset_name=None, progress=None)

根据地形图和雷达中心点,返回各方位上最大的雷达遮蔽角的点数据集。方位角是顺时针与正北方向的夹角。

参数:
  • input_data (DatasetGrid or str or list[DatasetGrid] or list[str]) -- 删格数据集或DEM
  • view_point (Point3D) -- 三维点对象,表示雷达中心点的坐标和雷达中心与地面的高度。
  • start_angle (float) -- 雷达方位起始角度,单位为度,以正北方向为 0 度,顺时针方向旋转。范围为0到360度。如果设置为小于0,默认值 为0;如果该值大于360,默认为360。
  • end_angle (float) -- 雷达方位终止角度,单位为度,最大值为 360 度。观察角度基于起始角度,即观察角度范围为 [起始角度,终止角度)。 该值必须大于起始角度。如果该值小于等于0,表示[0,360)。
  • view_radius (float) -- 观察范围,单位为米。如果设置为小于0,表示整个地形图范围。
  • interval (float) -- 方位角的间隔,即每隔多少度返回一个雷达遮蔽点。该值必须大于0且小于360。
  • out_data (Datasource or str) -- 目标数据源。
  • out_dataset_name (str) -- 结果数据集名称
  • progress (funtion) -- 进度信息,具体参考 StepEvent
返回:

返回的三维点数据集,Z代表该点所在位置的地形高度。该数据集记录了每个方位上雷达遮蔽角最大的点,并增加了字段"ShieldAngle"、 "ShieldPosition"和"RadarDistance"分别记录了雷达遮蔽角、该点与正北方向的夹角和点与雷达中心的距离。

返回类型:

DatasetVector or str

class iobjectspy.analyst.InteractionDetectorResult(java_object)

基类:object

交互作用探测器分析结果,用于获取对数据进行交互作用探测器得到的分析结果,包括不同解释变量之间交互作用的描述以及分析结果矩阵。 用户不能创建此对象。

descriptions

list[str] -- 交互作用探测器结果描述。评估不同解释变量共同作用时是否会增加或减弱对因变量的解释力,或这些因子对因变量的影响 是否相互独立,两个解释变量对因变量交互作用的类型包括:非线性减弱、单因子非线性减弱、双因子增强、独立及非线性增强。

interaction_values

pandas.DataFrame -- 交互作用探测器分析结果值。

class iobjectspy.analyst.RiskDetectorMean(java_object)

基类:object

风险探测器结果均值类,用于获取对数据进行风险区域探测器得到的不同解释变量字段的结果均值。

means

list[float] -- 风险探测器分析结果均值

unique_values

list[str] -- 风险探测器解释变量字段唯一值

variable

str -- 风险探测器解释变量名称

class iobjectspy.analyst.RiskDetectorResult(java_object)

基类:object

风险区探测器分析结果类,用于获取对数据进行风险区探测器得到的分析结果,包括结果均值、结果矩阵

means

list[iobjectspy.RiskDetectorMean] -- 风险区探测器结果均值

values

list[pandas.DataFrame] -- 风险探测器分析结果值

class iobjectspy.analyst.GeographicalDetectorResult(java_object)

基类:object

地理探测器结果类,用于获取地理探测器计算的结果,包括因子探测器、生态探测器、交互作用探测器、风险探测器分析结果。

ecological_detector_result

pandas.DataFrame -- 生态探测器分析结果。生态探测器用于比较两因子X1和X2对属性Y的空间分布的影响是否有显著的差异,以 F 统计量来衡量。

../_images/GeographicalDetectorFformula.png
factor_detector_result

pandas.DataFrame -- 因子探测器分析结果。探测Y的空间分异性,以及探测某因子 X 多大程度上解释了属性Y的空间分异。用 q 值度量.

../_images/GeographicalDetectorQformula.png

q 的值域为[0,1],值越大,说明 y 的空间分异越明显,如果分层是由自变量 X 生成的,则 q 值越大,表示 X 和 Y 的空间分布越一致, 自变量 X 对属性 Y 的解释力越强,反之则越弱。极端情况下,q 值为1表明在 X 的层内,Y的方差为0,即因子 X 完全控制了 Y 的空间分布, q 值为0 则表明 Y 按照 X 分层后的方差和与 Y 不分层的方差相等,Y 没有按照 X 进行分异,即因子 X 与 Y 没有任何关系。q 值 表示 X 解释了 100q% 的 Y。

interaction_detector_result

InteractionDetectorResult -- 交互作用探测器分析结果。识别不同风险因子 Xs 之间的交互作用,即评估因子 X1 和 X2 共同作用时 是否会增加或减弱对因变量Y的解释力,或这些因子对 Y 的影响是相互独立的?评估的方法是首先分别 计算两种因子 X1 和 X2 对 Y 的 q 值: q(Y|X1) 和 q(Y|X2)。然后叠加变量 X1 和 X2 两个图层相切所形成的新的层,计算 X1∩X2 对 Y 的 q 值: q(Y|X1∩X2)。最后,对 q(Y|X1)、q(Y|X2) 与 q(Y|X1∩X2) 的数值进行比较,判断交互作用。

  • q(X1∩X2) < Min(q(X1),q(X2)) 非线性减弱
  • Min(q(X1),q(X2)) < q(X1∩X2) < Max(q(X1),q(X2)) 单因子非线性减弱
  • q(X1∩X2) > Max(q(X1),q(X2)) 双因子增强
  • q(X1∩X2) = q(X1) + q(X2) 独立
  • q(X1∩X2) > q(X1) + q(X2) 非线性增强
risk_detector_result

RiskDetectorResult -- 风险区探测器分析结果。用于判断两个子区域间的属性均值是否有显著的差别,用 t 统计量来检验。

../_images/GeographicalDetectorTformula.png
variables

list[str] -- 地理探测器解释变量

iobjectspy.analyst.geographical_detector(input_data, model_field, explanatory_fields, is_factor_detector=True, is_ecological_detector=True, is_interaction_detector=True, is_risk_detector=True, progress=None)

对数据进行地理探测器分析,并返回地理探测器的结果。 地理探测器返回的结果包括因子探测器,生态探测器,交互探测器,风险探测器的分析结果

地理探测器是探测空间分异性,以及揭示其背后驱动力的一组统计学方法。其核心思想是基于这样的假设:如果某个自变量对某个因变量有重要影 响,那么自变量和因变量的空间分布应该具有相似性。地理分异既可以用分类算法来表达,例如环境遥感分类,也可以根据经验确定,例如胡焕庸线。 地理探测器擅长分析类型量,而对于顺序量、比值量或间隔量,只要进行适当的离散化,也可以利用地理探测器对其进行统计分析。 因此,地理探测器既可以探测数值型数据,也可以探测定性数据,这正是地理探测器的一大优势。地理探测器的另一个独特优势是探测两因子交互 作用于因变量。交互作用一般的识别方法是在回归模型中增加两因子的乘积项,检验其统计显著性。然而,两因子交互作用不一定就是相乘关系。 地理探测器通过分别计算和比较各单因子 q 值及两因子叠加后的 q 值,可以判断两因子是否存在交互作用,以及交互作用的强弱、方向、线性还是 非线性等。两因子叠加既包括相乘关系,也包括其他关系,只要有关系,就能检验出来。

参数:
  • input_data (DatasetVector or str) -- 待计算的矢量数据集
  • model_field (str) -- 建模字段
  • explanatory_fields (list[str] or str) -- 解释变量数组
  • is_factor_detector (bool) -- 是否计算因子探测器
  • is_ecological_detector (bool) -- 是否计算生态探测器
  • is_interaction_detector (bool) -- 是否计算交互探测器
  • is_risk_detector (bool) -- 是否进行风险探测器
  • progress (function) -- 进度信息,具体参考 StepEvent
返回:

地理探测器结果

返回类型:

GeographicalDetectorResult

iobjectspy.conversion module

conversion 模块提供基本的数据导入和导出功能,通过使用 conversion 模块可以快速的将第三方的文件导入到 SuperMap 的数据源中,也可以将 SuperMap 数据源 中的数据导出为 第三方文件。

在 conversion 模块中,所有导入数据的接口中,output 参数输入结果数据集的数据源信息,可以为 Datasource 对象,也可以为 DatasourceConnectionInfo 对象, 同时,也支持当前工作空间下数据源的别名,也支持 UDB 文件路径,DCF 文件路径等。

>>> ds = Datasource.create(':memory:')
>>> alias = ds.alias
>>> shape_file = 'E:/Point.shp'
>>> result1 = import_shape(shape_file, ds)
>>> result2 = import_shape(shape_file, alias)
>>> result3 = import_shape(shape_file, 'E:/Point_Out.udb')
>>> result4 = import_shape(shape_file, 'E:/Point_Out_conn.dcf')

而导入数据的结果返回一个 Dataset 或 str 的列表对象。当导入数据只生成一个数据集时,列表的个数为1,当导入数据生成多个数据集时,列表的个数可能大于1。 列表中返回 Dataset 还是 str 是由输入的 output 参数决定的,当输入的 output 参数可以直接在当前工作空间中获取到数据源对象时,将会返回 Dataset 的列表, 如果输入的 output 参数无法直接在当前工作空间中获取到数据源对象时,程序将自动尝试打开数据源或新建数据源(只支持新建 UDB 数据源),此时,返回的结果将是 结果数据集的数据集名称,而完成数据导入后,结果数据源也会被关闭。所以如果用户需要继续基于导入后的结果数据集进行操作,则需要根据结果数据集名称和数据源信息再次开发数据源以获取数据集。

所有导出数据集的接口,data 参数是被导出的数据集信息,data 参数接受输入一个数据集对象(Dataset)或数据源别名与数据集名称的组合(例如,'alias/dataset_name', 'alias\dataset_name'), ,也支持数据源连接信息与数据集名称的组合(例如, 'E:/data.udb/dataset_name'),值得注意的是,当输入的是数据源信息时,程序会自动打开数据源,但是不会自动关闭数据源,也就是打开后的数据源 会存在当前工作空间中

>>> export_to_shape('E:/data.udb/Point', 'E:/Point.shp', is_over_write=True)
>>> ds = Datasource.open('E:/data.udb')
>>> export_to_shape(ds['Point'], 'E:/Point.shp', is_over_write=True)
>>> export_to_shape(ds.alias + '|Point', 'E:/Point.shp', is_over_write=True)
>>> ds.close()
iobjectspy.conversion.import_shape(source_file, output, out_dataset_name=None, import_mode=None, is_ignore_attrs=False, is_import_empty=False, source_file_charset=None, is_import_as_3d=False, progress=None)

导入 shape 文件到数据源中。

参数:
  • source_file (str) -- 被导入的 shape 文件
  • output (Datasource or DatasourceConnectionInfo or str) -- 结果数据源
  • out_dataset_name (str) -- 结果数据集名称
  • import_mode (ImportMode or str) -- 导入模式类型,可以为 ImportMode 枚举值或名称
  • is_ignore_attrs (bool) -- 是否忽略属性信息,默认值为 False
  • is_import_empty (bool) -- 否导入空的数据集,默认是不导入的。默认为 False
  • source_file_charset (Charset or str) -- shape 文件的原始字符集类型
  • is_import_as_3d (bool) -- 是否导入为 3D 数据集
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

导入后的结果数据集或结果数据集名称

返回类型:

list[DatasetVector] or list[str]

>>> result = import_shape( 'E:/point.shp', 'E:/import_shp_out.udb')
>>> print(len(result) == 1)
>>> print(result[0])
iobjectspy.conversion.import_dbf(source_file, output, out_dataset_name=None, import_mode=None, is_import_empty=False, source_file_charset=None, progress=None)

导入 dbf 文件到数据源中。

参数:
  • source_file (str) -- 被导入的 dbf 文件
  • output (Datasource or DatasourceConnectionInfo or str) -- 结果数据源
  • out_dataset_name (str) -- 结果数据集名称
  • import_mode (ImportMode or str) -- 导入模式类型,可以为 ImportMode 枚举值或名称
  • is_import_empty (bool) -- 否导入空的数据集,默认是不导入的。默认为 False
  • source_file_charset (Charset or str) -- dbf 文件的原始字符集类型
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

导入后的结果数据集或结果数据集名称

返回类型:

list[DatasetVector] or list[str]

>>> result = import_dbf( 'E:/point.dbf', 'E:/import_dbf_out.udb')
>>> print(len(result) == 1)
>>> print(result[0])
iobjectspy.conversion.import_csv(source_file, output, out_dataset_name=None, import_mode=None, separator=', ', head_is_field=True, fields_as_point=None, field_as_geometry=None, is_import_empty=False, source_file_charset=None, progress=None)

导入 CSV 文件

参数:
  • source_file (str) -- 被导入的 csv 文件
  • output (Datasource or DatasourceConnectionInfo or str) -- 结果数据源
  • out_dataset_name (str) -- 结果数据集名称
  • import_mode (ImportMode or str) -- 导入模式类型,可以为 ImportMode 枚举值或名称
  • separator (str) -- 源 CSV 文件中字段的分隔符。默认以 ',' 作为分隔符
  • head_is_field (bool) -- CSV 文件的首行是否为字段名称
  • fields_as_point (list[str] or list[int]) -- 指定字段为X、Y或者X、Y、Z坐标,如果符合条件,则生成点或者三维点数据集
  • field_as_geometry (int) -- 指定WKT串的Geometry索引位置
  • is_import_empty (bool) -- 是否导入空的数据集,默认为 False,即不导入
  • source_file_charset (Charset or str) -- CSV 文件的原始字符集类型
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

导入后的结果数据集或结果数据集名称

返回类型:

list[DatasetVector] or list[str]

iobjectspy.conversion.import_mapgis(source_file, output, out_dataset_name=None, import_mode=None, is_import_as_cad=True, color_index_file_path=None, import_network_topology=False, source_file_charset=None, progress=None)

导入 MapGIS 文件,Linux 平台不支持导入 MapGIS 文件。

参数:
  • source_file (str) -- 被导入的 MAPGIS 文件
  • output (Datasource or DatasourceConnectionInfo or str) -- 结果数据源
  • out_dataset_name (str) -- 结果数据集名称
  • import_mode (ImportMode or str) -- 数据集导入模式
  • is_import_as_cad (bool) -- 是否以 CAD 数据集方式导入
  • color_index_file_path (str) -- MAPGIS 导入数据时的颜色索引表文件路径,默认文件路径为系统路径下的 MapGISColor.wat
  • import_network_topology (bool) -- 导入时是否导入网络数据集
  • source_file_charset (Charset or str) -- MAPGIS 文件的原始字符集
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

导入后的结果数据集或结果数据集名称

返回类型:

list[DatasetVector] or list[str]

iobjectspy.conversion.import_aibingrid(source_file, output, out_dataset_name=None, ignore_mode='IGNORENONE', ignore_values=None, is_import_as_grid=False, is_build_pyramid=True, progress=None)

导入 AIBinGrid 文件, Linux 平台不支持导入 AIBinGrid 文件。

参数:
  • source_file (str) -- 被导入的 AIBinGrid 文件
  • output (Datasource or DatasourceConnectionInfo or str) -- 结果数据源
  • out_dataset_name (str) -- 结果数据集名称
  • ignore_mode (IgnoreMode or str) -- JPG 文件的忽略颜色值的模式
  • ignore_values (list[float] 要忽略的颜色值) -- 要忽略的颜色值
  • is_import_as_grid (bool) -- 是否导入为 Grid 数据集
  • is_build_pyramid (bool) -- 是否自动建立影像金字塔
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

导入后的结果数据集或结果数据集名称

返回类型:

list[DatasetGrid] or list[DatasetImage] or list[str]

iobjectspy.conversion.import_bmp(source_file, output, out_dataset_name=None, ignore_mode='IGNORENONE', ignore_values=None, world_file_path=None, is_import_as_grid=False, is_build_pyramid=True, progress=None)

导入 BMP 文件

参数:
  • source_file (str) -- 被导入的 BMP 文件
  • output (Datasource or DatasourceConnectionInfo or str) -- 结果数据源
  • out_dataset_name (str) -- 结果数据集名称
  • ignore_mode (IgnoreMode or str) -- BMP 文件的忽略颜色值的模式
  • ignore_values (list[float] 要忽略的颜色值) -- 要忽略的颜色值
  • world_file_path (str) -- 导入的源影像文件的坐标参考文件路径
  • is_import_as_grid (bool) -- 是否导入为 Grid 数据集
  • is_build_pyramid (bool) -- 是否自动建立影像金字塔
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

导入后的结果数据集或结果数据集名称

返回类型:

list[DatasetGrid] or list[DatasetImage] or list[str]

iobjectspy.conversion.import_dgn(source_file, output, out_dataset_name=None, import_mode=None, is_import_empty=False, is_import_as_cad=True, style_map_file=None, is_import_by_layer=False, is_cell_as_point=False, progress=None)

导入 DGN 文件

参数:
  • source_file (str) -- 被导入的 dgn 文件
  • output (Datasource or DatasourceConnectionInfo or str) -- 结果数据源
  • out_dataset_name (str) -- 结果数据集名称
  • import_mode (ImportMode or str) -- 导入模式
  • is_import_empty (bool) -- 是否导入空数据集,默认为 False
  • is_import_as_cad (bool) -- 是否导入为 CAD 数据集,默认为 True
  • style_map_file (str) -- 设置风格对照表的存储路径。 风格对照表是指 SuperMap 系统与其它系统风格(包括:符号、线型、填充等)的对照文件。风格对照表只对 CAD 类型的数据,如 DXF、DWG、DGN 起作用。在设置风格对照表之前,必须保证数据是以CAD方式导入,且不忽略风格。
  • is_import_by_layer (bool) -- 是否在导入后的数据中合并源数据中的 CAD 图层信息,CAD 是以图层信息来存储的,默认为 False,即所有 的图层信息都合并到了一个 CAD 数据集, 否则对应源数据中的每一个图层生成一个 CAD 数据集。
  • is_cell_as_point (bool) -- 是否将 cell(单元)对象导入为点对象(cell header)还是除 cell header 外的所有要素对象。 默认导入为除 cell header 外的所有要素对象。
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

导入后的结果数据集或结果数据集名称

返回类型:

list[DatasetVector] or list[str]

iobjectspy.conversion.import_dwg(source_file, output, out_dataset_name=None, import_mode=None, is_import_empty=False, is_import_as_cad=True, is_import_by_layer=False, ignore_block_attrs=True, block_as_point=False, import_external_data=False, import_xrecord=True, import_invisible_layer=False, keep_parametric_part=False, ignore_lwpline_width=False, shx_paths=None, curve_segment=73, style_map_file=None, progress=None)

导入 DWG 文件,Linux 平台不支持导入 DWG 文件。

参数:
  • source_file (str) -- 被导入的 dwg 文件
  • output (Datasource or DatasourceConnectionInfo or str) -- 结果数据源
  • out_dataset_name (str) -- 结果数据集名称
  • import_mode (ImportMode or str) -- 数据集导入模式
  • is_import_empty (bool) -- 是否导入空的数据集,默认为 False,即不导入
  • is_import_as_cad (bool) -- 是否以 CAD 数据集方式导入
  • is_import_by_layer (bool) -- 是否在导入后的数据中合并源数据中的 CAD 图层信息,CAD 是以图层信息来存储的,默认为 False,即所有的图层信息都合并到了一个 CAD 数据集, 否则对应源数据中的每一个图层生成一个 CAD 数据集。
  • ignore_block_attrs (bool) -- 是否数据导入时是否忽略块儿属性。默认为 True
  • block_as_point (bool) -- 将符号块导入为点对象还是复合对象,默认为 False, 即将原有的符号块作为复合对象导入,否则在符号块的位置用点对象代替。
  • import_external_data (bool) -- 否导入外部数据,外部数据为 CAD 中类似属性表的数据导入后格式为一些额外的字段,默认为 False,否则将外部数据追加在默认字段后面。
  • import_xrecord (bool) -- 是否将用户自定义的字段以及属性字段作为扩展记录导入。
  • import_invisible_layer (bool) -- 是否导入不可见图层
  • keep_parametric_part (bool) -- 是否保留Acad数据中的参数化部分
  • ignore_lwpline_width (bool) -- 是否忽略多义线宽度,默认为 False。
  • shx_paths (list[str]) -- shx 字体库的路径
  • curve_segment (int) -- 曲线拟合精度,默认为 73
  • style_map_file (str) -- 风格对照表的存储路径
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

导入后的结果数据集或结果数据集名称

返回类型:

list[DatasetVector] or list[str]

iobjectspy.conversion.import_dxf(source_file, output, out_dataset_name=None, import_mode=None, is_import_empty=False, is_import_as_cad=True, is_import_by_layer=False, ignore_block_attrs=True, block_as_point=False, import_external_data=False, import_xrecord=True, import_invisible_layer=False, keep_parametric_part=False, ignore_lwpline_width=False, shx_paths=None, curve_segment=73, style_map_file=None, progress=None)

导入 DXF 文件,Linux 平台不支持导入 DXF 文件

参数:
  • source_file (str) -- 被导入的 dxf 文件
  • output (Datasource or DatasourceConnectionInfo or str) -- 结果数据源
  • out_dataset_name (str) -- 结果数据集名称
  • import_mode (ImportMode or str) -- 数据集导入模式
  • is_import_empty (bool) -- 是否导入空的数据集,默认为 False,即不导入
  • is_import_as_cad (bool) -- 是否以 CAD 数据集方式导入
  • is_import_by_layer (bool) -- 是否在导入后的数据中合并源数据中的 CAD 图层信息,CAD 是以图层信息来存储的,默认为 False,即所有的图层信息都合并到了一个 CAD 数据集, 否则对应源数据中的每一个图层生成一个 CAD 数据集。
  • ignore_block_attrs (bool) -- 是否数据导入时是否忽略块儿属性。默认为 True
  • block_as_point (bool) -- 将符号块导入为点对象还是复合对象,默认为 False, 即将原有的符号块作为复合对象导入,否则在符号块的位置用点对象代替。
  • import_external_data (bool) -- 否导入外部数据,外部数据为 CAD 中类似属性表的数据导入后格式为一些额外的字段,默认为 False,否则将外部数据追加在默认字段后面。
  • import_xrecord (bool) -- 是否将用户自定义的字段以及属性字段作为扩展记录导入。
  • import_invisible_layer (bool) -- 是否导入不可见图层
  • keep_parametric_part (bool) -- 是否保留Acad数据中的参数化部分
  • ignore_lwpline_width (bool) -- 是否忽略多义线宽度,默认为 False。
  • shx_paths (list[str]) -- shx 字体库的路径
  • curve_segment (int) -- 曲线拟合精度,默认为 73
  • style_map_file (str) -- 风格对照表的存储路径
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

导入后的结果数据集或结果数据集名称

返回类型:

list[DatasetVector] or list[str]

iobjectspy.conversion.import_e00(source_file, output, out_dataset_name=None, import_mode=None, is_ignore_attrs=True, source_file_charset=None, progress=None)

导入 E00 文件

参数:
  • source_file (str) -- 被导入的 E00 文件
  • output (Datasource or DatasourceConnectionInfo or str) -- 结果数据源
  • out_dataset_name (str) -- 结果数据集名称
  • import_mode (ImportMode or str) -- 数据集导入模式
  • is_ignore_attrs (bool) -- 是否忽略属性信息
  • source_file_charset (Charset or str) -- E00 文件的原始字符集
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

导入后的结果数据集或结果数据集名称

返回类型:

list[DatasetVector] or list[str]

iobjectspy.conversion.import_ecw(source_file, output, out_dataset_name=None, ignore_mode='IGNORENONE', ignore_values=None, multi_band_mode=None, is_import_as_grid=False, progress=None)

导入 ECW 文件

参数:
  • source_file (str) -- 被导入的 ECW 文件
  • output (Datasource or DatasourceConnectionInfo or str) -- 结果数据源
  • out_dataset_name (str) -- 结果数据集名称
  • ignore_mode (IgnoreMode or str) -- ECW 文件的忽略颜色值的模式
  • ignore_values (list[float] 要忽略的颜色值) -- 要忽略的颜色值
  • multi_band_mode (MultiBandImportMode or str) -- 多波段导入模式,可以导入为多个单波段数据集、单个多波段数据集或单个单波段数据集。
  • is_import_as_grid (bool) -- 是否导入为 Grid 数据集
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

导入后的结果数据集或结果数据集名称

返回类型:

list[DatasetGrid] or list[DatasetImage] or list[str]

iobjectspy.conversion.import_geojson(source_file, output, out_dataset_name=None, import_mode=None, is_import_empty=False, is_import_as_cad=False, source_file_charset=None, progress=None)

导入 GeoJson 文件

参数:
  • source_file (str) -- 被导入的 GeoJson 文件
  • output (Datasource or DatasourceConnectionInfo or str) -- 结果数据源
  • out_dataset_name (str) -- 结果数据集名称
  • import_mode (ImportMode or str) -- 导入模式
  • is_import_empty (bool) -- 是否导入空的数据集,默认为 False
  • is_import_as_cad (bool) -- 是否导入为 CAD 数据集
  • source_file_charset (Charset or str) -- GeoJson 文件的原始字符集类型
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

导入后的结果数据集或结果数据集名称

返回类型:

list[DatasetVector] or list[str]

iobjectspy.conversion.import_gif(source_file, output, out_dataset_name=None, ignore_mode='IGNORENONE', ignore_values=None, world_file_path=None, is_import_as_grid=False, is_build_pyramid=True, progress=None)

导入 GIF 文件

参数:
  • source_file (str) -- 被导入的 GIF 文件
  • output (Datasource or DatasourceConnectionInfo or str) -- 结果数据源
  • out_dataset_name (str) -- 结果数据集名称
  • ignore_mode (IgnoreMode or str) -- GIF 文件的忽略颜色值的模式
  • ignore_values (list[float] 要忽略的颜色值) -- 要忽略的颜色值
  • world_file_path (str) -- 导入的源影像文件的坐标参考文件路径
  • is_import_as_grid (bool) -- 是否导入为 Grid 数据集
  • is_build_pyramid (bool) -- 是否自动建立影像金字塔
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

导入后的结果数据集或结果数据集名称

返回类型:

list[DatasetGrid] or list[DatasetImage] or list[str]

iobjectspy.conversion.import_grd(source_file, output, out_dataset_name=None, ignore_mode='IGNORENONE', ignore_values=None, is_build_pyramid=True, progress=None)

导入 GRD 文件

参数:
  • source_file (str) -- 被导入的 GRD 文件
  • output (Datasource or DatasourceConnectionInfo or str) -- 结果数据源
  • out_dataset_name (str) -- 结果数据集名称
  • ignore_mode (IgnoreMode or str) -- JPG 文件的忽略颜色值的模式
  • ignore_values (list[float] 要忽略的颜色值) -- 要忽略的颜色值
  • is_build_pyramid (bool) -- 是否自动建立影像金字塔
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

导入后的结果数据集或结果数据集名称

返回类型:

list[DatasetGrid] or list[str]

iobjectspy.conversion.import_img(source_file, output, out_dataset_name=None, ignore_mode='IGNORENONE', ignore_values=None, multi_band_mode=None, is_import_as_grid=False, is_build_pyramid=True, progress=None)

导入 Erdas Image 文件

参数:
  • source_file (str) -- 被导入的 IMG 文件
  • output (Datasource or DatasourceConnectionInfo or str) -- 结果数据源
  • out_dataset_name (str) -- 结果数据集名称
  • ignore_mode (IgnoreMode or str) -- Erdas Image 的忽略颜色值的模式
  • ignore_values (list[float] 要忽略的颜色值) -- 要忽略的颜色值
  • multi_band_mode (MultiBandImportMode or str) -- 多波段导入模式,可以导入为多个单波段数据集、单个多波段数据集或单个单波段数据集。
  • is_import_as_grid (bool) -- 是否导入为 Grid 数据集
  • is_build_pyramid (bool) -- 是否自动建立影像金字塔
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

导入后的结果数据集或结果数据集名称

返回类型:

list[DatasetGrid] or list[DatasetImage] or list[str]

iobjectspy.conversion.import_jp2(source_file, output, out_dataset_name=None, ignore_mode='IGNORENONE', ignore_values=None, is_import_as_grid=False, progress=None)

导入 JP2 文件

参数:
  • source_file (str) -- 被导入的 JP2 文件
  • output (Datasource or DatasourceConnectionInfo or str) -- 结果数据源
  • out_dataset_name (str) -- 结果数据集名称
  • ignore_mode (IgnoreMode or str) -- JPG 文件的忽略颜色值的模式
  • ignore_values (list[float] 要忽略的颜色值) -- 要忽略的颜色值
  • is_import_as_grid (bool) -- 是否导入为 Grid 数据集
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

导入后的结果数据集或结果数据集名称

返回类型:

list[DatasetGrid] or list[DatasetImage] or list[str]

iobjectspy.conversion.import_jpg(source_file, output, out_dataset_name=None, ignore_mode='IGNORENONE', ignore_values=None, world_file_path=None, is_import_as_grid=False, is_build_pyramid=True, progress=None)

导入 JPG 文件

参数:
  • source_file (str) -- 被导入的 JPG 文件
  • output (Datasource or DatasourceConnectionInfo or str) -- 结果数据源
  • out_dataset_name (str) -- 结果数据集名称
  • ignore_mode (IgnoreMode or str) -- JPG 文件的忽略颜色值的模式
  • ignore_values (list[float] 要忽略的颜色值) -- 要忽略的颜色值
  • world_file_path (str) -- 导入的源影像文件的坐标参考文件路径
  • is_import_as_grid (bool) -- 是否导入为 Grid 数据集
  • is_build_pyramid (bool) -- 是否自动建立影像金字塔
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

导入后的结果数据集或结果数据集名称

返回类型:

list[DatasetGrid] or list[DatasetImage] or list[str]

iobjectspy.conversion.import_kml(source_file, output, out_dataset_name=None, import_mode=None, is_import_empty=False, is_import_as_cad=False, is_ignore_invisible_object=True, source_file_charset=None, progress=None)

导入 KML 文件

参数:
  • source_file (str) -- 被导入的 KML 文件
  • output (Datasource or DatasourceConnectionInfo or str) -- 结果数据源
  • out_dataset_name (str) -- 结果数据集名称
  • is_import_empty (bool) -- 是否导入空的数据集
  • is_import_as_cad (bool) -- 是否以 CAD 数据集方式导入
  • is_ignore_invisible_object (bool) -- 是否忽略不可见对象
  • source_file_charset (Charset or str) -- KML 文件的原始字符集
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

导入后的结果数据集或结果数据集名称

返回类型:

list[DatasetVector] or list[str]

iobjectspy.conversion.import_kmz(source_file, output, out_dataset_name=None, import_mode=None, is_import_empty=False, is_import_as_cad=False, is_ignore_invisible_object=True, source_file_charset=None, progress=None)

导入 KMZ 文件

参数:
  • source_file (str) -- 被导入的 KMZ 文件
  • output (Datasource or DatasourceConnectionInfo or str) -- 结果数据源
  • out_dataset_name (str) -- 结果数据集名称
  • import_mode (ImportMode or str) -- 数据集导入模式
  • is_import_empty (bool) -- 是否导入空的数据集
  • is_import_as_cad (bool) -- 是否以 CAD 数据集方式导入
  • is_ignore_invisible_object (bool) -- 是否忽略不可见对象
  • source_file_charset (Charset or str) -- KMZ 文件的原始字符集
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

导入后的结果数据集或结果数据集名称

返回类型:

list[DatasetVector] or list[str]

iobjectspy.conversion.import_mif(source_file, output, out_dataset_name=None, import_mode=None, is_ignore_attrs=True, is_import_as_cad=False, style_map_file=None, source_file_charset=None, progress=None)

导入 MIF 文件

参数:
  • source_file (str) -- 被导入的 mif 文件
  • output (Datasource or DatasourceConnectionInfo or str) -- 结果数据源
  • out_dataset_name (str) -- 结果数据集名称
  • import_mode (ImportMode or str) -- 数据集导入模式
  • is_ignore_attrs (bool) -- 导入 MIF 格式数据时是否忽略该数据的属性,包括矢量数据的属性信息。
  • is_import_as_cad (bool) -- 是否以 CAD 数据集方式导入
  • source_file_charset (Charset or str) -- mif 文件的原始字符集
  • style_map_file (str) -- 风格对照表的存储路径
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

导入后的结果数据集或结果数据集名称

返回类型:

list[DatasetVector] or list[str]

iobjectspy.conversion.import_mrsid(source_file, output, out_dataset_name=None, ignore_mode='IGNORENONE', ignore_values=None, multi_band_mode=None, is_import_as_grid=False, progress=None)

导入 MrSID 文件, Linux 平台不支持导入 MrSID 文件。

参数:
  • source_file (str) -- 被导入的 MrSID 文件
  • output (Datasource or DatasourceConnectionInfo or str) -- 结果数据源
  • out_dataset_name (str) -- 结果数据集名称
  • ignore_mode (IgnoreMode or str) -- MrSID 文件的忽略颜色值的模式
  • ignore_values (list[float] 要忽略的颜色值) -- 要忽略的颜色值
  • multi_band_mode (MultiBandImportMode or str) -- 多波段导入模式,可以导入为多个单波段数据集、单个多波段数据集或单个单波段数据集。
  • is_import_as_grid (bool) -- 是否导入为 Grid 数据集
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

导入后的结果数据集或结果数据集名称

返回类型:

list[DatasetGrid] or list[DatasetImage] or list[str]

iobjectspy.conversion.import_osm(source_file, output, out_dataset_name=None, import_mode=None, source_file_charset=None, progress=None)

导入 OSM 矢量数据, Linux 平台不支持 OSM 文件

参数:
  • source_file (str) -- 被导入的 OSM 文件
  • output (Datasource or DatasourceConnectionInfo or str) -- 结果数据源
  • out_dataset_name (str) -- 结果数据集名称
  • import_mode (ImportMode or str) -- 数据集导入模式
  • source_file_charset (Charset or str) -- OSM 文件的原始字符集
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

导入后的结果数据集或结果数据集名称

返回类型:

list[DatasetVector] or list[str]

iobjectspy.conversion.import_png(source_file, output, out_dataset_name=None, ignore_mode='IGNORENONE', ignore_values=None, world_file_path=None, is_import_as_grid=False, is_build_pyramid=True, progress=None)

导入 Portal Network Graphic (PNG) 文件

参数:
  • source_file (str) -- 被导入的 PNG 文件
  • output (Datasource or DatasourceConnectionInfo or str) -- 结果数据源
  • out_dataset_name (str) -- 结果数据集名称
  • ignore_mode (IgnoreMode or str) -- PNG 文件的忽略颜色值的模式
  • ignore_values (list[float] 要忽略的颜色值) -- 要忽略的颜色值
  • world_file_path (str) -- 导入的源影像文件的坐标参考文件路径
  • is_import_as_grid (bool) -- 是否导入为 Grid 数据集
  • is_build_pyramid (bool) -- 是否自动建立影像金字塔
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

导入后的结果数据集或结果数据集名称

返回类型:

list[DatasetGrid] or list[DatasetImage] or list[str]

iobjectspy.conversion.import_simplejson(source_file, output, out_dataset_name=None, import_mode=None, is_import_empty=False, source_file_charset=None, progress=None)

导入 SimpleJson 文件

参数:
  • source_file (str) -- 被导入的 SimpleJson 文件
  • output (Datasource or DatasourceConnectionInfo or str) -- 结果数据源
  • out_dataset_name (str) -- 结果数据集名称
  • import_mode (ImportMode or str) -- 数据集导入模式
  • is_import_empty (bool) -- 是否导入空数据集
  • source_file_charset (Charset or str) -- SimpleJson 文件的原始字符集
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

导入后的结果数据集或结果数据集名称

返回类型:

list[DatasetVector] or list[str]

iobjectspy.conversion.import_sit(source_file, output, out_dataset_name=None, ignore_mode='IGNORENONE', ignore_values=None, multi_band_mode=None, is_import_as_grid=False, password=None, progress=None)

导入 SIT 文件

参数:
  • source_file (str) -- 被导入的 SIT 文件
  • output (Datasource or DatasourceConnectionInfo or str) -- 结果数据源
  • out_dataset_name (str) -- 结果数据集名称
  • ignore_mode (IgnoreMode or str) -- SIT 文件的忽略颜色值的模式
  • ignore_values (list[float] 要忽略的颜色值) -- 要忽略的颜色值
  • multi_band_mode (MultiBandImportMode or str) -- 多波段导入模式,可以导入为多个单波段数据集、单个多波段数据集或单个单波段数据集。
  • is_import_as_grid (bool) -- 是否导入为 Grid 数据集
  • password (str) -- 密码
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

导入后的结果数据集或结果数据集名称

返回类型:

list[DatasetGrid] or list[DatasetImage] or list[str]

iobjectspy.conversion.import_tab(source_file, output, out_dataset_name=None, import_mode=None, is_ignore_attrs=True, is_import_empty=False, is_import_as_cad=False, style_map_file=None, source_file_charset=None, progress=None)

导入 TAB 文件

参数:
  • source_file (str) -- 被导入的 TAB 文件
  • output (Datasource or DatasourceConnectionInfo or str) -- 结果数据源
  • out_dataset_name (str) -- 结果数据集名称
  • import_mode (ImportMode or str) -- 数据集导入模式
  • is_ignore_attrs (bool) -- 导入 TAB 格式数据时是否忽略该数据的属性,包括矢量数据的属性信息。
  • is_import_empty (bool) -- 是否导入空的数据集,默认为 False,即不导入
  • is_import_as_cad (bool) -- 是否以 CAD 数据集方式导入
  • source_file_charset (Charset or str) -- mif 文件的原始字符集
  • style_map_file (str) -- 风格对照表的存储路径
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

导入后的结果数据集或结果数据集名称

返回类型:

list[DatasetVector] or list[str]

iobjectspy.conversion.import_tif(source_file, output, out_dataset_name=None, ignore_mode='IGNORENONE', ignore_values=None, multi_band_mode=None, world_file_path=None, is_import_as_grid=False, is_build_pyramid=True, progress=None)

导入 TIF 文件

参数:
  • source_file (str) -- 被导入的 TIF 文件
  • output (Datasource or DatasourceConnectionInfo or str) -- 结果数据源
  • out_dataset_name (str) -- 结果数据集名称
  • ignore_mode (IgnoreMode or str) -- Tiff/BigTIFF/GeoTIFF 文件的忽略颜色值的模式
  • ignore_values (list[float] 要忽略的颜色值) -- 要忽略的颜色值
  • multi_band_mode (MultiBandImportMode or str) -- 多波段导入模式,可以导入为多个单波段数据集、单个多波段数据集或单个单波段数据集。
  • world_file_path (str) -- 导入的源影像文件的坐标参考文件路径
  • is_import_as_grid (bool) -- 是否导入为 Grid 数据集
  • is_build_pyramid (bool) -- 是否自动建立影像金字塔
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

导入后的结果数据集或结果数据集名称

返回类型:

list[DatasetGrid] or list[DatasetImage] or list[str]

iobjectspy.conversion.import_usgsdem(source_file, output, out_dataset_name=None, ignore_mode='IGNORENONE', ignore_values=None, is_build_pyramid=True, progress=None)

导入 USGSDEM 文件

参数:
  • source_file (str) -- 被导入的 JPG 文件
  • output (Datasource or DatasourceConnectionInfo or str) -- 结果数据源
  • out_dataset_name (str) -- 结果数据集名称
  • ignore_mode (IgnoreMode or str) -- JPG 文件的忽略颜色值的模式
  • ignore_values (list[float] 要忽略的颜色值) -- 要忽略的颜色值
  • is_build_pyramid (bool) -- 是否自动建立影像金字塔
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

导入后的结果数据集或结果数据集名称

返回类型:

list[DatasetGrid] or list[str]

iobjectspy.conversion.import_vct(source_file, output, out_dataset_name=None, import_mode=None, is_import_empty=False, source_file_charset=None, layers=None, progress=None)

导入 VCT 文件

参数:
  • source_file (str) -- 被导入的 VCT 文件
  • output (Datasource or DatasourceConnectionInfo or str) -- 结果数据源
  • out_dataset_name (str) -- 结果数据集名称
  • import_mode (ImportMode or str) -- 数据集导入模式
  • is_import_empty (bool) -- 是否导入空数据集
  • source_file_charset (Charset or str) -- VCT 文件的原始字符集
  • layers (str or list[str]) -- 需要导入的图层名称,设置为 None 时将全部导入。
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

导入后的结果数据集或结果数据集名称

返回类型:

list[DatasetVector] or list[str]

iobjectspy.conversion.export_to_bmp(data, output, is_over_write=False, world_file_path=None, progress=None)

导出数据集到 BMP 文件中

参数:
  • data (DatasetImage or str) -- 被导出的数据集
  • output (str) -- 结果文件路径
  • is_over_write (bool) -- 导出目录中存在同名文件时,是否强制覆盖。默认为 False
  • world_file_path (str) -- 导出的影像数据的坐标文件路径
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

是否导出成功

返回类型:

bool

iobjectspy.conversion.export_to_gif(data, output, is_over_write=False, world_file_path=None, progress=None)

导出数据集到 GIF 文件中

参数:
  • data (DatasetImage or str) -- 被导出的数据集
  • output (str) -- 结果文件路径
  • is_over_write (bool) -- 导出目录中存在同名文件时,是否强制覆盖。默认为 False
  • world_file_path (str) -- 导出的影像数据的坐标文件路径
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

是否导出成功

返回类型:

bool

iobjectspy.conversion.export_to_grd(data, output, is_over_write=False, progress=None)

导出数据集到 GRD 文件中

参数:
  • data (DatasetGrid or str) -- 被导出的数据集
  • output (str) -- 结果文件路径
  • is_over_write (bool) -- 导出目录中存在同名文件时,是否强制覆盖。默认为 False
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

是否导出成功

返回类型:

bool

iobjectspy.conversion.export_to_img(data, output, is_over_write=False, progress=None)

导出数据集到 IMG 文件中

参数:
  • data (DatasetImage or DatasetGrid or str) -- 被导出的数据集
  • output (str) -- 结果文件路径
  • is_over_write (bool) -- 导出目录中存在同名文件时,是否强制覆盖。默认为 False
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

是否导出成功

返回类型:

bool

iobjectspy.conversion.export_to_jpg(data, output, is_over_write=False, world_file_path=None, compression=None, progress=None)

导出数据集到 JPG 文件中

参数:
  • data (DatasetImage or str) -- 被导出的数据集
  • output (str) -- 结果文件路径
  • is_over_write (bool) -- 导出目录中存在同名文件时,是否强制覆盖。默认为 False
  • world_file_path (str) -- 导出的影像数据的坐标文件路径
  • compression (int) -- 影像文件的压缩率,单位:百分比
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

是否导出成功

返回类型:

bool

iobjectspy.conversion.export_to_png(data, output, is_over_write=False, world_file_path=None, progress=None)

导出数据集到 PNG 文件中

参数:
  • data (DatasetImage or str) -- 被导出的数据集
  • output (str) -- 结果文件路径
  • is_over_write (bool) -- 导出目录中存在同名文件时,是否强制覆盖。默认为 False
  • world_file_path (str) -- 导出的影像数据的坐标文件路径
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

是否导出成功

返回类型:

bool

iobjectspy.conversion.export_to_sit(data, output, is_over_write=False, password=None, progress=None)

导出数据集到 SIT 文件中

参数:
  • data (DatasetImage or str) -- 被导出的数据集
  • output (str) -- 结果文件路径
  • is_over_write (bool) -- 导出目录中存在同名文件时,是否强制覆盖。默认为 False
  • password (str) -- 密码
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

是否导出成功

返回类型:

bool

iobjectspy.conversion.export_to_tif(data, output, is_over_write=False, export_as_tile=False, export_transform_file=True, progress=None)

导出数据集到 TIF 文件中

参数:
  • data (DatasetImage or DatasetGrid or str) -- 被导出的数据集
  • output (str) -- 结果文件路径
  • is_over_write (bool) -- 导出目录中存在同名文件时,是否强制覆盖。默认为 False
  • export_as_tile (bool) -- 是否以块的方式导出,默认为 False
  • export_transform_file (bool) -- 是否将仿射转换信息导出外部文件,默认为 True,即导出到外部的 tfw 文件中,否则投影信息会导出到 tiff 文件中
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

是否导出成功

返回类型:

bool

iobjectspy.conversion.export_to_csv(data, output, is_over_write=False, attr_filter=None, ignore_fields=None, target_file_charset=None, is_export_field_names=True, is_export_point_as_wkt=False, progress=None)

导出数据集到 csv 文件中

参数:
  • data (DatasetVector or str) -- 被导出的数据集
  • output (str) -- 结果文件路径
  • is_over_write (bool) -- 导出目录中存在同名文件时,是否强制覆盖。默认为 False
  • attr_filter (str) -- 导出目标文件的过滤信息
  • ignore_fields (list[str]) -- 需要忽略的字段
  • target_file_charset (Charset or str) -- 需要导出的文件的字符集类型
  • is_export_field_names (bool) -- 是否写出字段名称。
  • is_export_point_as_wkt (bool) -- 是否将点以 WKT 方式写出。
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

是否导出成功

返回类型:

bool

iobjectspy.conversion.export_to_dbf(data, output, is_over_write=False, attr_filter=None, ignore_fields=None, target_file_charset=None, progress=None)

导出数据集到 dbf 文件中

参数:
  • data (DatasetVector or str) -- 被导出的数据集,只支持导出属性表数据集
  • output (str) -- 结果文件路径
  • is_over_write (bool) -- 导出目录中存在同名文件时,是否强制覆盖。默认为 False
  • attr_filter (str) -- 导出目标文件的过滤信息
  • ignore_fields (list[str]) -- 需要忽略的字段
  • target_file_charset (Charset or str) -- 需要导出的文件的字符集类型
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

是否导出成功

返回类型:

bool

iobjectspy.conversion.export_to_dwg(data, output, is_over_write=False, attr_filter=None, ignore_fields=None, cad_version=CADVersion.CAD2007, is_export_border=False, is_export_xrecord=False, is_export_external_data=False, style_map_file=None, progress=None)

导出数据集到 DWG 文件中, Linux 平台不支持导出数据集为 DWG 文件。

参数:
  • data (DatasetVector or str) -- 被导出的数据集
  • output (str) -- 结果文件路径
  • is_over_write (bool) -- 导出目录中存在同名文件时,是否强制覆盖。默认为 False
  • attr_filter (str) -- 导出目标文件的过滤信息
  • ignore_fields (list[str]) -- 需要忽略的字段
  • cad_version (CADVersion or str) -- 导出的 DWG 文件的版本。
  • is_export_border (bool) -- 导出cad面对像或矩形对象时是否导出边界。
  • is_export_xrecord (bool) -- 是否将用户自定义的字段以及属性字段作为扩展记录导出
  • is_export_external_data (bool) -- 是否导出扩展字段
  • style_map_file (str) -- 风格对照表的路径
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

是否导出成功

返回类型:

bool

iobjectspy.conversion.export_to_dxf(data, output, is_over_write=False, attr_filter=None, ignore_fields=None, cad_version=CADVersion.CAD2007, is_export_border=False, is_export_xrecord=False, is_export_external_data=False, progress=None)

导出数据集到 DXF 文件中,Linux 平台不支持导出数据集为 DXF 文件

参数:
  • data (DatasetVector or str) -- 被导出的数据集
  • output (str) -- 结果文件路径
  • is_over_write (bool) -- 导出目录中存在同名文件时,是否强制覆盖。默认为 False
  • attr_filter (str) -- 导出目标文件的过滤信息
  • ignore_fields (list[str]) -- 需要忽略的字段
  • cad_version (CADVersion or str) -- 导出的 DWG 文件的版本。
  • is_export_border (bool) -- 导出cad面对像或矩形对象时是否导出边界。
  • is_export_xrecord (bool) -- 是否将用户自定义的字段以及属性字段作为扩展记录导出
  • is_export_external_data (bool) -- 是否导出扩展字段
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

是否导出成功

返回类型:

bool

iobjectspy.conversion.export_to_e00(data, output, is_over_write=False, attr_filter=None, ignore_fields=None, target_file_charset=None, double_precision=False, progress=None)

导出数据集到 E00 文件中

参数:
  • data (DatasetVector or str) -- 被导出的数据集
  • output (str) -- 结果文件路径
  • is_over_write (bool) -- 导出目录中存在同名文件时,是否强制覆盖。默认为 False
  • attr_filter (str) -- 导出目标文件的过滤信息
  • ignore_fields (list[str]) -- 需要忽略的字段
  • target_file_charset (Charset or str) -- 需要导出的文件的字符集类型
  • double_precision (bool) -- 是否以双精度方式导出 E00,默认为 False。
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

是否导出成功

返回类型:

bool

iobjectspy.conversion.export_to_kml(data, output, is_over_write=False, attr_filter=None, ignore_fields=None, target_file_charset=None, progress=None)

导出数据集到 KML 文件中

参数:
  • data (DatasetVector or str or list[DatasetVector] or list[str]) -- 被导出的数据集集合
  • output (str) -- 结果文件路径
  • is_over_write (bool) -- 导出目录中存在同名文件时,是否强制覆盖。默认为 False
  • attr_filter (str) -- 导出目标文件的过滤信息
  • ignore_fields (list[str]) -- 需要忽略的字段
  • target_file_charset (Charset or str) -- 需要导出的文件的字符集类型
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

是否导出成功

返回类型:

bool

iobjectspy.conversion.export_to_kmz(data, output, is_over_write=False, attr_filter=None, ignore_fields=None, target_file_charset=None, progress=None)

导出数据集到 KMZ 文件中

参数:
  • data (DatasetVector or str or list[DatasetVector] or list[str]) -- 被导出的数据集集合
  • output (str) -- 结果文件路径
  • is_over_write (bool) -- 导出目录中存在同名文件时,是否强制覆盖。默认为 False
  • attr_filter (str) -- 导出目标文件的过滤信息
  • ignore_fields (list[str]) -- 需要忽略的字段
  • target_file_charset (Charset or str) -- 需要导出的文件的字符集类型
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

是否导出成功

返回类型:

bool

iobjectspy.conversion.export_to_geojson(data, output, is_over_write=False, attr_filter=None, ignore_fields=None, target_file_charset=None, progress=None)

导出数据集到 GeoJson 文件中

参数:
  • data (DatasetVector or str or list[DatasetVector] or list[str]) -- 被导出的数据集集合
  • output (str) -- 结果文件路径
  • is_over_write (bool) -- 导出目录中存在同名文件时,是否强制覆盖。默认为 False
  • attr_filter (str) -- 导出目标文件的过滤信息
  • ignore_fields (list[str]) -- 需要忽略的字段
  • target_file_charset (Charset or str) -- 需要导出的文件的字符集类型
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

是否导出成功

返回类型:

bool

iobjectspy.conversion.export_to_mif(data, output, is_over_write=False, attr_filter=None, ignore_fields=None, target_file_charset=None, progress=None)

导出数据集到 MIF 文件中

参数:
  • data (DatasetVector or str) -- 被导出的数据集
  • output (str) -- 结果文件路径
  • is_over_write (bool) -- 导出目录中存在同名文件时,是否强制覆盖。默认为 False
  • attr_filter (str) -- 导出目标文件的过滤信息
  • ignore_fields (list[str]) -- 需要忽略的字段
  • target_file_charset (Charset or str) -- 需要导出的文件的字符集类型
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

是否导出成功

返回类型:

bool

iobjectspy.conversion.export_to_shape(data, output, is_over_write=False, attr_filter=None, ignore_fields=None, target_file_charset=None, progress=None)

导出数据集到 Shape 文件中

参数:
  • data (DatasetVector or str) -- 被导出的数据集
  • output (str) -- 结果文件路径
  • is_over_write (bool) -- 导出目录中存在同名文件时,是否强制覆盖。默认为 False
  • attr_filter (str) -- 导出目标文件的过滤信息
  • ignore_fields (list[str]) -- 需要忽略的字段
  • target_file_charset (Charset or str) -- 需要导出的文件的字符集类型
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

是否导出成功

返回类型:

bool

iobjectspy.conversion.export_to_simplejson(data, output, is_over_write=False, attr_filter=None, ignore_fields=None, target_file_charset=None, progress=None)

导出数据集到 SimpleJson 文件中

参数:
  • data (DatasetVector or str) -- 被导出的数据集
  • output (str) -- 结果文件路径
  • is_over_write (bool) -- 导出目录中存在同名文件时,是否强制覆盖。默认为 False
  • attr_filter (str) -- 导出目标文件的过滤信息
  • ignore_fields (list[str]) -- 需要忽略的字段
  • target_file_charset (Charset or str) -- 需要导出的文件的字符集类型
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

是否导出成功

返回类型:

bool

iobjectspy.conversion.export_to_tab(data, output, is_over_write=False, attr_filter=None, ignore_fields=None, target_file_charset=None, style_map_file=None, progress=None)

导出数据集到 TAB 文件中

参数:
  • data (DatasetVector or str) -- 被导出的数据集
  • output (str) -- 结果文件路径
  • is_over_write (bool) -- 导出目录中存在同名文件时,是否强制覆盖。默认为 False
  • attr_filter (str) -- 导出目标文件的过滤信息
  • ignore_fields (list[str]) -- 需要忽略的字段
  • target_file_charset (Charset or str) -- 需要导出的文件的字符集类型
  • style_map_file (str) -- 导出的风格对照表路径
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

是否导出成功

返回类型:

bool

iobjectspy.conversion.export_to_vct(data, config_path, version, output, is_over_write=False, attr_filter=None, ignore_fields=None, target_file_charset=None, progress=None)

导出数据集到 VCT 文件中

参数:
  • data (DatasetVector or str or list[DatasetVector] or str) -- 被导出的数据集集合
  • config_path (str) -- VCT 配置文件路径
  • version (VCTVersion or str) -- VCT 版本
  • output (str) -- 结果文件路径
  • is_over_write (bool) -- 导出目录中存在同名文件时,是否强制覆盖。默认为 False
  • attr_filter (str) -- 导出目标文件的过滤信息
  • ignore_fields (list[str]) -- 需要忽略的字段
  • target_file_charset (Charset or str) -- 需要导出的文件的字符集类型
  • progress (function) -- 进度信息处理函数,请参考 StepEvent
返回:

是否导出成功

返回类型:

bool

iobjectspy.data module

class iobjectspy.data.DatasourceConnectionInfo(server=None, engine_type=None, alias=None, is_readonly=None, database=None, driver=None, user=None, password=None)

基类:iobjectspy._jsuperpy.data._jvm.JVMBase

数据源连接信息类。包括了进行数据源连接的所有信息,如所要连接的服务器名称,数据库名称、用户名、密码等。当保存工作空间时,工作空间中的数据源的 连接信息都将存储到工作空间文件中。对于不同类型的数据源,其连接信息有所区别。所以在使用该类所包含的成员时,请注意该成员所适用的数据源类型。

例如::
>>> conn_info = DatasourceConnectionInfo('E:/data.udb')
>>> print(conn_info.server)
'E:\data.udb'
>>> print(conn_info.type)
EngineType.UDB

创建 OraclePlus 数据库连接信息:

>>> conn_info = (DatasourceConnectionInfo().
>>>                    set_type(EngineType.ORACLEPLUS).
>>>                    set_server('server').
>>>                    set_database('database').
>>>                    set_alias('alias').
>>>                    set_user('user').
>>>                    set_password('password'))
>>> print(conn_info.database)
'server'

构造数据源连接对象

参数:
  • server (str) --

    数据库服务器名、文件名或服务地址:

    • 对于 MEMORY, 为 ':memory:'
    • 对于 UDB 文件,为其文件的绝对路径。注意:当绝对路径的长度超过 UTF-8 编码格式的260字节长度,该数据源无法打开。
    • 对于 Oracle 数据库,其服务器名为其 TNS 服务名称;
    • 对于 SQL Server 数据库,其服务器名为其系统的 DSN(Database Source Name)名称;
    • 对于 PostgreSQL 数据库,其服务器名为"IP:端口号",默认的端口号是 5432;
    • 对于 DB2 数据库,已经进行了编目,所以不需要进行服务器的设置;
    • 对于 Kingbase 数据库,其服务器名为其 IP 地址;
    • 对于 GoogleMaps 数据源,为其服务地址,默认设置为 "http://maps.google.com",且不可更改;
    • 对于 SuperMapCloud 数据源,为其服务地址;
    • 对于 MAPWORLD 数据源,为其服务地址,默认设置为 "http://www.tianditu.cn",且不可更改;
    • 对于 OGC 和 REST 数据源,为其服务地址。
    • 若用户设置为 IMAGEPLUGINS 时,将此方法的参数设置为地图缓存配置文件(SCI)名称,则用户可以实现对地图缓存的加载
  • engine_type (EngineType or str) -- 数据源连接的引擎类型,可以使用 EngineType 枚举值和名称
  • alias (str) -- 数据源别名。别名是数据源的唯一标识。该标识不区分大小写
  • is_readonly (bool) -- 是否以只读方式打开数据源。如果以只读方式打开数据源,数据源的相关信息以及其中的数据都不可修改。
  • database (str) -- 数据源连接的数据库名
  • driver (str) --

    数据源连接所需的驱动名称:

    • 对于SQL Server 数据库,它使用 ODBC 连接,返回的驱动程序名为 SQL Server 或 SQL Native Client。
    • 对于 iServer 发布的 WMTS 服务,返回的驱动名称为 WMTS。
  • user (str) -- 登录数据库的用户名。对于数据库类型数据源适用。
  • password (str) -- 登录数据源连接的数据库或文件的密码。对于 GoogleMaps 数据源,如果打开的是基于早期版本的数据源,则返回的密码为用户在 Google 官网注册后获取的密钥
alias

str -- 数据源别名,别名是数据源的唯一标识。该标识不区分大小写

database

str -- 数据源连接的数据库名

driver

str -- 数据源连接所需的驱动名称

from_dict(values)

从 dict 对象中读取数据库数据源连接信息。读取后会覆盖当前对象中的值。

参数:values (dict) -- 包含数据源连接信息的 dict.
返回:self
返回类型:DatasourceConnectionInfo
static from_json(value)

从 json 字符串构造数据源连接信息对象。

参数:value (str) -- json 字符串
返回:数据源连接信息对象
返回类型:DatasourceConnectionInfo
is_readonly

bool -- 是否以只读方式打开数据源

is_same(other)

判断当前对象与指定的数据库连接信息对象是否是指向同一个数据源对象。 如果两个数据库连接信息指向同一个数据源,则必须:

  • 数据库引擎类型 (type) 相同
  • 数据库服务器名、文件名或服务地址 (server) 相同
  • 数据库连接的数据库名称 (database) 相同如果需要设置。
  • 数据库的用户名 (user) 相同,如果需要设置。
  • 数据源连接的数据库或文件的密码 (password) 相同,如果需要设置。
  • 是否以只读方式打开 (is_readonly) 相同,如果需要设置。
参数:other (DatasourceConnectionInfo) -- 需要比较的数据库连接信息对象。
返回:返回 True 表示与指定的数据库连接信息是指向同一个数据源对象。否则为 False
返回类型:bool
static load_from_dcf(file_path)

从 dcf 文件中加载数据库连接信息,返回一个新的数据库连接信息对象。

参数:file_path (str) -- dcf 文件路径。
返回:数据源连接信息对象
Type:DatasourceConnectionInfo
static load_from_xml(xml)

从指定的 xml 字符串中加载数据库连接信息,并返回一个新的数据库连接信息对象。

参数:xml (str) -- 导入的数据源的连接信息的 xml 字符串
返回:数据源连接信息对象
Type:DatasourceConnectionInfo
static make(value)

构造数据库连接信息对象。

参数:value (str or DatasourceConnectionInfo or dict) --

包含数据源连接信息的对象:

  • 如果是 DatasourceConnectionInfo 对象,则直接返回对象。
  • 如果是 dict, 参考 make_from_dict
  • 如果是 str,可以是:
    • ':memory:',返回内存数据源引擎的数据库连接信息
    • udb 或 udd 文件, 返回UDB数据源引擎的数据库连接信息
    • dcf 文件,参考 save_as_dcf
    • xml 字符串,参考 to_xml
返回:数据源连接信息对象
返回类型:DatasourceConnectionInfo
static make_from_dict(values)

从 dict 对象中构造数据源连接对象。返回一个新的数据库连接信息对象。

参数:values (dict) -- 包含数据源连接信息的 dict.
返回:数据源连接信息对象
返回类型:DatasourceConnectionInfo
password

str -- 登录数据源连接的数据库或文件的密码

save_as_dcf(file_path)

将当前数据集连接信息对象保存到 dcf 文件中。

参数:file_path (str) -- dcf 文件路径。
返回:成功保存返回 True, 否则返回 False
Type:bool
server

str -- 数据库服务器名、文件名或服务地址

set_alias(value)

设置数据源别名

参数:value (str) -- 别名是数据源的唯一标识。该标识不区分大小写
返回:self
返回类型:DatasourceConnectionInfo
set_database(value)

设置数据源连接的数据库名。对于数据库类型数据源适用

参数:value (str) -- 数据源连接的数据库名。
返回:self
返回类型:DatasourceConnectionInfo
set_driver(value)

设置数据源连接所需的驱动名称。

参数:value (str) --

数据源连接所需的驱动名称:

  • 对于SQL Server 数据库,它使用 ODBC 连接,所设置的驱动程序名为 SQL Server 或 SQL Native Client。
  • 对于 iServer 发布的 WMTS 服务,设置的驱动名称为 WMTS,并且该方法必须调用该方法设置其驱动名称。
返回:self
返回类型:DatasourceConnectionInfo
set_password(value)

设置登录数据源连接的数据库或文件的密码

参数:value (str) -- 登录数据源连接的数据库或文件的密码。对于 GoogleMaps 数据源,如果打开的是基于早期版本的数据源,则需要输入密码,其密码为用户在 Google 官网注册后获取的密钥。
返回:self
返回类型:DatasourceConnectionInfo
set_readonly(value)

设置是否以只读方式打开数据源。

参数:value (bool) -- 指定是否以只读方式打开数据源。对于 UDB 数据源,如果其文件属性为只读的,必须设置为只读时才能打开。
返回:self
返回类型:DatasourceConnectionInfo
set_server(value)

设置数据库服务器名、文件名或服务地址

参数:value (str) --

数据库服务器名、文件名或服务地址:

  • 对于 MEMORY, 为 ':memory:'
  • 对于 UDB 文件,为其文件的绝对路径。注意:当绝对路径的长度超过 UTF-8 编码格式的260字节长度,该数据源无法打开。
  • 对于 Oracle 数据库,其服务器名为其 TNS 服务名称;
  • 对于 SQL Server 数据库,其服务器名为其系统的 DSN(Database Source Name)名称;
  • 对于 PostgreSQL 数据库,其服务器名为"IP:端口号",默认的端口号是 5432;
  • 对于 DB2 数据库,已经进行了编目,所以不需要进行服务器的设置;
  • 对于 Kingbase 数据库,其服务器名为其 IP 地址;
  • 对于 GoogleMaps 数据源,为其服务地址,默认设置为"http://maps.google.com",且不可更改;
  • 对于 SuperMapCloud 数据源,为其服务地址;
  • 对于 MAPWORLD 数据源,为其服务地址,默认设置为"http://www.tianditu.cn",且不可更改;
  • 对于 OGC 和 REST 数据源,为其服务地址。
  • 若用户设置为 IMAGEPLUGINS 时,将此方法的参数设置为地图缓存配置文件(SCI)名称,则用户可以实现对地图缓存的加载
返回:self
返回类型:DatasourceConnectionInfo
set_type(value)

设置数据源连接的引擎类型。

参数:value (EngineType or str) -- 数据源连接的引擎类型
返回:self
返回类型:DatasourceConnectionInfo
set_user(value)

设置登录数据库的用户名。对于数据库类型数据源适用

参数:value (str) -- 登录数据库的用户名
返回:self
返回类型:DatasourceConnectionInfo
to_dict()

将当前数据源连接信息输出为 dict 对象。

返回:包含数据源连接信息的 dict
返回类型:dict
示例::
>>> conn_info = (DatasourceConnectionInfo().
>>>                set_type(EngineType.ORACLEPLUS).
>>>                set_server('oracle_server').
>>>                set_database('database_name').
>>>                set_alias('alias_name').
>>>                set_user('user_name').
>>>                set_password('password_123'))
>>>
>>> print(conn_info.to_dict())
{'type': 'ORACLEPLUS', 'alias': 'alias_name', 'server': 'oracle_server', 'user': 'user_name', 'is_readonly': False, 'password': 'password_123', 'database': 'database_name'}
to_json()

输出为 json 格式字符串

返回:json 格式字符串
返回类型:str
to_xml()

将当前数据集连接信息输出为 xml 字符串

返回:由当前数据源连接信息对象转换而得到的 XML 字符串。
返回类型:str
type

EngineType -- 数据源类型

user

str -- 登录数据库的用户名

class iobjectspy.data.Datasource

基类:iobjectspy._jsuperpy.data._jvm.JVMBase

数据源定义了一致的数据访问接口和规范。数据源的物理存储既可以是文件方式,也可以是数据库方式。区别不同存储方式的主要依据是其所采用的数据引擎类型: 采用 UDB 引擎时,数据源以文件方式存储(.udb,.udd)——文件型数据源文件用.udb 文件存储空间数据,采用空间数据库引擎时,数据源存储在指定的 DBMS 中。每个数据源都存在于一个工作空间中,不同的数据源通过数据源别名进行区分。通过数据源对象,可以对数据集进行创建、删除、复制等操作。

使用 create_vector_dataset 快速创建矢量数据集:

>>> ds = Datasource.create('E:/data.udb')
>>> location_dt = ds.create_vector_dataset('location', 'Point')
>>> print(location_dt.name)
location

追加数据到点数据集中:

>>> location_dt.append([Point2D(1,2), Point2D(2,3), Point2D(3,4)])
>>> print(location_dt.get_record_count())
3

数据源可以直接写入几何对象,要素对象,点数据等:

>>> rect = location_dt.bounds
>>> location_coverage = ds.write_spatial_data([rect], 'location_coverage')
>>> print(location_coverage.get_record_count())
1
>>> ds.delete_all()
>>> ds.close()
alias

str -- 数据源的别名。别名用于在工作空间中唯一标识数据源,可以通过它访问数据源。数据源的别名在创建数据源或打开数据源时给定, 打开同一个数据源可以使用不同的别名。

change_password(old_password, new_password)

修改已经打开的数据源的密码

参数:
  • old_password (str) -- 旧密码
  • new_password (str) -- 新的密码
返回:

成功返回True,否则返回False

返回类型:

bool

close()

关闭当前数据源。

返回:成功关闭返回 True,否则返回 False
返回类型:bool
connection_info

DatasourceConnectionInfo -- 数据源连接信息

contains(name)

检查当前数据源中是否有指定名称的数据集

参数:name (str) -- 数据集名称
返回:当前数据源含有指定名称的数据集返回 True,否则返回 False
返回类型:bool
copy_dataset(source, out_dataset_name=None, encode_type=None, progress=None)

复制数据集。复制数据集之前必须保证当前数据源已经打开而且可写。复制数据集时,可通过 EncodeType 参数来对数据集的编码方式进行修改。 有关数据集存储的编码方式请参见 EncodeType 枚举类型。由于CAD数据集不支持任何编码,对 CAD 数据集进行复制操作时设置的 EncodeType 无效

参数:
  • source (Dataset or str) --

    要复制的源数据集。可以为数据集对象,也可以是数据源别名和数据集名称的组合,数据源名称和数据集名称组合可以使用 "|","\","/"任意一种。 例如:

    >>> source = 'ds_alias/point_dataset'
    

    或者:

    >>> source = 'ds_alias|point_dataset'
    
  • out_dataset_name (str) -- 目标数据集的名称。当名称为空或者不合法时,会自动获取到一个合法的数据集名称
  • encode_type (EncodeType or str) -- 数据集的编码方式。可以为 EncodeType 枚举值或名称。
  • progress (function) -- 处理进度信息的函数,具体参考 StepEvent
返回:

复制成功返回结果数据集对象,否则返回 None

返回类型:

Dataset

static create(conn_info)

根据指定的数据源连接信息,创建新的数据源。

参数:conn_info (str or dict or DatasourceConnectionInfo) -- 数据源连接信息,具体可以参考 DatasourceConnectionInfo.make()
返回:数据源对象
返回类型:Datasource
create_dataset(dataset_info, adjust_name=False)

创建数据集。根据指定的数据集信息创建数据集,如果数据集名称不合法或者已经存在,创建数据集会失败,用户可以设定 adjust_name 为 True 自动 获取一个合法的数据集名称。

参数:
  • dataset_info (DatasetVectorInfo or DatasetImageInfo or DatasetGridInfo) -- 数据集信息
  • adjust_name (bool) -- 当数据集名称不合法时,是否自动调整数据集名称,使用一个合法的数据集名称。默认为 False。
返回:

创建成功则返回结果数据集对象,否则返回None

返回类型:

bool

create_dataset_from_template(template, name, adjust_name=False)

根据指定的模板数据集,创建新的数据集对象。

参数:
  • template (Dataset) -- 模板数据集
  • name (str) -- 数据集名称
  • adjust_name (bool) -- 当数据集名称不合法时,是否自动调整数据集名称,使用一个合法的数据集名称。默认为 False。
返回:

创建成功则返回结果数据集对象,否则返回None

返回类型:

Dataset

create_vector_dataset(name, dataset_type, adjust_name=False)

根据数据集名称和类型,创建矢量数据集对象。

参数:
  • name (str) -- 数据集名称
  • dataset_type (DatasetType or str) -- 数据集类型,可以为数据集类型枚举值或名称。支持 TABULAR, POINT, LINE, REGION, TEXT, CAD, POINT3D, LINE3D, REGION3D
  • adjust_name (bool) -- 当数据集名称不合法时,是否自动调整数据集名称,使用一个合法的数据集名称。默认为 False。
返回:

创建成功则返回结果数据集对象,否则返回None

返回类型:

DatasetVector

datasets

list[Dataset] -- 当前数据源中所有的数据集对象

delete(item)

删除指定的数据集,可以为数据集名称或序号

参数:item (str or int) -- 要删除的数据集的名称或序号
返回:删除数据集成功返回True,否则返回False
返回类型:bool
delete_all()

删除当前数据源下所有的数据集

description

str -- 返回用户添加的关于数据源的描述信息

field_to_point_dataset(source_dataset, x_field, y_field, out_dataset_name=None)

从一个矢量数据集的属性表中的 X、Y 坐标字段创建点数据集。即以该矢量数据集的属性表中的 X 、Y 坐标字段作为数据集的 X、Y 坐标来创建点数据集。

参数:
  • source_dataset (DatasetVector or str) -- 关联属性表中带有坐标字段的矢量数据集
  • x_field (str) -- 表示点横坐标的字段。
  • y_field (str) -- 表示点纵坐标的字段。
  • out_dataset_name (str) -- 目标数据集的名称。当名称为空或者不合法时,会自动获取到一个合法的数据集名称
返回:

成功返回一个点数据集,否则返回None

返回类型:

DatasetVector

flush(dataset_name=None)

将内存中暂未写入数据库中的数据保存到数据库

参数:dataset_name (str) -- 需要刷新的数据集名称。当传入长度为空的字符串或None,表示对所有数据集进行刷新;否则对指定名字的数据集进行刷新。
返回:成功返回True,否则返回False
返回类型:bool
static from_json(value)

从 json 格式字符串打开数据源。json 串格式为 DatasourceConnectionInfo 的 json 字符串格式。具体参 DatasourceConnectionInfo.to_json()to_json()

参数:value (str) -- json 字符串格式
返回:数据源对象
返回类型:Datasource
get_available_dataset_name(name)

返回一个数据源中未被使用的数据集的名称。数据集的名称限制:数据集名称的长度限制为30个字符(也就是可以为30个英文字母或者15个汉字), 组成数据集名称的字符可以为字母、汉字、数字和下划线,数据集名称不可以用数字和下划线开头,数据集名称不可以和数据库的保留关键字冲突。

参数:name (str) -- 数据集名称
返回:合法的数据集名称
返回类型:str
get_count()

获取数据集的个数

返回类型:int
get_dataset(item)

根据数据集名称或序号,获取数据集对象

参数:item -- 数据集的名称或序号
Type:str or int
返回:数据集对象
返回类型:Dataset
index_of(name)

返回给定数据集名称对应的数据集在数据集集合中所处的索引值

参数:name (str) -- 数据集名称
返回类型:int