linux编译gdal geos,GDAL编译支持GEOS
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相关推荐
- gdal联合编译C++版本proj.4、geos、hdf4、hdf5、netcdf
联合编译C++版本gdal编译过程文档 gdal联合编译C++版本proj.4.geos.hdf4.hdf5.netcdf 各依赖库源代码版本及下载地址 gdal Proj.4 geos HDF4 H ...
- QGIS编译(跨平台编译)之十五:geos编译(Windows、Linux、MacOS环境下编译)
目录 1.Geos介绍 2.Geos下载 3.Windows下编译 4.Linux下编译 5.MacOS下编译 1.Geos介绍 GEOS 是一个用于计算几何的 C/C++ 库,专注于 地理信息系统( ...
- 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 ...
- gdal1.6linux编译,VS2015下编译64位GDAL总结
使用VS2015编译最新的64位GDAL(最新gdal2.11),确实有一些问题,看来双方还是太新了,有点不兼容,特总结如下. 以前经常用的通过VisualStudio IDE进行编译的方式现在似乎不 ...
- win、linux环境下JAVA+GDAL部署,jar包启动,相关描述,问题解决
文章目录 windows环境下JAVA+GDAL 1.GDAL下载 2.GDAL安装(既解压后拷贝) 3.GDAL测试 4.Jar包方式运行 https://www.jianshu.com/p/6bc ...
- GDAL添加ECW格式支持
目录 GDAL添加ECW格式支持 ECW 下载ECW JPEG SDK 在Unix平台构建支持ECW的GDAL 二进制ECW SDK和GCC >= 5.1 在Linux上构建的教程 在Windo ...
- 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 ...
- linux kernel 2.6.36 编译升级
1.定制启动画面 a)linux启动画面分为两种,grub使用的背景图片,以及kernel启动时的图片(即一般在启用linux framebuffer设备时出现的小企鹅画面,一般系统有几个CPU,就会 ...
- 深入理解Linux软件包的配置、编译与安装
深入理解Linux软件包的配置.编译与安装 发布时间:2007.09.24 06:23 来源:赛迪网 作者:kit 从源代码安装过软件的朋友一定对 ./configure & ...
- linux内核设备树及编译--完整清晰
1.设备树的概念 在内核源码中,存在大量对板级细节信息描述的代码.这些代码充斥在/arch/arm/plat-xxx和/arch/arm/mach-xxx目录,对内核而言这些platform设备.re ...
最新文章
- 面试:为什么foreach中不允许对元素进行add和remove
- node-GetPOST
- C语言内存泄漏案例及解决办法
- Ubuntu 安装 Sun JDK
- Java Comparable接口的陷阱
- 关于Linux的总结(三)
- micropython编译原理_C语言嵌入式Linux高级编程第9期:CPU和操作系统入门视频课程...
- oracle 9 插入日期,oracle date日期类型 精析
- 《算法》笔记 17 - 数据压缩
- javascript 自执行匿名函数
- Python图片攻击
- 英特尔再爆重大芯片漏洞,苹果谷歌微软相继中招!
- 成为数据分析师需要具备的知识体系
- 使用ODBC API读取Decimal或者Numeric
- 推荐计算机科学类的经典书籍
- java毕业设计彩妆销售网站Mybatis+系统+数据库+调试部署
- 谷歌智能眼镜再掀数码浪潮
- 字节跳动-飞书视频-测试开发面试题
- Centos修改时间为24小时制
- 理想电流源与理想电压源
热门文章
- 加密公司如何获得硅谷传奇风投a16z的青睐
- 惊呆了,我们的加密视频教学竟然可以轻易翻录和破解!!!
- 金蝶K3 WISE 15.0客户端安装部署指南
- 工作遇到问题:通过命令如何控制程控电源的第二个通道
- 【黑苹果教程】说点闲话
- 房产中介管理系统,房产中介预约看房系统,看房预约系统毕设作品
- 大神级ppt作品欣赏_中班美术课件星空PPT课件教案图片音乐
- 如何加声调口诀_拼音声调怎么标口诀
- teamviewer 远程控制linux,Linux远程控制软件-TeamViewer
- python wmic_wmic linux python