GDAL / OGR 学习手册 [01] :Python环境配置

一、GDAL/OGR 安装

OGR作为GDAL的子项目,现已集成在GDAL中,只需安装GDAL就能调用GDAL和OGR。

1. 在线安装

方法1:默认环境安装

安装GDAL最直接的方法就是使用pip库:

在这里插入图片描述
该命令会在线安装最新版本的GDAL至默认的python环境。在安装完成后,通过pip show GDAL命令可以查看GDAL的安装位置。

请添加图片描述
除此之外,使用命令 pip install GDAL == [版本号] 可以指定GDAL的安装版本。

该方法的前提是已经安装好了pip库 且pip的版本支持需要安装的GDAL版本

方法2:虚拟环境安装

为了避免Python、第三方库之间的冲突,推荐使用虚拟环境(如Anaconda、Virtualenv等)。

以Anaconda为例,创建虚拟环境并安装GDAL的步骤如下:

Step1: 创建虚拟环境

在Anaconda Prompt中运行命令:conda create -n env_name python=x.x

注释
env_name:拟创建的虚拟环境名
python=x.x:虚拟环境的Python版本

例如: 构建名为GISea,python版本为3.8的虚拟环境。

运行命令:conda create -n GISea python=3.8

弹出的提示信息包括:虚拟环境的创建位置、python版本和预装的包。

请添加图片描述
请添加图片描述
键入 y 确认,完成虚拟环境的创建。

Step2: 激活虚拟环境

在Anaconda Prompt中运行命令:conda activate env_name

注释:

env_name:拟创建的虚拟环境名

例如: 激活虚拟环境GISea:conda activate GISea
目录前面的(base)变成了(GISea),表明已经成功激活了虚拟环境GISea。


请添加图片描述

在激活状态下运行命令会对该虚拟环境进行操作。

Step3: 安装GDAL

在虚拟环境目录下运行命令:conda install GDAL


请添加图片描述

提示即将安装的一系列包:

请添加图片描述

键入 y 确认,完成GDAL的安装。

完成安装后,查找环境中的GDAL包,输入命令:conda list GDAL

请添加图片描述

结果显示GDAL(3.4.1)已经安装完成。


2. 离线安装

在线安装容易受网络、服务器等因素的影响导致安装失败,在这种情况下,可以尝试离线安装。离线安装通过手动下载whl文件,在本地进行安装。

离线安装的关键在于whl包版本的选择,使用命令:pip debug --verbose
查看当前Python版本支持的whl文件名:

请添加图片描述

安装包命名规则
例如:GDAL‑3.4.1‑cp38‑cp38‑win_amd64.whl :

    3.4.1: GDAL版本号
    cp38: Python版本为3.8
    win_amd64: 64 位操作系统,win32 对应32位操作系统

离线安装GDAL的步骤如下:

Step1: 下载whl包

访问Python包下载地址:

官网: https://pypi.org/

镜像(推荐): https://www.lfd.uci.edu/~gohlke/pythonlibs/

下载与Python版本匹配的whl包:

请添加图片描述

Step2: 离线安装GDAL

在虚拟环境目录下运行命令:pip install whl_path

注释:
whl_path:whl包的绝对路径

例如:
whl包的绝对路径为:C:\Users\Pytran\Desktop\GDAL\GDAL-3.4.3-cp38-cp38-win_amd64.whl时,安装命令如下:

请添加图片描述

二、GDAL/OGR 导入

完成安装后,打开第三方包的存储位置:site-packages文件夹,可以看到并没有名为gdal的文件夹。

请添加图片描述

此时使用该虚拟环境直接导入gdal库:

 import gdal

可能出现无法找到该模块的问题:

请添加图片描述

尝试进入site-packages中的osgeo文件夹,可以找到gdal和ogr模块。

请添加图片描述

这说明安装GDAL的过程,实质上是安装了包含gdal和ogr两个子模块的osego包,因此使用如下语句即可成功导入gdal和ogr:

 from osgeo import gdal
 from osgeo import ogr

往期内容:
GDAL / OGR 学习手册 | 前言

