GDAL读取Shp问题解决:Unable to open EPSG support file gcs.csv

在GIS软件的开发中,经常用到开源库GDAL读取Shp数据,当shp数据中包含投影信息时,可能会遇到“Unable to open EPSG support file gcs.csv”错误提示,该错误是由于没有设置“GDAL_DATA”引起的。

1.Shpefile文件组成

Shapefile文件指的是一种文件存储的方法,实际上该种文件格式是由多个文件组成的。其中,要组成一个Shapefile,有三个文件是必不可少的,它们分别是".shp", ".shx"与 ".dbf" 文件。表示同一数据的一组文件其文件名前缀应该相同。例如,存储一个关于湖的几何与属性数据,就必须有lake.shp,lake.shx与 lake.dbf三个文件。而其中“真正”的Shapefile的后缀为shp,然而仅有这个文件数据是不完整的,必须要把其他两个附带上才能构成一组完 整的地理数据。除了这三个必须的文件以外,还有八个可选的文件,使用它们可以增强空间数据的表达能力。所有的文件名都必须遵循MS DOS的8.3文件名标准(文件前缀名8个字符,后缀名3个字符,如shapefil.shp),以方便与一些老的应用程序保持兼容性,尽管现在许多新的程序都能够支持长文件名。此外,所有的文件都必须位于同一个目录之中。

必须的文件:

  • .shp — 图形格式,用于保存元素的几何实体。
  • .shx — 图形索引格式。几何体位置索引,记录每一个几何体在shp文件之中的位置,能够加快向前或向后搜索一个几何体的效率。
  • .dbf — 属性数据格式,以dBase IV的数据表格式存储每个几何形状的属性数据。

其他可选的文件:

  • .prj — 投影格式,用于保存地理坐标系统与投影信息,是一个存储well-known text投影描述符的文本文件。
  • .sbn and .sbx — 几何体的空间索引
  • .fbn and .fbx — 只读的Shapefiles的几何体的空间索引
  • .ain and .aih — 列表中活动字段的属性索引。
  • .ixs — 可读写Shapefile文件的地理编码索引
  • .mxs — 可读写Shapefile文件的地理编码索引(ODB格式)
  • .atx — .dbf文件的属性索引,其文件名格式为shapefile.columnname.atx (ArcGIS 8及之后的版本)
  • .shp.xml — 以XML格式保存元数据。
  • .cpg — 用于描述.dbf文件的代码页,指明其使用的字符编码。

2.检查编译的GDAL或者下载的dll是否包含“Data”

笔者编译的GDAL目录,如下图所示(其中“GdalData”目录名称可自行指定):

该目录内容如下所示:

3.设置“GDAL_DATA”选项

设置“GDAL_DATA”有两种方法:

(1)在环境变量中设置

具体步骤:

右键我的电脑-属性-高级系统设置-选项“高级”-【环境变量】-“用户变量”-【新建】

(2)在程序中读取Shp数据时设置

具体代码如下(其中路径也可设置为相对路径):

 OSGeo.GDAL.Gdal.AllRegister();OSGeo.OGR.Ogr.RegisterAll();OSGeo.GDAL.Gdal.SetConfigOption("GDAL_DATA", @"D:\GDAL\GDAL\GDAL232\GdalData");OSGeo.OGR.Driver dr = OSGeo.OGR.Ogr.GetDriverByName("ESRI shapefile");OSGeo.OGR.DataSource ds = dr.Open(path, 0);

注:gdal2.3.2不支持中文路径的设置,该路径必须为全英文路径(若大家解决该问题,欢迎告知)。

 

转载于:https://www.cnblogs.com/aizai846/p/10894314.html

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

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

相关文章

[html] HTML5的Geolocation不允许定位后如何于次让它弹起授权定位?

[html] HTML5的Geolocation不允许定位后如何于次让它弹起授权定位? JS应该不能通过API主动再次调起授权定位。 需要提示用户,需要用户手动清除浏览器缓存或者设置app开启浏览器定位功能,之后才能重新弹出。个人简介 我是歌谣,欢…

SAP FI模块与SD、MM的接口配置基本方法

SAP FI模块与SD、MM的接口配置基本方法及解答.问:能否介绍一下FI模块与SD、MM的接口配置基本方法?答:accounting determination autoposting,做FICO的对这两个接口帐号的配置都会感兴趣的啊~ 不过这些东东要讲起来&…

禁用linux系统日志,KB4532432-如果在 Linux 系统上禁用了 IPV6,则会议将失败

症状假设你尝试在 Linux 操作系统(如 Redhat 或 Ubuntu)上安装 Microsoft SQL Server 2019。 如果在操作系统内核级别禁用 IPv6,并且尝试使用 "sudo/opt/mssql/bin/mssql-conf setup" 命令配置 SQL Server,则会在 Linux 控制台和 SQL Server 错…

[html] 如何更改浏览器左上角标题旁的图标?

[html] 如何更改浏览器左上角标题旁的图标&#xff1f; 图标在html的head进行引入,如 <link rel"shortcut icon" href"/favicon.ico" type"image/x-icon">个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#…

利用Date类计算生活时间

今天学习到了Date类还有其他一些常用类&#xff01; 这里就简单使用Date及其一些方法计算生活时间。 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner;public class DateInput {public static void mai…

Request.ServerVariables

2008-07-07 15:45PATH_INFO取的是当前文的路径,效果等同用Request.ServerVariables("URL") 比如说http://www.aaa.com/bbb/ccc/ddd.asp Request.ServerVariables("PATH_INFO")的值就是 /bbb/ccc/ddd.asp 更多ServerVariables Request.ServerVariables(&quo…

