gdal集成kml库的做法
作者:朱金灿
来源:http://blog.csdn.net/clever101
最近要读取kml文件,具体就是把kml文件当作一个矢量文件来读取。我发现gdal是支持集成kml库的。不过集成这个kml库的地方有点复杂。下面作一个详细的说明。
首先要libkml和expat这两个库,具体是修改gdal源码根目录下的nmake.opt,将EXPAT_DIR放在LIBKML_DIR的前面(为了确保EXPAT_LIB能被LIBKML_LIBS识别),具体修改如下:
# Uncomment for Expat support (required for KML, GPX and GeoRSS read support).
EXPAT_DIR = $(THIRD_PARTY)/expat_2_1_0_vc9
EXPAT_INCLUDE = -I$(EXPAT_DIR)/include
!IFDEF DEBUG
EXPAT_LIB = $(THIRD_PARTY)/expat_2_1_0_vc9/lib/libexpatD.lib
!ELSE
EXPAT_LIB = $(THIRD_PARTY)/expat_2_1_0_vc9/lib/libexpat.lib
!ENDIF
LIBKML_DIR的设置修改如下:
# Uncomment out the following lines to enable LibKML support.
LIBKML_DIR = $(THIRD_PARTY)/libkml_1_3_0_vc9
LIBKML_INCLUDE = -I$(LIBKML_DIR)/include -I$(THIRD_PARTY)/boost_1_42_vc9/include
LIBKML_LIBRARY = $(LIBKML_DIR)/lib
LIBKML_LIBS = $(LIBKML_LIBRARY)/libkmlbase.lib \
$(LIBKML_LIBRARY)/libkmlconvenience.lib \
$(LIBKML_LIBRARY)/libkmldom.lib \
$(LIBKML_LIBRARY)/libkmlengine.lib \
$(LIBKML_LIBRARY)/libkmlregionator.lib \
$(LIBKML_LIBRARY)/libkmlxsd.lib \
$(THIRD_PARTY)/minizip_vc9/lib/minizip_static.lib \
$(EXPAT_LIB) \
$(THIRD_PARTY)/uriparser_0_7_5_vc9/lib/uriparser.lib \
# $(LIBKML_DIR)/third_party\zlib-1.2.3.win32/lib/minizip.lib \
$(THIRD_PARTY)/zlib_1_2_3_vc9/lib/libzlib_vc9_1_2_3.lib
可以除了kml本身的库外,还要添加minizip库、expat库、boost库和zip库。
这样就能将kml库集成进来。还有一点需要注意的是,我发现kml并不支持传统的shp文件的矢量类型,因此要重载kml图层类的GetGeomType接口(将kml类型转换为传统的shp的矢量类型),这个接口的实现代码如下:
OGRwkbGeometryType OGRLIBKMLLayer::GetGeomType()
{
OGRwkbGeometryType eType = wkbUnknown;
OGRFeature* pFeature = NULL;
ResetReading();
pFeature = GetNextFeature();
if (pFeature != NULL)
{
OGRGeometry* pGeometry = pFeature->GetGeometryRef();
if (pGeometry != NULL)
{
eType = pGeometry->getGeometryType();
}
}
m_poOgrFeatureDefn->SetGeomType(eType);
return eType;
}
gdal集成kml库的做法的更多相关文章
- gdal库集成MrSID库的做法
作者:朱金灿 来源:http://blog.csdn.net/clever101 首先从Lizardtech网站:http://www.lizardtech.com/download/develope ...
- GDAL集成对KML文件的支持
目录 1. 正文 1.1. 编译LibKML 1.1.1. 第三方库支持 1.1.2. 编译错误 1.2. 配置GDAL 1.3. 链接问题 2. 参考 1. 正文 GDAL可以支持将KML作为矢量文 ...
- GDAL集成GEOS
因为要用到缓冲区分析,在使用Buffer的时候提示:ERROR 6: GEOS support not enabled,查了一下资料需要集成GEOS库.因为GDLA默认编译是没有集成GEOS库的. 现 ...
- Android中集成第三方库的方法和问题
Android中集成第三方库的方法和问题 声明: 1. 本文參考了网上同学们的现有成果,在此表示感谢,參考资料在文后有链接. 2. 本文的重点在第三部分,是在开发中遇到的问题及解决的方法.第一,第二部 ...
- 【翻译】在Ext JS集成第三方库
原文地址:http://www.sencha.com/blog/integrating-ext-js-with-3rd-party-libraries/ 作者:Kevin Kazmierczak Ke ...
- cocoapods集成三方库遇到的坑
什么都不想说直接上图 这是最近在管理三方库时遇到头疼的问题,刚开始一直怀疑是cocoapods或者ruby的版本问题但是升级到最新版还是同样的错误,后来又怀疑是资源文件的问题但是在同一时间不同地点集成 ...
- 使用 Swift Package Manager 集成依赖库
本文首发于 Ficow Shen's Blog,原文地址: 使用 Swift Package Manager 集成依赖库. 内容概览 前言 添加依赖包 在项目中使用依赖 管理已导入的依赖 在团 ...
- Vue3学习(五)之集成HTTP库axios
一.安装axios npm install axios@0.21.0 --save 二.axios的使用 1.在主页中引用axios 在Vue3新增了setup初始化方法,所以我们在这里开始使用并测试 ...
- 解决gdal集成libkml的链接错误
作者:朱金灿 来源:http://blog.csdn.net/clever101 gdal库在集成libkml出现一些链接错误: 1>libkmldomD.lib(kml_factory.obj ...
随机推荐
- App测试- adb monkey测试
一. 安装和配置SDK 1. 下载Android SDK并解压.如下图:(如果不存在tool和platform_tool,请点击SDK Manager在线下载和更新) 2.下载完成后,配置SDK环境变 ...
- 将数据库返回的ResultSett转换成List装Map形式的方法(ResultSetToList)
多时候想做一些关于数据库实验,如果先搭建框架太麻烦,直接得到ResultSet处理起来取值什么的也很繁琐,为此我做了一个将ResultSet转换成List<Map<String,Objec ...
- python入门基础知识
1.python环境的安装 python2 python3 安装后添加环境变量 2.编码 最早编码ASCII码,主要有英文,数字,字符.一字节(byte),八位(bit),代表一个字符 unicode ...
- 熟悉VS2017 和Github 第二次作业
GIT地址 https://github.com/Astone1213 GIT用户名 Astone1213 学号后五位 62114 博客地址 https://www.cnblogs.com/AsL ...
- 远程连接windows出现身份验证错误,提示"由于CredSSP加密Oracle修正"解决方案
本机操作系统(OS版本:10.0.17134) 远程计算机操作系统(OS版本:6.3.9600) 远程连接的时候报错“出现身份验证错误,要求的函数不受支持.远程计算机:xxx 这可能是由于CredSS ...
- GDI 直线和折线(6)
设置开始点 MoveToEx 函数用于移动画笔到指定的位置: BOOL MoveToEx( HDC hdc, // 设备环境句柄 int X, // 要移动到的 x 坐标 int Y, // 要移动到 ...
- laravel使用JWT做API认证
最近项目做API认证,最终技术选型决定使用JWT,项目框架使用的是laravel,laravel使用JWT有比较方便使用的开源包:jwt-auth.php 后端实现JWT认证方法 使用composer ...
- python初学者学习笔记
python开发: a.Python基础 b.网络编程 c.web框架 —用于写网站 d.设计阶段+算法 e.项目阶段 开发: 开发语言:高级语言:python/Java/PHP/C#/Go/ruby ...
- Ubuntu双系统后时间不对解决方案
先在ubuntu下更新一下时间,确保时间无误 sudo apt install ntpdate sudo ntpdate time.windows.com 然后将时间更新到硬件上 sudo hwclo ...
- position:fixed div如何居中
div{position:fixed;margin:auto;left:0; right:0; top:0; bottom:0;width:200px; height:150px;}