Qgis开发10-缓冲区分析
目录
Qgis开发-缓冲区分析
2014年8月25日
1 概述
缓冲区是指以几何实体为基础,以一定的半径在周围建立起的多边形。用于与周边地物叠加,解决邻近相关性问题。
参考:http://baike.baidu.com/view/1514858.htm
2 原理
缓冲区以给定的几何实现边界,向周围扩展指定的范围大小,从而形成缓冲区多边形。此多边形表示当前图形的邻近范围,与其它图形进行分析,可以解决邻近性问题。
3 方法
所有的几何操作都在QgsGeometry中进行。缓冲区只是其中一个部分。
缓冲区分析为QgsGeometry::buffer():可以指定相应的参数和样式等。返回结果为缓冲后的多边形。
如果进行dissolve,则会合并属性,否则,只是进行几何操作。
4 示例
1) 添加相应的action和界面元素
2) 声明SLOT函数
//xx.h
voidbuffer(void);
3) 连接action的Signal和SLOT
//xx.cpp
connect(ui->actionBuffer,SIGNAL(triggered()),this,SLOT(buffer()));
4) 实现SLOT函数
//xx.cpp
/**
*@briefMainWindow::buffer
*
*buffer.
*@authorsf2gis@163.com
*@date2014-08-2617:19:37
*/
voidMainWindow::buffer()
{
QgsVectorLayer*pVectorLayer=(QgsVectorLayer*)m_pMapCanvas->currentLayer();
QgsFeatureIteratorfeatureIt=pVectorLayer->getFeatures();
featureIt.rewind();
QgsFeatureIdsids;
QgsFeaturef;
while(featureIt.nextFeature(f))
{
constQgsFields*pFields=f.fields();
ids<<f.id();
for(inti=0;i<pFields->size();++i){
qDebug()<<“Feild[“<<i<<“]=”<<pFields->at(i).name()<<endl;
qDebug()<<“Attribute[“<<i<<“]=”<<f.attribute(i).toString()<<endl;
}
QgsGeometry*pGeo=f.geometry();
QgsGeometry*pBuffer=pGeo->buffer(0.1,5);
QgsRubberBand*pRubberBuffer=
newQgsRubberBand(m_pMapCanvas,pBuffer->type());
pRubberBuffer->addGeometry(pBuffer,NULL);
pRubberBuffer->setColor(QColor(0,255,0));
pRubberBuffer->setWidth(2);
pRubberBuffer->setActive(true);
return;
}
}
转载自:https://blog.csdn.net/sf2gis2/article/details/39649565