GDAL Unable to open EPSG support file gcs.csv

python环境从3.6升级到3.7,gdal版本从2.2.4升级到3.4.1之后,执行原来的gdal脚本,结果报出如下错误

”ERROR 4: Unable to open EPSG support file gcs.csv. Try setting the GDAL_DATA environment variable to point to the directory containing EPSG csv files.“。

但是奇怪的是,跑出来的结果是对的。网上查了很多方法,比如设置GDAL_DATA之类的。但是我设置了之后没啥效果。

搜索了服务器上"gcs.csv",发现压根就没这个文件。

[root@1279f6fff648 project]# gdal-config --datadir

/root/miniconda3/share/gdal

[root@1279f6fff648 project]# cd /root/miniconda3/share/gdal[root@1279f6fff648 gdal]# ls

难道gdal版本更新的过程中移除掉了这个文件?

答案确实是这样。原来gdal从2.5版本开始就将gcs.csv文件移除掉了。确切的说是proj4升级到proj6的过程中,proj6对坐标系统进行了整合,将此类信息都存储到了SQLite数据库(proj.db)中去。因此gdal也就不再存在gcs.csv文件了。

参考:

Can't find gcs.csv since release 2.4 · Issue #1471 · OSGeo/gdal · GitHub

https://trac.osgeo.org/gdal/wiki/rfc73_proj6_wkt2_srsbarn

(二)程序在GCS.csv中找不到对应的EPSG代码。

融合长势V21生产系统报出如下的错误信息。

其原因是生产系统的中有个可执行程序是基于gdal2.x版本开发编译而成的,而生产系统的环境安装的gdal版本是3.4.1。

gcs.csv文件以文本的形式记录了epsg收录的空间参考的信息。gdal在执行坐标转换、影像文件输出等操作时会读取该文件以获取空间参考信息。在gdal2版本中是有个gcs.csv这个文件的,它一般存在于gdal的安装路径.../share/gdal(如本机的路径为/root/miniconda3/share/gdal,gdal会根据GDAL_DATA这个环境变量默认读取这个路径)中。但是在gdal3版本中将这个文件取消了,取而代之的是通过本地数据库的形式记录空间参考信息。一旦报出找不到gcs.csv这种错误,可以在网上找到匹配版本的gcs.csv文件,将其拷贝到这个位置上去,使可执行程序在执行的过程中能够读取到这个文件。解决了打不开gcs.csv文件的错误,有时候会报出找不到EPSG代码的错误。比如UTM投影的代码32650,是在gcs.csv中找不到的。但是最终的结果并没有收到影响,可以忽略掉该错误或警告。

gsv.csv文件示例

"COORD_REF_SYS_CODE","COORD_REF_SYS_NAME","DATUM_CODE","DATUM_NAME","GREENWICH_DATUM","UOM_CODE","ELLIPSOID_CODE","PRIME_MERIDIAN_CODE","SHOW_CRS","DEPRECATED","COORD_SYS_CODE","COORD_OP_CODE","COORD_OP_CODE_MULTI","COORD_OP_METHOD_CODE","DX","DY","DZ","RX","RY","RZ","DS" 3819,HD1909,1024,Hungarian Datum 1909,1024,9122,7004,8901,1,0,6422,3817,0,9607,595.48,121.69,515.35,-4.115,2.9383,-0.853,-3.408 3821,TWD67,1025,Taiwan Datum 1967,1025,9122,7050,8901,1,0,6422,,0,,,,,,,, 3824,TWD97,1026,Taiwan Datum 1997,1026,9122,7019,8901,1,0,6422,3830,0,9603,0,0,0,,,, 3889,IGRS,1029,Iraqi Geospatial Reference System,1029,9122,7019,8901,1,0,6422,3894,0,9603,0,0,0,,,,

gsv.csv文件截图

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

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

相关文章

Win10 QT 配置Android开发环境-jdk/sdk/gradle

原文链接:QT 配置Android开发环境-jdk/sdk/gradle 可用配置: QT-6.5.36.6.3 ndk-25.X 内置sdk 自动下载的api 和build tools platform tools gradle-只能要什么版本下什么 总之一句话:出现问题直接换QT 前言 QT开发android是可行的,QT拥有非常强的跨平台能力,能使…

python画图|自制渐变柱状图

在前述学习过程中,我们已经通过官网学习了如何绘制渐变的柱状图及其背景。 掌握一门技能的最佳检验方式就是通过实战,因此,本文尝试做一些渐变设计。 前述学习记录可查看链接: Python画图|渐变背景-CSDN博客 【1】柱状图渐变 …

AI产品经理PRD文档与传统产品经理PRD有什么不同呢?

目录 模型输出:说白了,就是你的AI要干啥数据接入:你的AI要吃啥“粮食”验收标准:怎么判断你的AI干得好不好经验总结 你好,我是三桥君 在工作中,当我作为传统产品经理时,通常只需提供产品需求文…

【内网渗透】最保姆级的春秋云镜Flarum打靶笔记

目录 flag1 flag3 flag4​ flag2 flag1 扫外网 打的是flarum论坛,p牛之前有写过phar反序列化的利用: 从偶遇Flarum开始的RCE之旅 rockyou.txt爆出administrator/1chris,登录 用这个工具生成phar包 https://github.com/ambionics/p…

