com.supermap.analyst.spatialanalyst

类 BufferAnalyst



  • public class BufferAnalyst
    extends Object
    缓冲区分析类。该类用于为点、线、面数据集(或记录集)以及网络数据集创建缓冲区,包括单重缓冲区、多重缓冲区和线单边多重缓冲区。

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

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

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

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

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

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

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

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

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

    说明:

    1. 对于面对象,在做缓冲区分析前最好先经过拓扑检查,排除面内相交的情况,所谓面内相交,指的是面对象自身相交,如图所示,图中数字代表面对象的节点顺序。
    2. 对“负半径”的说明
      • 如果缓冲区半径为数值型,则仅面数据支持负半径;
      • 如果缓冲区半径为字段或字段表达式,如果字段或字段表达式的值为负值,对于点、线数据取其绝对值;对于面数据,若合并缓冲区,则取其绝对值,若不合并,则按照负半径处理。

      关于缓冲区的参数设置,请参见 BufferAnalystParameter 类。

    • 方法详细资料

      • createBuffer

        public static boolean createBuffer(DatasetVector sourceDataset,
                                           DatasetVector resultDataset,
                                           BufferAnalystParameter bufferAnalystParameter,
                                           boolean isUnion,
                                           boolean isAttributeRetained)
        已过时。 此方法已废弃,请使用支持进度监听的新方法 BufferAnalyst.createBuffer(DatasetVector, DatasetVector, BufferAnalystParameter, boolean, boolean, SteppedListener...) 替换。
        创建矢量数据集缓冲区。

        有关缓冲区分析的介绍,请参阅 BufferAnalyst 类。

        参数:
        sourceDataset - 指定的创建缓冲区的源矢量数据集。支持点、线、面数据集和网络数据集。对网络数据集进行分析,是对其中的弧段作缓冲区。
        resultDataset - 指定的存储缓冲区分析结果的数据集,必须是面数据集。
        bufferAnalystParameter - 指定的缓冲区分析参数对象。
        isUnion - 是否合并缓冲区,即是否将源数据各对象生成的所有缓冲区域进行合并运算后返回。对于面对象而言,要求源数据集中的面对象不相交。
        isAttributeRetained - 是否保留进行缓冲区分析的对象的字段属性。当合并结果面数据集时,该参数无效。即当 isUnion 参数为 false 时有效。
        返回:
        一个布尔值,如果成功返回 true,否则返回 false。
        示范代码:
        以下代码示范了如何创建线矢量数据集的缓冲区。
        public void bufferAnalystForDataset() {
        
                // 返回用来建立缓冲区的矢量数据集
                Workspace workspace = new Workspace();
                DatasourceConnectionInfo datasourceConnectionInfo = new
                        DatasourceConnectionInfo("G:/shanghai/shanghai.udb", "shanghai",
                                                 "");
                Datasource targetDatasource = workspace.getDatasources().open(
                        datasourceConnectionInfo);
                DatasetVector datasetRoad = (DatasetVector) targetDatasource.
                                            getDatasets().get("Road_L");
        
                // 创建一个面矢量数据集,用于存储缓冲区分析的结果
                String resultDatasetName = targetDatasource.getDatasets().
                                           getAvailableDatasetName(
                                                   "resultDatasetBuffer");
                DatasetVectorInfo datasetvectorInfo = new DatasetVectorInfo();
                datasetvectorInfo.setType(DatasetType.REGION);
                datasetvectorInfo.setName(resultDatasetName);
                datasetvectorInfo.setEncodeType(EncodeType.NONE);
                DatasetVector resultDatasetBuffer = targetDatasource.getDatasets().
                                                    create(datasetvectorInfo);
        
                // 设置缓冲区分析参数
                BufferAnalystParameter bufferAnalystParam = new BufferAnalystParameter();
                bufferAnalystParam.setEndType(BufferEndType.FLAT);
                bufferAnalystParam.setLeftDistance(20);
                bufferAnalystParam.setRightDistance(20);
        
                // 调用创建矢量数据集缓冲区方法
                BufferAnalyst.createBuffer(datasetRoad,
                                           resultDatasetBuffer, bufferAnalystParam, false, true);
        
                // 释放工作空间占有的资源
                workspace.dispose();
            }
      • createBuffer

        public static boolean createBuffer(DatasetVector sourceDataset,
                                           DatasetVector resultDataset,
                                           BufferAnalystParameter bufferAnalystParameter,
                                           boolean isUnion,
                                           boolean isAttributeRetained,
                                           SteppedListener... listeners)
        创建矢量数据集缓冲区。

        有关缓冲区分析的介绍,请参阅 BufferAnalyst 类。

        参数:
        sourceDataset - 指定的创建缓冲区的源矢量数据集。支持点、线、面数据集和网络数据集。对网络数据集进行分析,是对其中的弧段作缓冲区。
        resultDataset - 指定的存储缓冲区分析结果的数据集,必须是面数据集。
        bufferAnalystParameter - 指定的缓冲区分析参数对象。
        isUnion - 是否合并缓冲区,即是否将源数据各对象生成的所有缓冲区域进行合并运算后返回。对于面对象而言,要求源数据集中的面对象不相交。
        isAttributeRetained - 是否保留进行缓冲区分析的对象的字段属性。当合并结果面数据集时,该参数无效。即当 isUnion 参数为 false 时有效。
        listeners - 用于接收进度条事件的监听器。
        返回:
        一个布尔值,如果成功返回 true,否则返回 false。
        示范代码:
        以下代码示范了如何创建线矢量数据集的缓冲区。
        public void bufferAnalystForDataset() {
        
                // 返回用来建立缓冲区的矢量数据集
                Workspace workspace = new Workspace();
                DatasourceConnectionInfo datasourceConnectionInfo = new
                        DatasourceConnectionInfo("G:/shanghai/shanghai.udb", "shanghai",
                                                 "");
                Datasource targetDatasource = workspace.getDatasources().open(
                        datasourceConnectionInfo);
                DatasetVector datasetRoad = (DatasetVector) targetDatasource.
                                            getDatasets().get("Road_L");
        
                // 创建一个面矢量数据集,用于存储缓冲区分析的结果
                String resultDatasetName = targetDatasource.getDatasets().
                                           getAvailableDatasetName(
                                                   "resultDatasetBuffer");
                DatasetVectorInfo datasetvectorInfo = new DatasetVectorInfo();
                datasetvectorInfo.setType(DatasetType.REGION);
                datasetvectorInfo.setName(resultDatasetName);
                datasetvectorInfo.setEncodeType(EncodeType.NONE);
                DatasetVector resultDatasetBuffer = targetDatasource.getDatasets().
                                                    create(datasetvectorInfo);
        
                // 设置缓冲区分析参数
                BufferAnalystParameter bufferAnalystParam = new BufferAnalystParameter();
                bufferAnalystParam.setEndType(BufferEndType.FLAT);
                bufferAnalystParam.setLeftDistance(20);
                bufferAnalystParam.setRightDistance(20);
        
                // 调用创建矢量数据集缓冲区方法
                BufferAnalyst.createBuffer(datasetRoad,
                                           resultDatasetBuffer, bufferAnalystParam, false, true);
        
                // 释放工作空间占有的资源
                workspace.dispose();
            }
      • createBuffer

        @Deprecated
        public static boolean createBuffer(Recordset sourceRecordset,
                                                        DatasetVector resultDataset,
                                                        BufferAnalystParameter bufferAnalystParameter,
                                                        boolean isUnion,
                                                        boolean isAttributeRetained)
        已过时。 此方法已废弃,请使用支持进度监听的新方法 BufferAnalyst.createBuffer(Recordset, DatasetVector, BufferAnalystParameter, boolean, boolean, SteppedListener...) 替换。
        创建矢量记录集缓冲区。

        有关缓冲区分析的介绍,请参阅 BufferAnalyst 类。

        参数:
        sourceRecordset - 指定的创建缓冲区的源矢量记录集。支持点、线、面记录集。
        resultDataset - 指定的存储缓冲区分析结果的数据集,必须是面数据集。
        bufferAnalystParameter - 指定的缓冲区分析参数对象。
        isUnion - 是否合并缓冲区,即是否将源数据各对象生成的所有缓冲区域进行合并运算后返回。对于面对象而言,要求源数据集中的面对象不相交。
        isAttributeRetained - 是否保留进行缓冲区分析的对象的字段属性。当合并结果面数据集时,该参数无效。即当 isUnion 参数为 false 时有效。
        返回:
        一个布尔值,如果成功返回 true,否则返回 false。
        示范代码:
        以下代码示范了如何创建线矢量记录集的缓冲区, 假设为通过查询方式返回的线记录集建立缓冲区。
         public void bufferAnalystForRecordset(Recordset recordsetLine, DatasetVector resultDatasetBuffer)
                {
                // 设置缓冲区分析参数
                BufferAnalystParameter bufferAnalystParam = new BufferAnalystParameter();
                bufferAnalystParam.setEndType(BufferEndType.FLAT);
                bufferAnalystParam.setLeftDistance(20);
                bufferAnalystParam.setRightDistance(20);
        
                // 调用为记录集建立缓冲区的方法
                BufferAnalyst.createBuffer(recordsetLine, resultDatasetBuffer, bufferAnalystParam, false,true);
        
             }
             
      • createBuffer

        public static boolean createBuffer(Recordset sourceRecordset,
                                           DatasetVector resultDataset,
                                           BufferAnalystParameter bufferAnalystParameter,
                                           boolean isUnion,
                                           boolean isAttributeRetained,
                                           SteppedListener... listeners)
        创建矢量记录集缓冲区。

        有关缓冲区分析的介绍,请参阅 BufferAnalyst 类。

        参数:
        sourceRecordset - 指定的创建缓冲区的源矢量记录集。支持点、线、面记录集。
        resultDataset - 指定的存储缓冲区分析结果的数据集,必须是面数据集。
        bufferAnalystParameter - 指定的缓冲区分析参数对象。
        isUnion - 是否合并缓冲区,即是否将源数据各对象生成的所有缓冲区域进行合并运算后返回。对于面对象而言,要求源数据集中的面对象不相交。
        isAttributeRetained - 是否保留进行缓冲区分析的对象的字段属性。当合并结果面数据集时,该参数无效。即当 isUnion 参数为 false 时有效。
        listeners - 用于接收进度条事件的监听器。
        返回:
        一个布尔值,如果成功返回 true,否则返回 false。
        示范代码:
        以下代码示范了如何创建线矢量记录集的缓冲区, 假设为通过查询方式返回的线记录集建立缓冲区。
         public void bufferAnalystForRecordset(Recordset recordsetLine, DatasetVector resultDatasetBuffer)
                {
                // 设置缓冲区分析参数
                BufferAnalystParameter bufferAnalystParam = new BufferAnalystParameter();
                bufferAnalystParam.setEndType(BufferEndType.FLAT);
                bufferAnalystParam.setLeftDistance(20);
                bufferAnalystParam.setRightDistance(20);
        
                // 调用为记录集建立缓冲区的方法
                BufferAnalyst.createBuffer(recordsetLine, resultDatasetBuffer, bufferAnalystParam, false,true);
        
             }
             
      • createMultiBuffer

        public static boolean createMultiBuffer(DatasetVector sourceDataset,
                                                DatasetVector resultDataset,
                                                double[] bufferRadii,
                                                BufferRadiusUnit bufferRadiusUnit,
                                                int semicircleSegments,
                                                boolean isUnion,
                                                boolean isAttributeRetained,
                                                boolean isRing)
        创建矢量数据集多重缓冲区。

        有关缓冲区分析的介绍,请参阅 BufferAnalyst 类。

        参数:
        sourceDataset - 指定的创建多重缓冲区的源矢量数据集。支持点、线、面数据集和网络数据集。对网络数据集进行分析,是对其中的弧段作缓冲区。
        resultDataset - 指定的用于存储缓冲区分析结果的数据集。
        bufferRadii - 指定的多重缓冲区半径列表。单位由 bufferRadiusUnit 参数指定。
        bufferRadiusUnit - 指定的缓冲区半径单位。
        semicircleSegments - 指定的弧段拟合数。
        isUnion - 是否合并缓冲区,即是否将源数据各对象生成的所有缓冲区域进行合并运算后返回。
        isAttributeRetained - 是否保留进行缓冲区分析的对象的字段属性。当合并结果面数据集时,该参数无效,即当 isUnion 为 false 时有效。
        isRing - 是否生成环状缓冲区。设置为 true,则生成多重缓冲区时外圈缓冲区是以环状区域与内圈数据相邻的;设置为 false,则外围缓冲区是一个包含了内圈数据的区域。
        返回:
        一个布尔值,如果成功返回 true,否则返回 false。
        示范代码:
        请参见 createMultiBuffer(Recordset, DatasetVector, double[], BufferRadiusUnit, int, boolean, boolean, boolean) 方法的示例。
      • createMultiBuffer

        public static boolean createMultiBuffer(DatasetVector sourceDataset,
                                                DatasetVector resultDataset,
                                                double[] bufferRadii,
                                                BufferRadiusUnit bufferRadiusUnit,
                                                int semicircleSegments,
                                                boolean isUnion,
                                                boolean isAttributeRetained,
                                                boolean isRing,
                                                SteppedListener... listeners)
        创建矢量数据集多重缓冲区。

        有关缓冲区分析的介绍,请参阅 BufferAnalyst 类。

        参数:
        sourceDataset - 指定的创建多重缓冲区的源矢量数据集。支持点、线、面数据集和网络数据集。对网络数据集进行分析,是对其中的弧段作缓冲区。
        resultDataset - 指定的用于存储缓冲区分析结果的数据集。
        bufferRadii - 指定的多重缓冲区半径列表。单位由 bufferRadiusUnit 参数指定。
        bufferRadiusUnit - 指定的缓冲区半径单位。
        semicircleSegments - 指定的弧段拟合数。
        isUnion - 是否合并缓冲区,即是否将源数据各对象生成的所有缓冲区域进行合并运算后返回。
        isAttributeRetained - 是否保留进行缓冲区分析的对象的字段属性。当合并结果面数据集时,该参数无效,即当 isUnion 为 false 时有效。
        isRing - 是否生成环状缓冲区。设置为 true,则生成多重缓冲区时外圈缓冲区是以环状区域与内圈数据相邻的;设置为 false,则外围缓冲区是一个包含了内圈数据的区域。
        listeners - 用于接收进度条事件的监听器。
        返回:
        一个布尔值,如果成功返回 true,否则返回 false。
        示范代码:
        请参见 createMultiBuffer(Recordset, DatasetVector, double[], BufferRadiusUnit, int, boolean, boolean, boolean) 方法的示例。
      • createMultiBuffer

        @Deprecated
        public static boolean createMultiBuffer(Recordset sourceRecordset,
                                                             DatasetVector resultDataset,
                                                             double[] bufferRadii,
                                                             BufferRadiusUnit bufferRadiusUnit,
                                                             int semicircleSegments,
                                                             boolean isUnion,
                                                             boolean isAttributeRetained,
                                                             boolean isRing)
        创建矢量记录集多重缓冲区。

        有关缓冲区分析的介绍,请参阅 BufferAnalyst 类。

        参数:
        sourceRecordset - 指定的创建多重缓冲区的源矢量记录集。支持点、线、面记录集。
        resultDataset - 指定的用于存储缓冲区分析结果的数据集。
        bufferRadii - 指定的多重缓冲区半径列表。单位由 bufferRadiusUnit 参数指定。
        bufferRadiusUnit - 指定的缓冲区半径单位。
        semicircleSegments - 指定的弧段拟合数。
        isUnion - 是否合并缓冲区,即是否将源数据各对象生成的所有缓冲区域进行合并运算后返回。
        isAttributeRetained - 是否保留进行缓冲区分析的对象的字段属性。当合并结果面数据集时,该参数无效,即当 isUnion 为 false 时有效。
        isRing - 是否生成环状缓冲区。设置为 true,则生成多重缓冲区时外圈缓冲区是以环状区域与内圈数据相邻的;设置为 false,则外围缓冲区是一个包含了内圈数据的区域。
        返回:
        一个布尔值,如果成功返回 true,否则返回 false。
        示范代码:
        以下代码示范了如何根据给定的记录集创建线的多重缓冲区。假设已经获取需要做缓冲区的记录集,并且用于存储结果的数据集已经创建或存在。
         public void multiBufferForRecordset(Recordset sourceRecordset,
                        DatasetVector resultDataset) {
                // 使用数组来存储多重缓冲区的半径
                double[] arrayRadius = { 30, 90, 100, 200 };
        
                // 设置弧段拟合数为20
                int semicircleSegments = 20;
        
                BufferAnalyst.createMultiBuffer(sourceRecordset, resultDataset,
                                arrayRadius, BufferRadiusUnit.Meter, semicircleSegments, false,
                                true, false);
         }
         
      • createMultiBuffer

        public static boolean createMultiBuffer(Recordset sourceRecordset,
                                                DatasetVector resultDataset,
                                                double[] bufferRadii,
                                                BufferRadiusUnit bufferRadiusUnit,
                                                int semicircleSegments,
                                                boolean isUnion,
                                                boolean isAttributeRetained,
                                                boolean isRing,
                                                SteppedListener... listeners)
        创建矢量记录集多重缓冲区。

        有关缓冲区分析的介绍,请参阅 BufferAnalyst 类。

        参数:
        sourceRecordset - 指定的创建多重缓冲区的源矢量记录集。支持点、线、面记录集。
        resultDataset - 指定的用于存储缓冲区分析结果的数据集。
        bufferRadii - 指定的多重缓冲区半径列表。单位由 bufferRadiusUnit 参数指定。
        bufferRadiusUnit - 指定的缓冲区半径单位。
        semicircleSegments - 指定的弧段拟合数。
        isUnion - 是否合并缓冲区,即是否将源数据各对象生成的所有缓冲区域进行合并运算后返回。
        isAttributeRetained - 是否保留进行缓冲区分析的对象的字段属性。当合并结果面数据集时,该参数无效,即当 isUnion 为 false 时有效。
        isRing - 是否生成环状缓冲区。设置为 true,则生成多重缓冲区时外圈缓冲区是以环状区域与内圈数据相邻的;设置为 false,则外围缓冲区是一个包含了内圈数据的区域。
        listeners - 用于接收进度条事件的监听器。
        返回:
        一个布尔值,如果成功返回 true,否则返回 false。
        示范代码:
        以下代码示范了如何根据给定的记录集创建线的多重缓冲区。假设已经获取需要做缓冲区的记录集,并且用于存储结果的数据集已经创建或存在。
         public void multiBufferForRecordset(Recordset sourceRecordset,
                        DatasetVector resultDataset) {
                // 使用数组来存储多重缓冲区的半径
                double[] arrayRadius = { 30, 90, 100, 200 };
        
                // 设置弧段拟合数为20
                int semicircleSegments = 20;
        
                BufferAnalyst.createMultiBuffer(sourceRecordset, resultDataset,
                                arrayRadius, BufferRadiusUnit.Meter, semicircleSegments, false,
                                true, false);
         }
         
      • createLineOneSideMultiBuffer

        @Deprecated
        public static boolean createLineOneSideMultiBuffer(DatasetVector sourceDataset,
                                                                        DatasetVector resultDataset,
                                                                        double[] bufferRadii,
                                                                        BufferRadiusUnit bufferRadiusUnit,
                                                                        int semicircleSegments,
                                                                        boolean isLeft,
                                                                        boolean isUnion,
                                                                        boolean isAttributeRetained,
                                                                        boolean isRing)
        创建矢量线数据集单边多重缓冲区。

        线的单边多重缓冲区,是指在线对象的一侧生成多重缓冲区。左侧是指沿线对象的节点序列方向的左侧,右侧为节点序列方向的右侧。

        有关缓冲区分析的更多介绍,请参阅 BufferAnalyst 类。

        注意:不支持对网络数据集创建线的单边多重缓冲区。

        参数:
        sourceDataset - 指定的创建多重缓冲区的源矢量数据集。只支持线数据集。
        resultDataset - 指定的用于存储缓冲区分析结果的数据集,必须是面数据集。
        bufferRadii - 指定的多重缓冲区半径列表。单位由 bufferRadiusUnit 参数指定。
        bufferRadiusUnit - 指定的缓冲区半径单位。
        semicircleSegments - 指定的弧段拟合数。
        isLeft - 是否生成左缓冲区。设置为 true,在线的左侧生成缓冲区,否则在右侧生成缓冲区。
        isUnion - 是否合并缓冲区,即是否将源数据各对象生成的所有缓冲区域进行合并运算后返回。
        isAttributeRetained - 是否保留进行缓冲区分析的对象的字段属性。当合并结果面数据集时,该参数无效,即当 isUnion 为 false 时有效。
        isRing - 是否生成环状缓冲区。设置为 true,则生成多重缓冲区时外圈缓冲区是以环状区域与内圈数据相邻的;设置为 false,则外围缓冲区是一个包含了内圈数据的区域。
        返回:
        一个布尔值,如果成功返回 true,否则返回 false。
        示范代码:
        以下代码示范了如何根据给定的数据源和线矢量数据集创建线的单边多重缓冲区。
         public void oneSideMultiBufferForDataset(DatasetVector sourceDataset,
                        DatasetVector resultDataset) {
                //使用数组来存储多重缓冲区的半径
                double[] arrayRadius ={30,100};
        
                //设置弧段拟合数为20
                int semicircleSegments = 20;
        
                //设置单边缓冲区的类型为左缓冲区
                boolean isLeft = true;
        
                BufferAnalyst.createLineOneSideMultiBuffer(sourceDataset, resultDataset,
                                arrayRadius, BufferRadiusUnit.Meter, semicircleSegments,
                                isLeft, false, true, false);
         }
         
      • createLineOneSideMultiBuffer

        public static boolean createLineOneSideMultiBuffer(DatasetVector sourceDataset,
                                                           DatasetVector resultDataset,
                                                           double[] bufferRadii,
                                                           BufferRadiusUnit bufferRadiusUnit,
                                                           int semicircleSegments,
                                                           boolean isLeft,
                                                           boolean isUnion,
                                                           boolean isAttributeRetained,
                                                           boolean isRing,
                                                           SteppedListener... listeners)
        创建矢量线数据集单边多重缓冲区。

        线的单边多重缓冲区,是指在线对象的一侧生成多重缓冲区。左侧是指沿线对象的节点序列方向的左侧,右侧为节点序列方向的右侧。

        有关缓冲区分析的更多介绍,请参阅 BufferAnalyst 类。

        注意:不支持对网络数据集创建线的单边多重缓冲区。

        参数:
        sourceDataset - 指定的创建多重缓冲区的源矢量数据集。只支持线数据集。
        resultDataset - 指定的用于存储缓冲区分析结果的数据集,必须是面数据集。
        bufferRadii - 指定的多重缓冲区半径列表。单位由 bufferRadiusUnit 参数指定。
        bufferRadiusUnit - 指定的缓冲区半径单位。
        semicircleSegments - 指定的弧段拟合数。
        isLeft - 是否生成左缓冲区。设置为 true,在线的左侧生成缓冲区,否则在右侧生成缓冲区。
        isUnion - 是否合并缓冲区,即是否将源数据各对象生成的所有缓冲区域进行合并运算后返回。
        isAttributeRetained - 是否保留进行缓冲区分析的对象的字段属性。当合并结果面数据集时,该参数无效,即当 isUnion 为 false 时有效。
        isRing - 是否生成环状缓冲区。设置为 true,则生成多重缓冲区时外圈缓冲区是以环状区域与内圈数据相邻的;设置为 false,则外围缓冲区是一个包含了内圈数据的区域。
        listeners - 用于接收进度条事件的监听器。
        返回:
        一个布尔值,如果成功返回 true,否则返回 false。
        示范代码:
        以下代码示范了如何根据给定的数据源和线矢量数据集创建线的单边多重缓冲区。
         public void oneSideMultiBufferForDataset(DatasetVector sourceDataset,
                        DatasetVector resultDataset) {
                //使用数组来存储多重缓冲区的半径
                double[] arrayRadius ={30,100};
        
                //设置弧段拟合数为20
                int semicircleSegments = 20;
        
                //设置单边缓冲区的类型为左缓冲区
                boolean isLeft = true;
        
                BufferAnalyst.createLineOneSideMultiBuffer(sourceDataset, resultDataset,
                                arrayRadius, BufferRadiusUnit.Meter, semicircleSegments,
                                isLeft, false, true, false);
         }
         
      • createLineOneSideMultiBuffer

        @Deprecated
        public static boolean createLineOneSideMultiBuffer(Recordset sourceRecordset,
                                                                        DatasetVector resultDataset,
                                                                        double[] bufferRadii,
                                                                        BufferRadiusUnit bufferRadiusUnit,
                                                                        int semicircleSegments,
                                                                        boolean isLeft,
                                                                        boolean isUnion,
                                                                        boolean isAttributeRetained,
                                                                        boolean isRing)
        创建矢量线记录集单边多重缓冲区。

        有关线单边多重缓冲区分析的介绍,请参阅另一重载方法 createLineOneSideMultiBuffer;有关缓冲区分析的更多介绍,请参阅 BufferAnalyst 类。

        参数:
        sourceRecordset - 指定的创建多重缓冲区的源矢量记录集。只支持线记录集。
        resultDataset - 指定的用于存储缓冲区分析结果的数据集,必须是面数据集。
        bufferRadii - 指定的多重缓冲区半径列表。单位由 bufferRadiusUnit 参数指定。
        bufferRadiusUnit - 指定的缓冲区半径单位。
        semicircleSegments - 指定的弧段拟合数。
        isLeft - 是否生成左缓冲区。设置为 true,在线的左侧生成缓冲区,否则在右侧生成缓冲区。
        isUnion - 是否合并缓冲区,即是否将源数据各对象生成的所有缓冲区域进行合并运算后返回。
        isAttributeRetained - 是否保留进行缓冲区分析的对象的字段属性。当合并结果面数据集时,该参数无效,即当 isUnion 为 false 时有效。
        isRing - 是否生成环状缓冲区。设置为 true,则生成多重缓冲区时外圈缓冲区是以环状区域与内圈数据相邻的;设置为 false,则外围缓冲区是一个包含了内圈数据的区域。
        返回:
        一个布尔值,如果成功返回 true,否则返回 false。
        示范代码:
        请参见 createLineOneSideMultiBuffer(DatasetVector, DatasetVector, double[], BufferRadiusUnit, int, boolean, boolean, boolean, boolean) 方法的示例。
      • createLineOneSideMultiBuffer

        public static boolean createLineOneSideMultiBuffer(Recordset sourceRecordset,
                                                           DatasetVector resultDataset,
                                                           double[] bufferRadii,
                                                           BufferRadiusUnit bufferRadiusUnit,
                                                           int semicircleSegments,
                                                           boolean isLeft,
                                                           boolean isUnion,
                                                           boolean isAttributeRetained,
                                                           boolean isRing,
                                                           SteppedListener... listeners)
        创建矢量线记录集单边多重缓冲区。

        有关线单边多重缓冲区分析的介绍,请参阅另一重载方法 createLineOneSideMultiBuffer;有关缓冲区分析的更多介绍,请参阅 BufferAnalyst 类。

        参数:
        sourceRecordset - 指定的创建多重缓冲区的源矢量记录集。只支持线记录集。
        resultDataset - 指定的用于存储缓冲区分析结果的数据集,必须是面数据集。
        bufferRadii - 指定的多重缓冲区半径列表。单位由 bufferRadiusUnit 参数指定。
        bufferRadiusUnit - 指定的缓冲区半径单位。
        semicircleSegments - 指定的弧段拟合数。
        isLeft - 是否生成左缓冲区。设置为 true,在线的左侧生成缓冲区,否则在右侧生成缓冲区。
        isUnion - 是否合并缓冲区,即是否将源数据各对象生成的所有缓冲区域进行合并运算后返回。
        isAttributeRetained - 是否保留进行缓冲区分析的对象的字段属性。当合并结果面数据集时,该参数无效,即当 isUnion 为 false 时有效。
        isRing - 是否生成环状缓冲区。设置为 true,则生成多重缓冲区时外圈缓冲区是以环状区域与内圈数据相邻的;设置为 false,则外围缓冲区是一个包含了内圈数据的区域。
        listeners - 用于接收进度条事件的监听器。
        返回:
        一个布尔值,如果成功返回 true,否则返回 false。
        示范代码:
        请参见 createLineOneSideMultiBuffer(DatasetVector, DatasetVector, double[], BufferRadiusUnit, int, boolean, boolean, boolean, boolean) 方法的示例。
      • addSteppedListener

        public static void addSteppedListener(SteppedListener l)
        添加一个进度条事件(SteppedEvent)的监听器。
        参数:
        l - 一个用于接收进度条事件的监听器。
      • removeSteppedListener

        public static void removeSteppedListener(SteppedListener l)
        移除一个进度条事件(SteppedEvent)的监听器。
        参数:
        l - 一个用于接收进度条事件的监听器。

Copyright © 2021–2024 SuperMap. All rights reserved.