GDAL栅格矢量化
在这里主要提供直接能用的栅格矢量化代码,这个函数中路径输入为QStrng,如果是其他类型的,请直接转成const char *;
bool Polygonize(const QString& strImg, const QString& strShp)
{
GDALDataset *poFlagDS = (GDALDataset *)GDALOpen(strImg.toUtf8().constData(),GA_ReadOnly);
if (poFlagDS == NULL)
{
cout<<"can't open "+ strImg.toStdString();
return false;
} GDALDriver * poOgrDriver = OGRSFDriverRegistrar::GetRegistrar()->GetDriverByName("ESRI Shapefile");
if (poOgrDriver == NULL)
{
cout<<"can't get driver";
GDALClose(poFlagDS);
return false;
} QFileInfo info(strShp);
if (info.exists())
poOgrDriver->Delete(strShp.toUtf8().constData()); GDALDataset* poDstDataset = poOgrDriver->Create(strShp.toUtf8().constData(),,,,GDT_Unknown,NULL);
if (poDstDataset == NULL)
{
GDALClose(poFlagDS);
return false;
} OGRSpatialReference* pSpecialReference = new OGRSpatialReference(poFlagDS->GetProjectionRef());
const char* layerName = "polygon";
OGRLayer* poLayer = poDstDataset->CreateLayer(layerName,pSpecialReference,wkbPolygon,);
if (poLayer == NULL)
{
cout<<"can't create layer";
GDALClose(poFlagDS);
GDALClose( poDstDataset );
return false;
} OGRFieldDefn ofDef_DN( LABELFIELD, OFTInteger );
if ( (poLayer->CreateField(&ofDef_DN) != OGRERR_NONE) )
{
cout<<"can't create field";
GDALClose(poFlagDS);
GDALClose( poDstDataset );
return false;
} char** papszOptions = NULL;
papszOptions = CSLSetNameValue(papszOptions,"8CONNECTED","");
GDALRasterBand *poFlagBand = poFlagDS->GetRasterBand();
GDALRasterBand *poMaskBand = poFlagBand->GetMaskBand();
CPLErr err = GDALPolygonize((GDALRasterBandH)poFlagBand,(GDALRasterBandH)poMaskBand,(OGRLayerH)poLayer,,papszOptions,,);
if (err != CE_None)
{
cout<<"polygonize failed";
GDALClose(poFlagDS);
GDALClose( poDstDataset ); return false;
}
GDALClose(poFlagDS);
GDALClose(poDstDataset);
return true;
}
GDAL栅格矢量化的更多相关文章
- 转:如何在ArcMap下将栅格图象矢量化的基本步骤 (对影像的校准和配准、栅格图象矢量化)
矢量对象是以矢量的形式,即用方向和大小来综合表示目标的形式描述的对象.例如画面上的一段直线,一个矩形,一个点,一个圆,一个填充的封闭区域--等等. 矢量图形文件就是由这些矢量对象组合而成的描述性文件. ...
- 矢量化的HTML5拓扑图形组件设计
HT一直被客户称道的就是其全矢量化的设计特色,矢量相比传统图片好处太多了: www.hightopo.com/guide/guide/core/vector/ht-vector-guide.html ...
- 基于颜色的R2V软件快速矢量化
跟同学一起做SRTP,矢量化,作图的工作点名让我去做,人家说,谁让你是学地理信息的呢?哎,什么时候地理信息不再被别人当成制图画图的,我们专业就有希望了. 话虽然这么说,但工作还是要去做. (进入正题) ...
- 编译器优化:何为SLP矢量化
摘要:SLP矢量化的目标是将相似的独立指令组合成向量指令,内存访问.算术运算.比较运算.PHI节点都可以使用这种技术进行矢量化. 本文分享自华为云社区<编译器优化那些事儿(1):SLP矢量化介绍 ...
- Atitit 图像处理Depixelizing Pixel Art像素风格画的矢量化
Atitit 图像处理Depixelizing Pixel Art像素风格画的矢量化 在去年的时候,偶然看到hqx算法. 一个高质量的插值放大算法. 与双线性插值等插值算法相比,这个算法放大后对人眼 ...
- 【GDAL】GDAL栅格数据结构学习笔记(一): 关于Metadata
在维护一段代码时看到前任程序员写的获取栅格数据的CellSize的功能,竟然在知道GDAL的情况下去调用AE的接口来解算,觉得费解. 原来的思路是使用AE的Raster对象读取出Raster的文件大小 ...
- HTML5中地图矢量化
我们可以获取canvas对象为var c=document.getElementById("myCanvas");其应有js属性方法如下列举:1:绘制渲染对象, c.getCont ...
- PIE SDK栅格矢量化算法
1.算法功能简介 栅格数据矢量化较为复杂,如果由一幅扫描的数字化地图来建立矢量数据库,则需要经过数字图象处理,如边缘增强.细化.二值化.特征提取及模式识别才能获得矢量数据.人们通常将多色地图分色后逐个 ...
- gdal的矢量栅格化接口GDALRasterizeLayers使用(一)
作者:朱金灿 来源:http://blog.csdn.net/clever101 gdal库提供了一个矢量栅格化接口函数GDALRasterizeLayers.今天让我们学习一下这个接口函数的使用.该 ...
随机推荐
- js将伪数组转换为标准数组的多种方法
在js中,数组是特殊的对象,凡是对象有的性质,数组都有,数组表示有序数据的集合,而对象表示无序数据的集合. 那伪数组是什么呢,当然它也是对象,伪数组一般具有以下特点: 按索引方式存储数据: 具有len ...
- 选题 Scrum立会报告+燃尽图 06
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/8678 一.小组情况组长:贺敬文组员:彭思雨 王志文 位军营 杨萍队名:胜 ...
- Java JDBC 基础
JDBC API 包含以下几个核心部分: 1:JDBC 驱动 2:Connections (连接) 3:Statements (声明) 4:Result Sets (结果集) JDBC: 打开数据库连 ...
- 国际标准 ISO 15008
Road vehicles — Ergonomic aspects of transport information and control systems — Specifications and ...
- DPI的理解
DPI(Dots Per Inch,每英寸点数)是一个量度单位,用于点阵数码影像,指每一英寸长度中,取样.可显示或输出点的数目. DPI是打印机.鼠标等设备分辨率的度量单位.是衡量打印机打印精度的主要 ...
- 开源控件slidingmenu的使用
在github.com网站搜索slidingmenu后https://github.com/jfeinstein10/SlidingMenu 下载demo,导入library到你的项目中,添加到你项目 ...
- 【10】css设置文字不换行,超过的部分用“...”代替
设置文字不换行,超过的部分用“...”代替 overflow: hidden; text-overflow: ellipsis; white-space: nowrap; width: 210 ...
- 阶段3 2.Spring_03.Spring的 IOC 和 DI_9 spring的依赖注入
新建工程 改成jar包 加入spring的依赖 复制之前的工程代码 再复制配置文件 fac factory整个删除 构造函数也删除.删除后的代码.如下 配置文件中的注释都删除掉 spring中的依赖注 ...
- Java学习之==>注解
一.概述 关于注解,首先引入官方文档的一句话:Java 注解用于为 Java 代码提供元数据.作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的.接下我将从注解的定义. ...
- rhel安装ambari
RHEL/CentOS/Oracle Linux 6 On a server host that has Internet access, use a command line editor to p ...