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.今天让我们学习一下这个接口函数的使用.该 ...
随机推荐
- linux设置MySQL开机自动启动
step1: 通过chkconfig --list命令查看mysqld是否在列表中: step2: 如果列表中没有mysqld这个,需要先用这个命令添加:chkconfig --add mysqld ...
- MSO Transponder 页面开发思路
1. 确定Transponder开发页面分类,定义负责模块 2. 定义模块页面布局 3. 选择页面各数据对应的控件类型 4. 选定控件对应set/get所用方式 快捷键链接设置: http://www ...
- Java反序列化与远程代码执行
https://mp.weixin.qq.com/s/asQIIF8NI_wvur0U0jNvGw 原创: feng 唯品会安全应急响应中心 2017-09-19 https://mp.weixin. ...
- java 设计模式 单例模式之饿汉模式/懒汉模式 singleton pattern
https://v.qq.com/x/page/e0364ung5zp.html 讲的不错, 关于 饿汉式单例模式 code Student 类: package com.test;//单例模式之 ...
- AndroidStudio 插件 之 Findbugs 安装与简单使用教程
http://blog.csdn.net/u013132758/article/details/70187846 http://blog.csdn.net/jdsjlzx/article/detail ...
- 内网每一台电脑的外网ip是一样吗
内网每一台电脑上网的IP地址是一样的,因为公网地址的稀缺性,所以内部上网是通过映射或者说叫端口复用将内部私有地址转换为公有地址进行上网的. 公有地址就是网关设备出口的地址,也可以说是路由器的出口地址, ...
- ControlTemplate in WPF —— Window
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" x ...
- prism 4 模块配置 管理
本章导读: 第四章讲述了模块化应用程序开发中模块的生命周期,生成方法,实例引用的存活时间等关键内容,和经常会应用到的包含定义模块在内的7种场景(以Unity为例,也说明了MEF与Unity中可能不同的 ...
- abap seach help 搜索帮助
ABAP 的搜索帮助有很多种方法,掌握下面的几种基本差不多了 *&--------------------------------------------------------------- ...
- Centos Linux release 7.2.15ll (core) yum 安装java环境
系统版本 [root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) #安装之前先查看一下有无系统 ...