【WRF工具】服务器上安装convert_geotiff

news2025/1/19 17:09:28

【WRF工具】服务器上安装convert_geotiff

  • convert_geotiff简介
  • 方法1:下载安装包后下载
    • convert_geotiff依赖库安装
      • 库1:libtiff
      • 库2:sqlite
      • 库3:curl
      • 库4:proj
      • cmake更新(可选)
      • 库5:geotiff
    • convert_geotiff库安装
    • 错误总结
  • 方法2:使用Conda进行安装
    • convert_geotiff依赖库安装
    • convert_geotiff库安装
  • 另:GeoTIFF 和标准 TIFF 文件有什么区别?
  • 参考

将 GeoTIFF 转换为标准 TIFF 文件(WRF所需的二进制文件),涉及剥离与 GeoTIFF 格式关联的地理空间元数据,需要在服务器上编译安装convert_geotiff

convert_geotiff简介

convert_geotiff依赖安装 GeoTIFF和LibTIFF,各种库的安装还是configure、make、make install这三板斧,另外在安装好相关库以后记得设置环境变量

在安装时存在依赖关系为:
在这里插入图片描述
有两种安装方式,一是老老实实安装各依赖库,二是直接利用conda完成geotiff和libtiff库的安装,随后完成convert_geotiff安装。此处推荐后者,方便快捷,何乐而不为?

方法1:下载安装包后下载

convert_geotiff依赖库安装

库1:libtiff

在Linux系统中安装libtiff库是一项常见的操作,尤其对于需要处理TIFF格式文件的用户来说,这一步是必不可少的。libtiff是一个开源的软件库,用于处理TIFF格式文件的读取和写入,许多图形处理软件和打印机驱动都会用到这个库。因此,安装libtiff库可以帮助用户更方便地处理和操作TIFF格式的文件。

方法1:安装包下载
libTIFF安装包下载路径:Index of /libtiff/

安装代码:

cd /home/wanzhou/Packages
tar -xvf tiff-4.3.0.tar.gz
cd tiff-4.3.0/
./configure --prefix=your_install_dir/tiff
./configure --prefix=$DIR/tiff
make
make check
make install

终端界面如下:

库2:sqlite

sqlite安装包下载地址:SQLite Download Page

安装代码:

tar -xvf sqlite-autoconf-3460100.tar.gz
cd sqlite-autoconf-3460100/
./configure --prefix=your_install_dir/sqlite
make
make install

库3:curl

curl安装包下载地址:curl Releases and Downloads

安装代码:

 tar -xvf curl-7.82.0.tar.gz
 cd curl-7.82.0/
 ./configure --prefix=your_install_dir/curl --without-ssl
 make
 make install

库4:proj

proj安装包下载地址:Index of /proj/

最新的9.0.0版本需要使用cmake安装的。

由于出现error: downloading ‘https://github.com/google/googletest/archive/release-1.11.0.zip’ failed错误,因此在cmake步骤中选择取消测试选项,安装方法如下:

tar -xvf proj-9.0.0.tar.gz 
cd proj-9.0.0/
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=your_install_dir/proj \
-DSQLITE3_INCLUDE_DIR=$SQLITE3_HOME/include \
-DSQLITE3_LIBRARY=$SQLITE3_HOME/lib/libsqlite3.so \
-DTIFF_INCLUDE_DIR=$TIFF_HOME/include \
-DTIFF_LIBRARY_RELEASE=$TIFF_HOME/lib/libtiff.so.5 \
-DCURL_INCLUDE_DIR=$CURL_HOME/lib \
-DCURL_INCLUDE_DIR=$CURL_HOME/lib \
-DBUILD_TESTING=OFF \
..
make
make install

其中 S Q L I T E 3 H O M E 、 SQLITE3_HOME、 SQLITE3HOMETIFF_HOME、$CURL_HOME为.bashrc环境变量中的设置量。

这里发现只有make、make install才能在指定安装目录生成lib,bin等文件夹,官网的cmake …、cmake --build .步骤则不行。

其中需要注意的是sqlite3和tiff的lib库连接需要详细到xxx.so相关库,否则会报如下错误。

cmake更新(可选)

如果在执行cmake安装中出现如下报错,则需要安装新版的cmake,若没有问题则跳过cmake的安装这一步。