linux系统扩展名大全,Linux系统文件扩展名学习

Linux系统下的扩展名并不能标识该文件是属于哪一种类型的文件。文件是否可以执行等都跟文件的扩展名无关。因为文件script没有执行权限&#xff0c;所以也就无法执行&#xff0c;sh-3.2# touch ./scriptsh-3.2# ls -lh ./script-rw-r--r-- 1 root root 0 Dec 28 06:15 ./script…

[html] 写一个类似刮刮卡效果的交互,即鼠标划过时显示号码

[html] 写一个类似刮刮卡效果的交互&#xff0c;即鼠标划过时显示号码 <title>Document</title> <style> *{ margin:0; padding: 0; } .container{ position: relative; width: 600px; height: 400px; margin: 100px auto; border: 1px solid black; } .con…

1.4-1.5 HBase部署及基本使用

一、部署1、准备##先用Apache hadoop ##之前的cdh 服务器先全部停掉##解压HBASE [roothadoop-senior hbase]# tar zxf hbase-0.98.6-hadoop2-bin.tar.gz -C /opt/modules/##启动Apache hadoop &#xff08;hdfs&#xff09; [roothadoop-senior hadoop-2.5.0]# pwd /opt/module…

linux双网口绑定,双网口绑定bond

bond内核模块和称为通道绑定接口的特殊网络&#xff0c;接口将多个网络接口绑定到一个通道。根据选择的绑定模式&#xff0c;通道绑定使两个或者更多个网络接口作为一个网络接口&#xff0c;从而增加带宽或者提供冗余性模式0(平衡轮循) - 轮循策略&#xff0c;所有 接口都采用轮…

Web3d明日之星基于Javascript和OpenGL的技术

和Linux的卫道人袁老相似&#xff0c;我也是VRML/X3D这种Web3D技术的守卫者&#xff0c;虽然我很渺小。 Web已经逐步成为应用程序界面的基础。Firefox开发商Mozilla和制定OpenGL 技术规范的Khronos组织 已经看到了OpenGL技术的广泛应用&#xff0c;他们也想借此为Web创建新的3D…

[html] 如何实现多行文字梯形排版?

[html] 如何实现多行文字梯形排版&#xff1f; 可以利用文字会环绕浮动元素的特性来做&#xff1a;HTML:#box {width: 400px;height: 600px;background-color: red; } #box .float-div{float: left; // 浮动起来clear: both; // 这个很重要&#xff0c;不然会排版出错backgrou…

c语言 字符串map,C语言实现BitMap

BitMap的原理不用多说了。主要说下位操作。我们假设每个基础存储单元为char&#xff0c;则BYTESIZE 8&#xff0c;如果为int则16 or 32。当设置i时&#xff0c;首先ptri/BYTESIZE&#xff0c;到达要操作的那个char。然后对*ptr | 0x01<检查的时候&#xff0c;也是首先ptri/…

MySQL5.7.9安装与配置优化

一、 环境准备 1. 下载软件包 wget http://test.hexin.cn/software/mysql-5.7.9.tar.gz -P /usr/local/src/ wget http://test.hexin.cn/software/cmake-3.4.0.tar.gz -P /usr/local/src/ wget http://test.hexin.cn/software/boost_1_59_0.tar.gz -P /usr/local/src/ 2. 安装基…

[html] h5页面如何传递参数给小程序?

[html] h5页面如何传递参数给小程序&#xff1f; 1、H5页面 <script src"${base}/resources/common/js/jweixin.miniProgram.js"></script>wx.miniProgram.postMessage({ data: { shareUrl:href } });注意&#xff1a;传参必须使用data2、小程序页面接收…

k8s的认证和service account简述

k8s的认证&#xff1a; 与API server通信的客户端大致有两类&#xff1a; 1.集群客户端工具&#xff08;kubectl、kubeadm、kubelet等&#xff09; 2.集群内pod. 任何客户端访问k8s时的过程&#xff1a; 1.认证&#xff1a;任何客户端访问k8s&#xff0c;首先需要通过k8s的认…

单片机c语言应用100例第3版课后答案,单片机C语言应用100例(第3版)(含光盘1张)...

基 础 篇第1章 单片机概述及实验器材介绍21.1 单片机概述21.1.1 单片机的定义、分类与内部组成21.1.2 单片机应用系统的结构及其工作过程51.1.3 单片机的应用61.2 单片机基础知识71.2.1 数制与数制间的转换71.2.2 单片机中数的表示方法及常用数制的对应关系101.2.3 逻辑数…

biztalk在用户代码中构造多部分消息

大家知道&#xff0c;biztalk中可以在orchestration调用外部用户代码进行功能扩展&#xff0c;调用外部方法可以把消息作为参数传给外部方法&#xff0c;当然也可能需要外部方法返回一个消息到orchestration。<?xml:namespace prefix o />对于schema类型的消息&#xf…

[html] HTML5如何播放ts视频流?

[html] HTML5如何播放ts视频流&#xff1f; 引入mux.js转化&#xff0c;然后video展示个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

c语言标准库 swap,swap

swap描述 (Description)C 函数std::forward_list::swap()将第一个forward_list的内容与另一个交换。 如有必要&#xff0c;此函数会更改forward_list的大小。声明 (Declaration)以下是std :: forward_list :: swap()函数形式std :: forward_list头的声明。C11template void swa…