参考:
Qt + GDAL 写入矢量图层 shp
windows下的QT(mingw版)+GDAL库下载、安装、测试

已经编译好的GDAL库下载:
https://download.csdn.net/download/carry_qt/10648004

浏览shp格式的小软件:Shape Viewer
https://download.csdn.net/download/lclhurricane/2925573
https://shape-viewer.software.informer.com/
https://shapeviewer.software.informer.com/

Qt中添加GDAL库:

INCLUDEPATH += D:\GDAL\include
LIBS += -LD:\GDAL\bin -lgdal-1

位图转矢量图写入shp或json文件:

//保存json文件,pszFormat="geojson"
//保存shp文件,pszFormat="ESRI Shapefile"
int ImagePolygonize(const char * pszSrcFile,const char* pszDstFile,const char* pszFormat="geojson");  //矢量化,得到json文件int ImagePolygonize(const char * pszSrcFile,const char* pszDstFile,const char* pszFormat)
{GDALAllRegister();OGRRegisterAll();//记得添加驱动注册CPLSetConfigOption("GDAL_FILENAME_IS_UTF8","NO");GDALDataset* poSrcDS=(GDALDataset*)GDALOpen(pszSrcFile,GA_ReadOnly);if(poSrcDS==NULL){return 0;}// 创建输出矢量文件OGRSFDriver *poDriver;poDriver = OGRSFDriverRegistrar::GetRegistrar()->GetDriverByName( pszFormat );  //GTiffif (poDriver == NULL){GDALClose((GDALDatasetH)poSrcDS);return 0;}//根据文件名创建输出矢量文件OGRDataSource* poDstDS=poDriver->CreateDataSource(pszDstFile);if (poDstDS==NULL){GDALClose((GDALDatasetH)poSrcDS);return 0;}// 定义空间参考,与输入图像相同;OGRSpatialReference *poSpatialRef = new OGRSpatialReference(poSrcDS->GetProjectionRef());OGRLayer* poLayer = poDstDS->CreateLayer("Result", poSpatialRef, wkbPolygon, NULL);if (poDstDS == NULL){GDALClose((GDALDatasetH)poSrcDS);OGRDataSource::DestroyDataSource(poDstDS);delete poSpatialRef;poSpatialRef = NULL;return 0;}OGRFieldDefn ofieldDef("Segment", OFTInteger); //创建属性表,只有一个字段即“Segment”,里面保存对应的栅格的像元值poLayer->CreateField(&ofieldDef);GDALRasterBandH hSrcBand = (GDALRasterBandH) poSrcDS->GetRasterBand(1); //获取图像的第一个波段GDALPolygonize(hSrcBand, NULL, (OGRLayerH)poLayer, 0, NULL, NULL, NULL); //调用栅格矢量化GDALClose(poSrcDS); //关闭文件OGRDataSource::DestroyDataSource(poDstDS);return 1;
}

Qt(mingw)+GDAL位图转矢量图写入shp或json文件相关推荐

  1. 《JavaScript高效图形编程(修订版)》——6.2 位图、矢量图,或两者兼而有之?...

    本节书摘来自异步社区<JavaScript高效图形编程(修订版)>一书中的第6章,第6.2节,作者:[美]Raffaele Cecco著,更多章节内容可以访问云栖社区"异步社区& ...

  2. c#位图转换未矢量图_PS基础:像素与分辨率,位图与矢量图

    一.像素与分辨率 1. 像素 定义:图像中的最小颜色单位,是一个非常小的方形颜色块. 像素(Pixel)一般用px表示,每个像素只能有一个颜色. 将图像无限放大,会发现图像是由许多色彩相近的颜色方块组 ...

  3. 转载:位图和矢量图的区别

    原文链接:位图和矢量图的区别 位图和矢量图是计算机图形中的两大概念,这两种图形都被广泛应用到出版,印刷,互联网[如flash和svg]等各个方面,他们各有优缺点,两者各自的好处几乎是无法相互替代的,所 ...

  4. 怎么把word里面的彩色图转化为灰度图,直接在word里面操作,无需转其他软件,超简单!(位图和矢量图都可以)

    怎么把word里面的彩色图转化为灰度图,直接在word里面操作,无需转其他软件,超简单!(位图和矢量图都可以) Microsoft Office Word是微软公司的一个文字处理器应用程序.它最初是由 ...

  5. 游戏中的图像资源(位图与矢量图比较)

    当今游戏早已不再是黑白机的时代,游戏都由色彩丰富.精致的图像,流畅的动画构成.Flash游戏也不例外,Flash既支持矢量图又支持位图,他们各有优缺点.本文的目的即是介绍何时使用矢量图,何时使用位图, ...

  6. 位图和矢量图谁的色彩更丰富_更少的更多色彩

    位图和矢量图谁的色彩更丰富 It's simple to compute data and perform calculations directly in your stylesheet using ...

  7. 透彻理解位图与矢量图的本质区别(小包子觉得讲的很清晰)

    其实每个人都能轻松而透彻地理解位图与矢量图的本质区别 位图与矢量图的区别(为什么要再进行解释)      播放录像时按空格键暂停/继续播放 (关于位图与矢量图的区别,各种教材和网上解释的有很多,但是本 ...

  8. android 笔记 --- 位图和矢量图区别

    位图和矢量图是计算机图形中的两大概念,这两种图形都被广泛应用到出版,印刷,互联网[如flash和svg]等各个方面,他们各有优缺点,两者各自的好处几乎是无法相互替代的,所以,长久以来,矢量跟位图在应用 ...

  9. SVG实例详解系列(一)(svg概述、位图和矢量图区别(图解)、SVG应用实例)

    SVG实例详解系列(一) (svg概述.位图和矢量图区别(图解).SVG应用实例) 目录 一.什么是SVG? (1).位图和矢量图概念(图解) (2).SVG的小例子 (a)笑脸符 (b).小鸟 (c ...

最新文章

  1. Windows启动exe应用程序,无法正常启动(0xc000007b)的解决办法
  2. PTA基础编程题目集-7-3 逆序的三位数
  3. socket.io实现在线群聊
  4. 把成员函数转换为函数的代码。
  5. 对偶问题复习要点整理
  6. sigmastarSSD201/SSD202 github上开源了!
  7. Android之webview背景设置为透明无效
  8. Linux为什么受欢迎?
  9. CSS3动画 - 图片开关灯阴影动画
  10. jquery点击按钮显示和隐藏div
  11. 《html5 从入门到精通》读书笔记(三)
  12. Hive表中修改列位置,更改类型、移动位置(impala支不支持更改位置)
  13. 动态添加新元素事件无法触发解决方法
  14. anr产生的原理如何避免(android)
  15. objective-c 编程总结(第一篇)字符串操作
  16. CentOS 7.6 vi编辑器常用命令详解
  17. Windows 使用命令行查看 wifi 密码
  18. docker 安装snipe-it
  19. java mail 20m附件_Gmail的最大附件调整到20M了
  20. LDU暑假集训(十)1209 Problem I NEW RDSP MODE I

热门文章

  1. 模型的“参数”与“超参数”
  2. C语言:数据文件操作
  3. js中类似`${xx,xxxy}`的语句
  4. python 识图点击_Python图片识别找坐标(appium通过识别图片点击坐标)
  5. 怎样区分细菌性和病毒性感冒
  6. Javascript函数小案例--《找质数》
  7. 生活中的法则II(转载)
  8. qlikview连接数据库
  9. PowerSI提取S参数(插损、回损、串扰分析)
  10. 【Git】从安装配置到简单使用