USGS-EROS项目espa-surface-reflectance中的LaSRC Version 1.3.0模块利用vs2010编译出windows64位版本(一)

Landsat8卫星的大气校正目前国内有很多学者都在做,随便百度一下就能找到很多论文,提出的算法都有各自的亮点,学术研究上都有意义。

但是,问题来了,如果要真正拿出来处理任意一幅Landsat8的图像,具备工程化数据处理能力,且平均结果精度被广泛认可的算法程序,选哪个?

目前,我认为首选USGS-EROS项目espa-surface-reflectance中的LaSRC Version 1.3.0模块。机构够强,项目都大,Eric Vermote参与算法。额,做大气校正的都知道这个人的吧。

代码托管在git上

https://github.com/USGS-EROS/espa-surface-reflectance)。

中国人爱用windows平台,项目需求用,但LaSRC是Linux平台,由于还依赖ESPA-PRODUCT_FORMATTER算法库,其文档比较详细,相关文件, 代码等信息都在(https://github.com/USGS-EROS/espa-product-formatter),该算法库又依赖JPEG, ZLIB, TIFF, GeoTIFF, HDF4, GCTP, HDF-EOS2, XML2, JBIG, Land/water static polygon总共10个包或文件,加上代码中大量的跨平台函数替换。所以移植windows的工作我用了近一周时间。。。。

感觉有必要在这里记录一下了。

LaSRC Version 1.3.0 Release Notes

Release Date: September 2017

Downloads

LaSRC (Landsat Surface Reflectance Code) source code

git clone https://github.com/USGS-EROS/espa-surface-reflectance.git

LaSRC auxiliary files

http://edclpdsftp.cr.usgs.gov/downloads/auxiliaries/lasrc_auxiliary/lasrc_aux.2013-2017.tar.gz

See git tag [lasrc-version_1.3.0]

这里下载的辅助文件包asrc_aux.2013-2017.tar.gz90G。。。教育网渣网速下载了整整一周。。。。

 

下载espa-product-formatter,找到里面的三个c库项目:commonformat_conversion_libsio_libs。编译LaSRC只用到这三个库。

下载LaSRC,找到c库代码,在espa-surface-reflectance-master\lasrc\c_version\src文件夹下。

打开vs2010,新建一个C++空项目,把上面所有库的代码文件都添加进去。

添加include与lib:

这些库有的可以直接在官网上下载到win64位的包,有的需要自己编译,问题都不大,但调试过程中花了两天解决一个错误,最后发现是HDF4库与HDF-EOS2库版本不匹配的问题,所以强烈建议自己编译这两个库,注意编译时要include上GCTP库,官网上下载的是不包含的。。。

下面尝试生成vs2010的解决方案,遇到错误逐一该:

espa_metadata.h文件第72行代码错误int class。。。竟然还有用关键字命名变量名的。。。把class改成huclass。所有引用我都换了一遍。

Parse_matadata.c文件中第2190行,变量声明xmlAttrPtr attr;应该放到函数开头,这是标准c代码哎。

espa_matadata.c文件中第468行,变量声明与472行变量声明应该放到函数开头。

xmlAttrPtr attr;

xmlNsPtr ns = cur_node->nsDef;

Convert_espa_to_netcdf.c文件中提示NC_BYTE没有定义,原因是该文件include的头文件netcdf.h文件不完整,该文件在HDF4库里被集成的版本太老,删除该文件,从netcdf库官网上重下一个新的库,包含netcdf.h文件。新的文件近2000行,旧的才不到600行。

convert_espa_to_raw_binary_bip.c文件317行指针类型错误,在file_buf变量前加(char *),代码中这类内存申请不指明类型的情况很多,慢慢改吧。。。

Convert_espa_to_hdf.c文件84行出现未声明的标示符,自己查了一下hdfeos库的版本号,自己填了一个2.19。

snprintf 全部换成_snprintf,或者在所有头文件前加

#if_MSC_VER

#define snprintf _snprintf

#endif

write_global_attributes函数在convert_espa_to_hdf.h与convert_espa_to_netcdf.h中重定义错误。

修改其中一个的函数名称,还好该函数就调用一次,替换方便。

用的是vs2010,连roundf函数都没有。。。把所有6个调用位置换为原数加0.5直接截断取整。

get_args.c文件找不到getopt_long函数错误,将#include <getopt.h>改成#include "getopt.h",

GetOpt.h是一个GNU标准库的头文件,它包含一些从命令行上提取参数的工具用于基于文本C/C++应用程序。因为getopt.h不是ANSI C标准库的一部分,getopt必须编译到每个使用它的项目中,或者编译它倒一个静态类,显式的链接到程序中。在CodeProject网站上也提供基于C的GetOpt库实现,下载网址为:

http://www.codeproject.com/Articles/157001/Full-getopt-Port-for-Unicode-and-Multibyte-Microso

下载:

找出getopt.h、getopt.c、tailor.h三个文件添加到项目中。

编译成功:

时间: 2024-10-13 02:52:06

USGS-EROS项目espa-surface-reflectance中的LaSRC Version 1.3.0模块利用vs2010编译出windows64位版本(一)的相关文章

Unity Shaders and Effects Cookbook (7-2) Surface Shader 中实现 顶点动画

上一节中说了,在 Surface Shader 中,添加顶点函数,我们可以在 顶点函数中获取到 顶点数据,比如顶点颜色.顶点坐标等. 这一节学习获取顶点坐标,并且修改顶点坐标,来实现顶点动画. 简单介绍原理: 在顶点函数中,获取到顶点坐标 vertex,然后,求float offsetY = sin(vertex.x) ,然后将 offsetY 加到 vertex.y 上,这样就把原来的平面 ,变成了 正弦 波浪. 然后再使用之前学过的 内置变量 _Time ,算式变为 float offset

java web项目,java类中获得WEB-INF路径

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 private static String getWebInfPath() {         URL url = 当前类.class.getProtectionDomain().getCodeSource().getLocation();         String path = url.toString();         int index = pat

maven项目放入tomcat中找不到jar包

maven项目放入tomcat中时,总是报错,而且这些jar都是真实存在的,错误如下: maven eclipse tomcat java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener 解决办法:

【狂人小白】如何将Java项目发布到Maven中

将Java项目发布到Maven中 如何通过Sonatype进行发布Maven操作,并且能够在http://search.maven.org 中搜索到关键步骤:1. 申请OSS账号2. 通过gpg创建密钥3. 完善setting.xml和pom.xml4. 发布审核 A. 申请Sonatype账号 注册地址: https://issues.sonatype.org/secure/Signup!default.jspa B. 创建Issue 创建地址: https://issues.sonatype

将MyEclipse项目导入到Eclipse中

1.请首先确保你的eclipse是javaee版本的,或者已经安装wtp插件2.然后修改eclipse工程下的.project文件:3.在<natures></natures>中加入    <nature>org.eclipse.wst.common.project.facet.core.nature</nature>      <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature&

Native项目迁入React-Native过程中遇到的坑(0.4x版本)

转载请注明出处王亟亟的大牛之路 最近都在忙着搭架子,找框架,谈需求和开会.甚至都没有时间好好装逼,昨天帮安卓的小伙把项目从安卓整体迁移到了RN的项目下面,过程中遇到很多不可描述的坑,这里给大家分享下经验 先安利,安卓收纳库:https://github.com/ddwhan0123/Useful-Open-Source-Android React-Native收纳库:https://github.com/ddwhan0123/Useful-Open-Source-React-Native 由来

MyEclipse下创建的项目导入到Eclipse中详细的图文配置方法

一.情景再现. 有些人比较喜欢用Myeclipse开发,有些人却比较喜欢用eclipse开发.但是其中有一个问题,Myeclipse里面的项目导入的时候出现了一个小小的问题. 如下: 二.说明问题 导入的项目不仅包显示在外面,而且不能部署到tomcat中. 那我们需要如何的配置呢? 三.处理问题. 1.导入在MyEclipse下创建的项目 2.把项目变成Web项目,在项目上右键-->Properties-->选择Project Facets. 3. 选中红线框住的两项(java和Dynamic

Android Studio- 把项目提交到SVN中操作方法

第一步 下载SVN,下载完成之后,需要吧command line client tools点击修改安装 然后Crash Reporter点击选择取消安装 如果不进行该操作,则可能在C:\Program Files\TortoiseSVN\bin找不到svn.exe执行文件. 注意如果 你不选择 全部,比如第二条的common line client tools 则,下一步  你会找不到 svn.exe文件 第二步 打开AndroidStudio,按Ctrl+Shif+S快捷键,进入Setting

Spring mvc+ maven + MyBatis + Oracle + IDEA 项目搭建 - framework 进阶中(一)

原文链接 http://blog.csdn.net/qq184377902/article/details/51493642 结合自身情况加以修改搭建的框架,记录以防备忘,方便日后学习参考. Before building the project framework  ... 项目环境 IntelliJ IDEA 2016.1.2.JDK 1.8.0_31.Apache-maven-3.5.0.Tomcat-9.0.0.M11 Maven项目搭建 自行百度 .. Build project fr