python使用GDAL/OGR/OSR时设置GDAL_DATA环境变量

版权声明:转载请注明作者(独孤尚良dugushangliang)出处: https://blog.csdn.net/dugushangliang/article/details/89377625

版权声明:转载请注明作者(独孤尚良dugushangliang)出处: https://blog.csdn.net/dugushangliang/article/details/89377625

右键“此电脑”打开电脑属性,高级系统设置,环境变量,直接设置GDAL_DATA环境变量,如下图所示。

附注:本机是Anaconda通过pip安装的gdal。用GDAL/OGR的时候发现坐标系有问题,参照这个帖子https://blog.csdn.net/csdn_xuebing/article/details/88421708,下了gata-data.rar这个包并放在Anaconda的相关路径下。这个包的来源https://github.com/wudawxb1995/ForLearn

——*——*——*——*——*——*——*——*——*——*——*——*——*——*——手动分割线

以下是详情。

我是通过在cmd(命令提示符)窗口输入以下代码安装python的GDAL库的。可参阅:https://pypi.org/project/GDAL/

pip install GDAL

执行后可以使用ogr创建shp文件,但用ArcGIS打开被提示没有坐标信息,可是我明明在创建shp文件的时候制定了坐标系了的,为什么会这样呢?

我是在Spyder中直接执行的,没有任何报错。代码来源于ogr网页一个示例,网址为http://pcjericks.github.io/py-gdalogr-cookbook/index.html,代码如下:

import osgeo.osr as osr

srs = osr.SpatialReference()
aa=srs.ImportFromEPSG(4326)
#print(aa,srs)

我看了这个网址https://www.programcreek.com/python/example/58591/osgeo.osr.SpatialReference,再次证实代码没有问题。

在我继续寻找问题的解决办法时候,看到了这个地方。网址https://www.gdal.org/classOGRSpatialReference.html#a8a5b8c9a205eedc6b88a14aa0c219969

我试着输出了下返回值aa和srs的各个属性项,Spyder反馈给我如下。

发现aa的值似乎不对,srs的属性也输出不了。我无意间使用cmd执行这代码的时候发现了问题所在。

cmd提示我:

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.

看来这就是环境变量的问题了。问题的症结所在终于浮出水面:osr试图通过GDAL_DATA这个环境变量寻找相应的包,但没有这个环境变量,所以找不到相应的包,我们需要指定这个环境变量,也要保证这个环境变量指向的是osr所需要的东西。

仔细看OGRErr OGRSpatialReference::importFromEPSG    (    int     nCode    )    的内容,即上文的截图所示。看不懂英文可以看下图的翻译。

所以本文开篇即点明,需要下载gata-data.rar这个包。

那么gcs.csv是什么东西呢?是各坐标系的各参数。

我们再运行那三行代码,即成功设定了坐标系了。

独孤尚良dugushangliang——著

猜你喜欢

转载自blog.csdn.net/dugushangliang/article/details/89377625