面试经验分享

作为一个面试过别人很多次,同时自己也面试过很多次的人,今天来给大家分享一些踩雷的经验 1.面试地点,有人会问了为啥上来就分享面试地点尼,因为面试地点就决定了你的工作位置, 你不可能说当个工厂IT,但是…

详解mysql和消息队列数据一致性问题

目录 前言 保持系统数据同步(双写问题) 消息队列消息丢失的问题 总结 前言 在当今互联网飞速发展的时代,随着业务复杂性的不断增加,消息队列作为一种重要的技术手段,越来越多地被应用于各种场景。它们不仅能有效解…

项目:微服务即时通讯系统客户端(基于C++QT)]四,中间界面搭建和逻辑准备

四,中间界面搭建 前言:当项目越来越复杂的时候,或许画草图是非常好的选择 一,初始化中间窗口initMidWindow void mainWidget::initMidWindow() {//使用网格布局进行管理QGridLayout* layout new QGridLayout();//距离上方 20px 的距离&…

Unity3D Compute Shader同步详解

在Unity3D中,Compute Shader是一种强大的工具,它利用GPU的并行处理能力来执行复杂的计算任务,从而减轻CPU的负担,提高游戏的性能和效率。然而,由于GPU的工作方式,对共享资源的访问需要特别注意同步问题&…

Arthas redefine(加载外部的.class文件,redefine到JVM里 )

文章目录 二、命令列表2.2 class/classloader相关命令2.2.3 redefine(加载外部的.class文件,redefine到JVM里 )举例1:加载新的代码,jad/mc 命令使用举例2:上传 .class 文件到服务器的技巧 本人其他相关文章…

值传递和引用传递

值传递和引用传递是函数参数传递的两种类型,一般而言,基本数据类型都是值传递,数组和对象采用引用传递减少对象复制开销,但也有特例。 值和引用传递本质一样 值传递是拷贝值到函数参数,引用传递是拷贝引用(或者对象的指…

矿石运输船数据集、散货船数据集、普通货船数据集、集装箱船数据集、渔船数据集以及客船数据集

海船:用于船只检测的大规模精准标注数据集 我们很高兴地介绍一个新的大规模数据集——海船,该数据集专为训练和评估船只目标检测算法而设计。目前,这个数据集包含31,455张图像,并涵盖了六种常见的船只类型,包括矿石运…

Python基础语句教学

Python是一种高级的编程语言,由Guido van Rossum于1991年创建。它以简单易读的语法和强大的功能而闻名,被广泛用于科学计算、Web开发、数据分析等领域。 Python的应用领域广泛,可以用于开发桌面应用程序、Web应用、游戏、数据分析、人工智能等…

react项目中引入最新版本eslint

目的 我们讲eslint引入项目,无非就是让我们在写代码的过程当中,可以给我们一些友好的提示,来检查我们代码的书写合理性,以及一些代码书写习惯的统一;最新版本9.x以上的eslint适配我们的项目 安装 # 通过eslint官方提…

人工智能辅助的神经康复

人工智能辅助的神经康复是通过应用人工智能(AI)技术来改善神经系统损伤患者的康复过程。此领域结合了深度学习、数据分析和机器人技术,旨在提升康复效果、个性化治疗方案和监测进展。以下是该领域的关键组成部分和应用: 1. 康复评…

计算机视觉实战项目4(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A*路径规划+单目测距与测速+行人车辆计数等)

往期热门项目回顾: 计算机视觉项目大集合 改进的yolo目标检测-测距测速 路径规划算法 图像去雨去雾目标检测测距项目 交通标志识别项目 yolo系列-重磅yolov9界面-最新的yolo 姿态识别-3d姿态识别 深度学习小白学习路线 AI健身教练-引体向上-俯卧撑计数…

Python的异步编程

什么是协程? 协程不是计算机系统提供,程序员人为创造。 协程也可以被称为微线程,是一种用户态内的上下文切换技术。简而言之,其实就是通过一个线程实现代码块相互切换执行。 实现协程有那么几种方法: greenlet&…

Centos怎么执行脚本

方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本 cd /data/shell ./hello.sh 方法二:以绝对路径的方式去执行bash shell脚本 /data/shell/hello.sh 方法三:直接使用bash 或sh 来执行…

JDK9与JDK8对比

JDK 9 带来了很多显著的新特性,较早期的版本有了非常多的提升和优化。以下将以清晰的对比方式讲解 JDK 9 相比旧版本的优势,并通过实际示例展示如何利用新特性。 1. 模块化系统(Project Jigsaw) JDK 8 及之前: 所有的…

从 Oracle 集群到单节点环境(详细记录一次数据迁移过程)之二:生产服务器的备份操作

从 Oracle 集群到单节点环境(详细记录一次数据迁移过程)之二:生产服务器的备份操作 目录 从 Oracle 集群到单节点环境(详细记录一次数据迁移过程)之二:生产服务器的备份操作一、创建 pfile 文件二、创建备份…

CSS外边距

元素的外边距(margin)是围绕在元素边框以外(不包括边框)的空白区域,这片区域不受 background 属性的影响,始终是透明的。 为元素设置外边距 默认情况下如果不设置外边距属性,HTML 元素就是不会…