GDAL对接华为云OBS实践

举报
数据上云专家张涛 发表于 2019/09/26 09:55:12 2019/09/26
【摘要】 GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式。它还有一系列命令行工具来进行数据转换和处理。本文介绍了GDAL如何对接华为云OBS上的文件

GDAL对接华为云OBS实践

 

背景介绍

GDAL 提供多种栅格数据的支持: asc, tiff , img dem
OGR
提供对矢量数据格式的读写: ESRI Shapefiles S-57 SDTS PostGISOracleSpatial Mapinfo mid/mif , Mapinfo TAB

gdal库中将ogrgdal两种都包含,不需要单独安装ogr的相关包。

 

 

一.       搭建GDAL环境

注意:选择操作系统尽量选择已有binary支持的进行测试,否则自行编译会遇到很多问题,gdal支持的操作系统可参考https://trac.osgeo.org/gdal/wiki/DownloadingGdalBinaries

1.       创建虚拟机,操作系统opensuse42.2,注意解决方案测试中创建虚拟机要按需,按流量计费

 

 

2.       搭建GDAL环境。(AWS桶内文件读写在gdal2.1以后的版本才支持)

 

登录ECS,使用yum源安装gdal软件zypper in gdal

zypper in python-gdal

 

gdalinfo - -version 查看版本显示为2.1

image.png

ogrinfo  - -formats 以及gdal - -formats 查看栅格或矢量库支持那种类型的文件,文件后显示+v表示该类文件支持虚拟文件接口的操作。

     image.png

 二.       GDAL相关资料

1.      虚拟文件介绍,另外还包含各类系统文件的安装包和源码(gdal源码是C++编译的包,可参考 编译成适合各类OSpython包安装)

https://www.gdal.org/gdal_virtual_file_systems.html#gdal_virtual_file_systems_vsis3

2.      论坛和github

https://github.com/OSGeo/gdal/issues/1036

3.      封装好的python 接口:

https://github.com/OSGeo/gdal/tree/master/gdal/swig/python/samples

samples下面的脚本下载到本地可直接执行gdal_lsgdal_cpgdal_rm等操作(封装了顺序写,随机写等接口,不需要区分栅格文件和矢量文件,脚本均可用)

4.      接口使用方法的例子:

http://erouault.blogspot.com/2017/10/gdal-and-cloud-storage.html

 

三.       使用非虚拟文件接口(/vsicurl/)读取桶(public读权限)里面对象,命令如下,仅支持读不支持写。

1.      读取华为云的栅格文件

gdalinfo /vsicurl/https://obs-zhouyuanyuan.obs.cn-north-1.myhwclouds.com/1.grd

 

2.      读取亚马逊的矢量文件

ogrinfo -ro -al -so /vsicurl/https://bucket-obs-test.s3-ap-southeast-1.amazonaws.com/test.svg

 

四.       使用虚拟文件接口(/vsis3/)AWSOBS上的结果对比。

1.   AWS

1.1列举操作

 image.png

1.2 Copy  操作

本地文件到aws后列举验证

image.png

1.3 删除操作

删除以及列举验证

image.png

1.4 读取操作

env AWS_S3_ENDPOINT=s3.ap-southeast-1.amazonaws.com

AWS_REGION=ap-southeast-1 AWS_ACCESS_KEY_ID=xxx

AWS_SECRET_ACCESS_KEY=XXX

 ogrinfo -ro -al -so /vsis3/bucket-obs-test/test.svg

 

image.png

 

 

2. OBS

2.1 列举操作

列举桶里面的九个文件,下图分别在官网和GDAL接口查看,结果一致。 

 

image.png

 

 image.png

2.2 删除操作

上图的列举结果中有1.grd文件,下面进行删除后再列举

image.png

 

 

华为云官网上显示的文件中已经少了1.grd文件,与列举接口返回一致 

 image.png

2.3 读取操作

env  AWS_S3_ENDPOINT=obs.cn-north-1.myhwclouds.com  AWS_REGION=cn-north-1  AWS_ACCESS_KEY_ID=xxx  AWS_SECRET_ACCESS_KEY=xxx  ogrinfo  -ro -al -so /vsis3/obs-wjl1015/test.svg

执行如上操作可以读取svg文件中的数据

 

image.png

 

2.4 Copy操作

将本地文件copy 到华为云,请使用如下命令

image.png

在华为云官网,验证上传对象

image.png

备注:copy 操作与aws的差异点在于,拷贝成的目标对象,要明确指出对象名,但亚马逊不需要,若不指定对象名,则用源文件的名字作为目标文件对象名做copy

 

 

验证完毕。

验证结论:

对象的读,写,列举,删除,copy操作均成功。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。