定期更新GIS相关内容
请关注微信公众号 GISea

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ESRI Shape文件是一种常用的矢量数据格式,它含了点、线、面等要素和属性信息。为了处理这种格式的数据,我们可以使用GDAL/OGR库。本文将介绍如何使用C#语言和GDAL/OGR库读写ESRI Shape文件。 一、安装GDAL/OGRGDAL/OGR库是一个开源的地理信息系统扩展库,它可以读写各种GIS数据格式。我们可以从官网(https://gdal.org/download.html)下载最新的二进制版本,并进行安装。 二、创建工作空间 在C#中使用GDAL/OGR库进行ESRI Shape文件的读写,需要先创建一个工作空间。工作空间是一个抽象的概念,它代表了一个含多个数据集的环境。我们可以使用以下代码创建一个工作空间: ```csharp using OSGeo.OGR; using OSGeo.GDAL; Gdal.AllRegister(); Ogr.RegisterAll(); string workspace = @"C:\data\shapefiles"; Driver driver = Ogr.GetDriverByName("ESRI Shapefile"); DataSource dataSource = driver.Open(workspace, 0); ``` 这里使用了GDAL/OGR库中的`Driver`、`DataSource`和`Gdal`等类。首先,我们调用`Gdal.AllRegister()`方法和`Ogr.RegisterAll()`方法注册GDAL/OGR库中的所有驱动程序。然后,我们指定了一个路径作为工作空间,并使用`Ogr.GetDriverByName()`方法获取ESRI Shapefile驱动程序。最后,我们调用`driver.Open()`方法打开工作空间,并将返回的`DataSource`对象存储到`dataSource`变量中。 三、读取ESRI Shape文件 在创建了工作空间之后,我们可以使用`dataSource`对象读取ESRI Shape文件中的要素和属性信息。以下代码演示了如何读取ESRI Shape文件中的所有点要素: ```csharp Layer layer = dataSource.GetLayerByName("points"); Feature feature = null; while ((feature = layer.GetNextFeature()) != null) { Geometry geometry = feature.GetGeometryRef(); double x = geometry.GetX(0); double y = geometry.GetY(0); Console.WriteLine($"Point ({x}, {y})"); } ``` 这里使用了GDAL/OGR库中的`Layer`、`Feature`和`Geometry`等类。首先,我们使用`dataSource.GetLayerByName()`方法获取名为“points”的图层,并将返回的`Layer`对象存储到`layer`变量中。然后,我们使用`layer.GetNextFeature()`方法循环遍历图层中的所有要素,并将返回的`Feature`对象存储到`feature`变量中。接着,我们使用`feature.GetGeometryRef()`方法获取要素的几何体,并将返回的`Geometry`对象存储到`geometry`变量中。最后,我们使用`geometry.GetX(0)`和`geometry.GetY(0)`方法获取要素的坐标,并将其打印到控制台上。 四、写入ESRI Shape文件 在读取了ESRI Shape文件之后,我们可以使用`dataSource`对象写入新的要素和属性信息。以下代码演示了如何创建一个新的ESRI Shape文件,并向其中添加一个点要素: ```csharp Layer layer = dataSource.CreateLayer("new_points", null, wkbGeometryType.wkbPoint, null); FieldDefn fieldDefn = new FieldDefn("name", FieldType.OFTString); layer.CreateField(fieldDefn, 1); Feature feature = new Feature(layer.GetLayerDefn()); Geometry geometry = new Point(121.5, 31.2); feature.SetGeometry(geometry); feature.SetField("name", "Shanghai"); layer.CreateFeature(feature); dataSource.SyncToDisk(); ``` 这里使用了GDAL/OGR库中的`FieldDefn`、`Point`和`wkbGeometryType`等类。首先,我们使用`dataSource.CreateLayer()`方法创建一个名为“new_points”的图层,并将返回的`Layer`对象存储到`layer`变量中。然后,我们使用`new FieldDefn("name", FieldType.OFTString)`语句创建一个名为“name”的字符串型属性。接着,我们使用`layer.CreateField()`方法创建一个新的属性字段,并将`fieldDefn`变量和`1`参数传递给该方法。接下来,我们使用`new Point(121.5, 31.2)`语句创建一个新的点几何体,并将其存储到`geometry`变量中。然后,我们使用`new Feature(layer.GetLayerDefn())`语句创建一个新的要素,并将其存储到`feature`变量中。接着,我们使用`feature.SetGeometry(geometry)`方法设置要素的几何体。最后,我们使用`feature.SetField("name", "Shanghai")`方法设置要素的属性值,并使用`layer.CreateFeature(feature)`方法将要素添加到图层中。最后,我们使用`dataSource.SyncToDisk()`方法将修改保存到磁盘中。 总结 本文介绍了如何使用C#语言和GDAL/OGR库读写ESRI Shape文件。我们首先创建了一个工作空间,并使用它读取了ESRI Shape文件中的点要素。然后,我们创建了一个新的ESRI Shape文件,并向其中添加了一个点要素。使用GDAL/OGR库可以方便地处理各种GIS数据格式,为GIS应用程序的开发提供了便利。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值