CMake Error at CMakeLists.txt:12 (cmake_minimum_required):
CMake 3.9 or higher is required.  You are running version 2.8.12.2

安装包下载地址:Index of /files/v3.23

安装代码:

tar -xvf cmake-3.23.0.tar.gz 
cd cmake-3.23.0/
./configure --prefix=your_install_dir/cmake
make
make install

其中在make这一步比较长,半小时还多。安装结束后在指定安装目录下会出现:bin,doc, share这3个文件夹。

由于需要使用cmake来编译proj,需要为cmake设置好环境变量。

# 加载cmake
export CMAKE_HOME=your_install_dir/cmake
export PATH=$CMAKE_HOME/bin:$PATH

其中PATH中需要把新装的路径放在最前面,否则执行cmake还是显示原来的安装位置。

$ cmake --version
cmake version 3.23.0

库5:geotiff

geotiff包下载路径:Index of /geotiff/libgeotiff/

安装代码:

tar -xvf libgeotiff-1.7.1.tar.gz 
cd libgeotiff-1.7.1/
./configure --prefix=your_install_dir/geotiff \
--with-libtiff=your_install_dir/tiff \
--with-proj=your_install_dir/proj \
--with-zlib --with-jpeg
make
make check
make install

tips:记得把${GeoTIFF_PATH}/lib加到LD_LIBRARY_PATH,否则运行convert_geotiff找不到库

convert_geotiff库安装

convert_geotiff安装包下载地址为:openwfm/convert_geotiff

安装代码:

export CPPFLAGS="-I/your_install_dir/tiff/include -I/your_install_dir/geotiff/include"
export LDFLAGS="-L/your_install_dir/tiff/lib -L/your_install_dir/geotiff/lib"

./configure --prefix=your_install_dir/convert_geotiff
make
make install

运行成功在安装目录中会自动生成bin文件夹,其中存在convert_geotiff可执行程序

$ ./bin/convert_geotiff 
Missing FileName.
Usage: ./bin/convert_geotiff [OPTIONS] FileName

