com.supermap.analyst.spatialanalyst
类 BufferAnalystGeometry

java.lang.Object
  继承者 com.supermap.analyst.spatialanalyst.BufferAnalystGeometry

public class BufferAnalystGeometry
extends java.lang.Object

几何对象缓冲区分析类。


方法摘要
static GeoRegion createBuffer(Geometry geometry, BufferAnalystParameter bufferAnalystParameter)
          根据给定的几何对象及缓冲区分析参数对象创建缓冲区。
static GeoRegion createBuffer(Geometry geometry, BufferAnalystParameter bufferAnalystParameter, PrjCoordSys prjCoordSys)
          根据给定的几何对象及缓冲区分析参数对象创建缓冲区。
 
从类 java.lang.Object 继承的方法
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

方法详细信息

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 方法的示例。