1 下载GEOS源码

2 打开VS201*的命令提示工具(Visual Studio 命令提示201x)

cd 到解压的根目录:

3 执行命令:

Nmake /f makefile.vc

稍等片刻即可编译完成。

编译成功后,会在*/src目录下生成geos.lib, geos_i.lib, geos_c_i.lib, geos.dll, geos_c.dll等五个文件

4 编译GDAL

4.1 下载GDAL

4.2 修改nmake.opt

GDAL2.2.3下

64行:修改GDAL目录

599行:修改GEOS_DIR:

由于GEOS是最新版,所以目录跟默认的可能不太一样,所以修改如下:

GEOS_DIR=G:\GDAL223\geos-3.6.2.tar\geos-3.6.2

GEOS_CFLAGS = -I$(GEOS_DIR)/capi -I$(GEOS_DIR)/include -DHAVE_GEOS

GEOS_LIB = $(GEOS_DIR)/src/geos_c_i.lib

4.3 2 打开VS201*的命令提示工具(Visual Studio 命令提示201x)

cd 到GDAL源码根目录:

执行命令:

nmake /f makefile.vc

nmake /f makefile.vc install(生成bin/html/data文件夹)

namek /f makefile.vc devinstall(生成lib/include文件夹)

至此编译完成

5 测试代码

主要功能是求两个shp的交集:

if (OGRGeometryFactory::haveGEOS() == false)

{

cout << "GDAL库未包含GEOS库" << endl;

return 0;

}

// 打开栅格文件

GDALDataset* poSrcDS1 = (GDALDataset*)GDALOpenEx(pszSrc1File, GDAL_OF_VECTOR, NULL, NULL, NULL);

if (poSrcDS1 == NULL)

{

return 0;

}

OGRLayer* poLayer1 = poSrcDS1->GetLayer(0);

poLayer1->ResetReading();

OGRFeature *poFeature1 = poLayer1->GetNextFeature();

OGRGeometry *poGeometry1 = poFeature1->GetGeometryRef();

GDALDataset* poSrcDS2 = (GDALDataset*)GDALOpenEx(pszSrc21File, GDAL_OF_VECTOR, NULL, NULL, NULL);

if (poSrcDS2 == NULL)

{

return 0;

}

OGRLayer* poLayer2 = poSrcDS2->GetLayer(0);

poLayer2->ResetReading();

OGRFeature *poFeature2 = poLayer2->GetNextFeature();

OGRGeometry *poGeometry2= poFeature2->GetGeometryRef();

OGRGeometry *poGeometry3 = poGeometry1->Difference(poGeometry2);

// 创建输出矢量文件

GDALDriver *poDriver = OGRSFDriverRegistrar::GetRegistrar()->GetDriverByName("ESRI Shapefile");

if (poDriver == NULL)

{

printf("%s驱动不可用!\n", "ESRI Shapefile");

GDALClose((GDALDatasetH)poSrcDS1);

GDALClose((GDALDatasetH)poSrcDS2);

return 0;

}

//根据文件名创建输出矢量文件

GDALDataset* poDstDS = poDriver->Create(pszDstFile, 0, 0, 0, GDT_Unknown, NULL);

if (poDstDS == NULL)

{

GDALClose((GDALDatasetH)poSrcDS1);

GDALClose((GDALDatasetH)poSrcDS2);

return 0;

}

// 定义空间参考,与输入图像相同

OGRSpatialReference *poSpatialRef = new OGRSpatialReference(poSrcDS1->GetProjectionRef());

if (poSpatialRef==NULL)

{

return 0;

}

OGRLayer* poLayer = poDstDS->CreateLayer("Result", poSpatialRef, wkbPolygon, NULL);

if (poDstDS == NULL)

{

GDALClose((GDALDatasetH)poSrcDS1);

GDALClose((GDALDatasetH)poSrcDS2);

delete poSpatialRef;

poSpatialRef = NULL;

return 0;

}

OGRFeatureDefn *poDefn = poLayer->GetLayerDefn();

OGRFeature *poFeatureIntersection = OGRFeature::CreateFeature(poDefn);

poFeatureIntersection->SetGeometry(poGeometry3);

poLayer->CreateFeature(poFeatureIntersection);

OGRFeature::DestroyFeature(poFeatureIntersection);

OGRFeature::DestroyFeature(poFeature1);

OGRFeature::DestroyFeature(poFeature2);

GDALClose(poSrcDS1);

GDALClose(poSrcDS2);

GDALClose(poDstDS);

return 0;

这里面需要注意的是,获取空间参考应该改为:

OGRSpatialReference *poSpatialRef = poLayer1->GetSpatialRef();

本文结束!

xxin blog , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明GDAL编译支持GEOS!

