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 ...
随机推荐
- @RestController无法自动注入的问题
今天在练习spring boot的时候,发现在ide中无法将@RestController注入到代码中,@RestController注解依赖的包是org.springframework.web,检 ...
- Shiro从数据表中初始化资源和权限
之前在测试的Web工程下,我们在applicationContext.xml中配置了shiroFilter资源拦截器信息: <bean id="shiroFilter" cl ...
- VC++抛出自定义编译期异常的指令
#error 即可, 抛出消息是 #pragma message 最新的还有static_assert有一些用 一下子忘了网上居然搜不到...尝试了 关键字vc++.vc.vs.msvc + 抛出编 ...
- php生成唯一识别码uuid
/*生成唯一标志*标准的UUID格式为:xxxxxxxx-xxxx-xxxx-xxxxxx-xxxxxxxxxx(8-4-4-4-12)*/ function uuid() { $chars = md ...
- 【UOJ139】【UER #4】被删除的黑白树
题意: 很久很久以前,有一棵树加入了 UOJ 群. 这天,在它讨论“一棵树应该怎么旋转”的时候一不小心被删除了,变成了被删除的树. 突然间,它突然发现它失去了颜色,变成了一棵纯白的树.这让它感觉很焦躁 ...
- vue项目优化--使用CDN和Gzip
使用vue-cli构建的vue项目,在打包发布的时候,发现打包后的文件体积很大,使用webpack-bundle-analyzer分析后,发现占用空间最多的是引用的第三方依赖.第三方的依赖文件可以使用 ...
- OOP面向对象 三大特征 继承封装多态
OOP面向对象 ----三大特征 继承封装多态 面向对象(Object Oriented,OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面.应用结构 ...
- 使用postman 测试restful接口
前提: 在chrome网上应用商店安装postman 和 Postman Interceptor. 如下图: 使用postman的时候,最后开启postman Interceptor,如下图: 然后启 ...
- [HTML5] Handle Offscreen Accessibility
Sometime when some component is offscreen, but still get focus when we tab though the page. This can ...
- 移植MonkeyRunner的图片对照和获取子图功能的实现-Appium篇
假设你的目标測试app有非常多imageview组成的话,这个时候monkeyrunner的截图比較功能就体现出来了. 而其它几个流行的框架如Robotium,UIAutomator以及Appium都 ...