public class BufferAnalystGeometry extends Object
限定符和类型 | 方法和说明 |
---|---|
static GeoRegion |
createBuffer(Geometry geometry,
BufferAnalystParameter bufferAnalystParameter)
根据给定的几何对象及缓冲区分析参数对象创建缓冲区。
|
static GeoRegion |
createBuffer(Geometry geometry,
BufferAnalystParameter bufferAnalystParameter,
PrjCoordSys prjCoordSys)
根据给定的几何对象及缓冲区分析参数对象创建缓冲区。
|
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(); } }
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.