Converts geotiff file `FileName' into geogrid binary format
into the current directory.

Options:
-h         : Show this help message and exit
-c NUM     : Indicates categorical data (NUM = number of categories)
-b NUM     : Tile border width (default 3)
-w [1,2,4] : Word size in output in bytes (default 2)
-z         : Indicates unsigned data (default FALSE)
-t NUM     : Output tile size (default 100)
-s SCALE   : Scale factor in output (default 1.)
-m MISSING : Missing value in output (default 0., ignored for categorical data)
-u UNITS   : Units of the data (default "NO UNITS")
-d DESC    : Description of data set (default "NO DESCRIPTION")

将convert_geotiff加入$PATH环境变量即可随意调用了。

错误总结

  • 如果在make阶段碰到如下问题,然后打开Makefile文件,找到207行LIBS = -lgeotiff -ltiff,在后面添加-lm,接着继续运行make。
/usr/bin/ld: geogrid_tiles.o: undefined reference to symbol 'ceil@@GLIBC_2.2.5'
//usr/lib64/libm.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make: *** [convert_geotiff] Error 1
  • 如果安装结束后运行./convert_geotiff出现如下错误:
./convert_geotiff: error while loading shared libraries: libgeotiff.so.5: cannot open shared object file: No such file or directory

可能是geotiff的LD_LIBRARY_PATH环境变量设置错误,修改后再重新编译即可运行。

  • 在configure步骤,出现了如下warning,虽然也不影响最终可执行程序的编译生成和运行,就先留个坑,如果后续发生报错再回头梳理。
checking for libproj... checking whether HAVE_LIBPROJ is declared... no
configure: WARNING: libproj support is not compiled into geotiff.  convert_geotiff will not be able to work with projected files.

方法2:使用Conda进行安装

convert_geotiff依赖库安装

还可以通过conda直接安装GeoTIFF and LibTIFF

conda install -c conda-forge geotiff
conda install -c conda-forge libtiff

终端界面如下:
在这里插入图片描述
查看版本,代码如下:

conda list geotiff
conda list libtiff

查看geotiff,终端界面如下:
在这里插入图片描述
查看libtiff,终端界面如下:
在这里插入图片描述

convert_geotiff库安装

添加环境变量如下:

GeoTIFF_PATH=/home/wanzhou/miniconda3/envs/gdal
export LD_LIBRARY_PATH=${GeoTIFF_PATH}/lib:$LD_LIBRARY_PATH

编译安装convert_geotiff库:

./configure --prefix=`pwd`/build CPPFLAGS=-I${GeoTIFF_PATH}/include LDFLAGS=-L${GeoTIFF_PATH}/lib
make
make install

终端界面如下:

另:GeoTIFF 和标准 TIFF 文件有什么区别?

  • GeoTIFF 是嵌入地理空间元数据的 TIFF 文件。此元数据包括坐标系、地图投影以及将图像链接到地球上特定位置的其他数据等信息。
  • 标准 TIFF 文件只是一种图像格式,没有附加的地理空间信息。它通常用于存储光栅图形。

将 GeoTIFF 转换为标准 TIFF 通常不会影响图像的视觉质量或分辨率。转换过程仅删除地理空间元数据。

参考

1、安装convert_geotiff步骤详解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2214011.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mysql--表的约束

目录 理解表的约束和操作 如何理解? 1、空属性null 2、默认值default 3、列描述comment 4、自动填充zorefill 5、主键primary key (1)创建表时指定可以 (2)创建表后指定key (3)删除主…

Cocos Creator导出obj文件用于后端寻路

Cocos Creator 3.8.0 用这个扩展插件 【杨宗宝】两年前写的网格工具,今天将它开源了。 - Creator 3.x - Cocos中文社区carlosyzy_extensions_mesh: Cocos Creator 3.x mesh插件,负责网格数据的导出。合并,拆封等一系列操作 (gitee.com) 下…

Avalonia开发实践(四)——关于Setter优先级的问题

首先看一段样例代码&#xff1a; <StackPanel Orientation"Horizontal" Spacing"50" HorizontalAlignment"Center"><StackPanel.Styles><Style Selector"Button.default"><Setter Property"Background&quo…

健身俱乐部预约报名系统

这个是我新开发搭建的健身俱乐部行业的预约报名系统。 首页 焦点图大图展示 右侧联系栏目 关于我们 底部版权信息 在线咨询 一键拨号 添加微信 转发分享 预约来校 专业资质 室内环境相册 教练名片列表 教练名片详情 关于我 联系我 分享给好友 课程介绍 保存到通讯录 行业新闻 …

Vue3概述

1. Vue3概述 1.1 Vue3简介 2020年9月18日&#xff0c;Vue.js发布3.0版本&#xff0c;代号&#xff1a;One Piece。 1.2 vite简介 vite是新一代前端构建工具&#xff0c;官网地址&#xff1a;Vite中文网。 1.3 Vue2和Vue3区别 Vue2的API设计是Options&#xff08;配置&…

模拟设计工程师必知必会:一文讲透PLL学习重点

在模拟设计中&#xff0c;相位锁定环&#xff08;PLL&#xff09;是一种极其重要的技术。它在频率合成、时钟恢复、数据同步等多个方面发挥着关键作用。作为一名模拟设计工程师&#xff0c;对PLL的深入理解和熟练应用是必不可少的。本文将通过移知公开课《模拟设计工程师必知必…

QD1-P32 CSS 边框属性(3)padding(元素的内边距)

本节学习&#xff1a;CSS padding属性&#xff08;元素的内边距&#xff09; 本节视频 https://www.bilibili.com/video/BV1n64y1U7oj?p32 ‍ padding 属性的用途 ​​ ‍ 在CSS中&#xff0c;padding​ 属性用于设置元素内部的空间&#xff0c;即在元素内容和其边界&…

用html、css和js来实现冒泡排序

效果图如下 代码如下 <meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>冒泡排序动画</title><style>body {display: flex;flex-direction: column;justify-con…

【Redis】zset有序集合的常见命令

zset是一个有序集合&#xff0c;有着set的特点&#xff0c;还引入了排序。每个元素额外会有一个分数(score)&#xff0c;元素不可重复&#xff0c;但是分数可以重复。排序以分数为主&#xff0c;如果分数相同&#xff0c;则按元素字典序。 推荐启动服务器时使用该命令&#x…

并发编程-CompletableFuture

并发编程-CompletableFuture 本篇主要讲述 JDK1.8 里面 CompletableFuture 的原理与源码分析。这一篇暂且作为整个章节的最后一篇(若有时间继承增加关于并发编程的其他内容)。闲话少叙&#xff0c;进入正题。在深入了解 CompletableFuture 之前我们先要看一下 Future&Call…

给自己气笑了

正如你所见这是AC代码&#xff0c;我也一直坚信&#xff0c;我调了一个早上一直给我报语法错误 我今天一直在想这个问题&#xff0c;为什么会语法错误&#xff0c;我想了很多很多&#xff0c;军训的时候我一直在想这个事情。 因为我坚信我的逻辑是正确的&#xff0c;不调出来…

JFinalcms代码审计

JFinalCms是开源免费的JAVA企业网站开发建设管理系统&#xff0c;极速开发&#xff0c;动态添加字段&#xff0c;自定义标签&#xff0c;动态创建数据库表并crud数据&#xff0c;数据库备份、还原&#xff0c;动态添加站点(多站点功能)&#xff0c;一键生成模板代码。 环境布置…

管家婆-本地化-重装数据库导入数据库mdf——未来之窗数据恢复专家

一、进入数据库管理软件 二、数据附加 三、选择文件mdf 四、错误处理 关闭管家婆和数据库服务重启 五、确定文件 六、确认附加 七、替换管家婆账套 八、阿雪技术观 拥抱开源与共享&#xff0c;见证科技进步奇迹&#xff0c;畅享人类幸福时光&#xff01; 让我们积极投身于技术…

boost函数对象

文章目录 bindref函数FunctionLambda 本章介绍的是函数对象&#xff0c;可能称为’高阶函数’更为适合。 它实际上是指那些可以被传入到其它函数或是从其它函数返回的一类函数。 在C中高阶函数是被实现为函数对象的&#xff0c;所以这个标题还是有意义的。 bind 和C中的 std::…

使用Jenkins部署项目

部署中的痛点 为什么要用Jenkins&#xff1f;我说下我以前开发的痛点&#xff0c;在一些中小型企业&#xff0c;每次开发一个项目完成后&#xff0c;需要打包部署&#xff0c;可能没有专门的运维人员&#xff0c;只能开发人员去把项目打成一个exe包&#xff0c;可能这个项目已…

淘宝图片搜索商品数据api接口对接详细的描述和解释

淘宝图片搜索商品数据接口是一项高级的API服务&#xff0c;它允许用户通过上传图片来搜索淘宝上的商品。这一功能依托于先进的图像识别技术&#xff0c;通过复杂的算法对上传的图片进行分析和处理&#xff0c;从而找到与图片相似的商品。以下是对该接口的详细描述和解释&#x…

Java避坑案例 - 忽略线程重用导致信息错乱

文章目录 Pre导读问题背景问题重现存在Bug的代码BUG现象 问题分析解决方案修正后的代码修正后的现象 ThreadLocal 的正确使用小结 Pre 并发编程-11线程安全策略之线程封闭 Spring JDBC-Spring事务管理之ThreadLocal基础知识 每日一博 - ThreadLocal VS InheritableThreadLoc…

忘记7-zip文件7-zip文件,还可以解压zip文件吗?

文件压缩与解压已成为我们日常处理数据和存储信息的常规操作。7-Zip&#xff0c;作为一款开源且功能强大的文件压缩工具&#xff0c;凭借其高压缩率、支持多种格式以及免费使用的特点&#xff0c;赢得了广大用户的青睐。然而&#xff0c;出于保护文件内容安全的考虑&#xff0c…

echart 采坑记录

1、刷新数据的时候使用setOption myChart.setOption(option,true); 第二个参数为true才会刷新数据 2、react引入ehcart&#xff0c;

[C++] 红黑树的实现:原理与底层解析

文章目录 [toc] 红黑树的概念红黑树的规则红黑树如何确保最长路径不超过最短路径的2倍红黑树规则最短路径与最长路径的分析最短路径&#xff1a;全黑路径最长路径&#xff1a;红黑交替路径 结论&#xff1a;红黑树的平衡性如何保障操作效率 红黑树的实现红黑树的节点结构红黑树…