com.supermap.analyst.spatialanalyst

类 BufferAnalystGeometry



  • public class BufferAnalystGeometry
    extends Object
    几何对象缓冲区分析类。
    • 方法详细资料

      • createBuffer

        public static GeoRegion createBuffer(Geometry geometry,
                                             BufferAnalystParameter bufferAnalystParameter)
        根据给定的几何对象及缓冲区分析参数对象创建缓冲区。

        注意:对点或面对象进行缓冲区分析时,只能采用圆头缓冲模式,即:参数 BufferAnalystParameter 对象中的 setEndType() 方法,只能设置为BufferEndType.ROUND

        参数:
        geometry - 指定的几何对象。
        bufferAnalystParameter - 指定的缓冲区分析参数对象。
        返回:
        根据几何对象创建缓冲区,成功返回一个面对象,失败则返回一个空的面对象。
        示范代码:
        以下代码示范了如何根据给定的几何对象创建缓冲区,假设为通过查询返回的线几何对象创建缓冲区。
         public void bufferAnalystForGeometry() {
                // 返回用来建立缓冲区的对象所在的矢量数据集
                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");
        
                // 通过查询返回线几何对象所在的记录
                QueryParameter queryParam = new QueryParameter();
                queryParam.setAttributeFilter("ClassID=411001");
                queryParam.setHasGeometry(true);
                Recordset queryRecordset = datasetRoad.query(queryParam);
        
                // 新建一个数据集用来存储几何对象的缓冲区
                String resultDatasetName = targetDatasource.getDatasets().
                                           getAvailableDatasetName("resultDataset");
                DatasetVectorInfo datasetvectorInfo = new DatasetVectorInfo();
                datasetvectorInfo.setType(DatasetType.REGION);
                datasetvectorInfo.setName(resultDatasetName);
                datasetvectorInfo.setEncodeType(EncodeType.NONE);
                DatasetVector resultDataset = targetDatasource.getDatasets().create(
                        datasetvectorInfo);
                Recordset resultDatasetRecordset = resultDataset.getRecordset(false,
                        CursorType.DYNAMIC);
        
                // 设置缓冲区分析参数
                BufferAnalystParameter bufferAnalystParam = new BufferAnalystParameter();
                bufferAnalystParam.setEndType(BufferEndType.FLAT);
                bufferAnalystParam.setLeftDistance(20);
                bufferAnalystParam.setRightDistance(20);
        
                // 为线几何对象建立缓冲区,并将分析结果存储在结果数据集中
                while (!queryRecordset.isEOF()) {
                    GeoLine geolineForBuffer = (GeoLine) queryRecordset.getGeometry();
                    GeoRegion geometryBuffer = BufferAnalystGeometry.createBuffer(
                            geolineForBuffer, bufferAnalystParam);
                    resultDatasetRecordset.addNew(geometryBuffer);
                    resultDatasetRecordset.update();
                    queryRecordset.moveNext();
        
                }
        
                // 释放占有的资源
                queryRecordset.dispose();
                resultDatasetRecordset.dispose();
                workspace.dispose();
            }
        }
        
      • createBuffer

        public static GeoRegion createBuffer(Geometry geometry,
                                             BufferAnalystParameter bufferAnalystParameter,
                                             PrjCoordSys prjCoordSys)
        根据给定的几何对象及缓冲区分析参数对象创建缓冲区。可以指定源投影坐标系。

        该方法适用于当几何对象的来源的投影坐标系的单位,与缓冲区参数中指定的缓冲区半径单位(setRadiusUnit)无法直接转换时,由用户指出源投影坐标系,以保证分析结果的正确。

        例如,几何对象 A 所属的数据集的投影坐标系为地理坐标系,为经纬度坐标,单位为度,指定分析半径单位为米,半径为 50,此时如果不指定源坐标系类型,分析的结果是以 50 度作为半径的缓冲面对象,是不满足要求的。指定了源投影坐标系后,分析时系统首先会依据源投影坐标系进行投影转换,使几何对象 A 的坐标与指定的分析半径单位一致或可以直接转换,生成缓冲区后再将结果转换到源投影坐标系。

        注意:对点或面对象进行缓冲区分析时,只能采用圆头缓冲模式,即:参数 BufferAnalystParameter 对象中的 setEndType() 方法,只能设置为BufferEndType.ROUND

        参数:
        geometry - 指定的几何对象。
        bufferAnalystParameter - 指定的缓冲区分析参数对象。
        prjCoordSys - 指定的源投影坐标系。
        返回:
        根据几何对象创建缓冲区,成功返回一个面对象,失败则返回一个空的面对象。
        示范代码:
        请参见另一重载方法 createBuffer 方法的示例。

Copyright © 2021–2024 SuperMap. All rights reserved.