linux编译gdal geos,GDAL编译支持GEOS相关推荐

  1. gdal联合编译C++版本proj.4、geos、hdf4、hdf5、netcdf

    联合编译C++版本gdal编译过程文档 gdal联合编译C++版本proj.4.geos.hdf4.hdf5.netcdf 各依赖库源代码版本及下载地址 gdal Proj.4 geos HDF4 H ...

  2. QGIS编译(跨平台编译)之十五:geos编译(Windows、Linux、MacOS环境下编译)

    目录 1.Geos介绍 2.Geos下载 3.Windows下编译 4.Linux下编译 5.MacOS下编译 1.Geos介绍 GEOS 是一个用于计算几何的 C/C++ 库,专注于 地理信息系统( ...

  3. mysql netcdf_gdal联合编译C++版本proj.4、geos、hdf4、hdf5、netcdf

    联合编译C++版本gdal编译过程文档 gdal联合编译C++版本proj.4.geos.hdf4.hdf5.netcdf 各依赖库源代码版本及下载地址 gdal Proj.4 geos HDF4 H ...

  4. gdal1.6linux编译,VS2015下编译64位GDAL总结

    使用VS2015编译最新的64位GDAL(最新gdal2.11),确实有一些问题,看来双方还是太新了,有点不兼容,特总结如下. 以前经常用的通过VisualStudio IDE进行编译的方式现在似乎不 ...

  5. win、linux环境下JAVA+GDAL部署,jar包启动,相关描述,问题解决

    文章目录 windows环境下JAVA+GDAL 1.GDAL下载 2.GDAL安装(既解压后拷贝) 3.GDAL测试 4.Jar包方式运行 https://www.jianshu.com/p/6bc ...

  6. GDAL添加ECW格式支持

    目录 GDAL添加ECW格式支持 ECW 下载ECW JPEG SDK 在Unix平台构建支持ECW的GDAL 二进制ECW SDK和GCC >= 5.1 在Linux上构建的教程 在Windo ...

  7. arm linux gcc 4.6.3,编译gcc-4.6.3

    编译gcc-4.6.3 准备 下载GCC 源码包 : gcc-4.6.3.tar.bz2 下载GCC 依赖包: gmp-5.0.4.tar.bz2, mpfr-3.1.0.tar.bz2 ,mpc-0 ...

  8. linux kernel 2.6.36 编译升级

    1.定制启动画面 a)linux启动画面分为两种,grub使用的背景图片,以及kernel启动时的图片(即一般在启用linux framebuffer设备时出现的小企鹅画面,一般系统有几个CPU,就会 ...

  9. 深入理解Linux软件包的配置、编译与安装

    深入理解Linux软件包的配置.编译与安装   发布时间:2007.09.24 06:23     来源:赛迪网    作者:kit 从源代码安装过软件的朋友一定对 ./configure & ...

  10. linux内核设备树及编译--完整清晰

    1.设备树的概念 在内核源码中,存在大量对板级细节信息描述的代码.这些代码充斥在/arch/arm/plat-xxx和/arch/arm/mach-xxx目录,对内核而言这些platform设备.re ...

最新文章

  1. 面试:为什么foreach中不允许对元素进行add和remove
  2. node-GetPOST
  3. C语言内存泄漏案例及解决办法
  4. Ubuntu 安装 Sun JDK
  5. Java Comparable接口的陷阱
  6. 关于Linux的总结(三)
  7. micropython编译原理_C语言嵌入式Linux高级编程第9期:CPU和操作系统入门视频课程...
  8. oracle 9 插入日期,oracle date日期类型 精析
  9. 《算法》笔记 17 - 数据压缩
  10. javascript 自执行匿名函数
  11. Python图片攻击
  12. 英特尔再爆重大芯片漏洞,苹果谷歌微软相继中招!
  13. 成为数据分析师需要具备的知识体系
  14. 使用ODBC API读取Decimal或者Numeric
  15. 推荐计算机科学类的经典书籍
  16. java毕业设计彩妆销售网站Mybatis+系统+数据库+调试部署
  17. 谷歌智能眼镜再掀数码浪潮
  18. 字节跳动-飞书视频-测试开发面试题
  19. Centos修改时间为24小时制
  20. 理想电流源与理想电压源

热门文章

  1. 加密公司如何获得硅谷传奇风投a16z的青睐
  2. 惊呆了,我们的加密视频教学竟然可以轻易翻录和破解!!!
  3. 金蝶K3 WISE 15.0客户端安装部署指南
  4. 工作遇到问题:通过命令如何控制程控电源的第二个通道
  5. 【黑苹果教程】说点闲话
  6. 房产中介管理系统,房产中介预约看房系统,看房预约系统毕设作品
  7. 大神级ppt作品欣赏_中班美术课件星空PPT课件教案图片音乐
  8. 如何加声调口诀_拼音声调怎么标口诀
  9. teamviewer 远程控制linux,Linux远程控制软件-TeamViewer
  10. python wmic_wmic linux python