Python地学分析 — 矢量数据读取 01

欢迎关注博主的微信公众号:“智能遥感”。

该公众号将为您奉上Python地学分析、爬虫、数据分析、Web开发、机器学习、深度学习等热门源代码。

代码和数据可以直接在我的GitHub上下载:

https://github.com/xbr2017/PyGdal_vector_01

********************************************************************

在上一节矢量数据集的介绍后,本节开始Python实战!!!

说到读取矢量数据或者遥感图像,我们不得不介绍今天的主角儿 — GDAL库。是的,你没看错,就是C++里面经常用到的那个库,在这里,Python也可以有哦(突然想到网上比较流行的一句话:Python除了不能生小孩,其他什么都能)。

那么,我们先来看一下如何安装GDAL。这里以Windows环境为例,有两种常用方法:

1. https://www.lfd.uci.edu/~gohlke/pythonlibs/上下载GDAL对应的*.whl格式文件。如Python2.7版本32位对应的GDAL文件:GDAL-2.2.4-cp27-cp27m-win32.whl。进入cmd命令行,cd到该GDAL文件所在路径下,输入命令pip install  GDAL-2.2.4-cp27-cp27m-win32.whl即可安装好GDAL库。

2. 如果觉得上面操作太繁琐(其实蛮锻炼人,你可能在方法1中遇到坑,找度娘或翻墙谷歌去吧),就直接打开cmd命令行在线安装,输入命令pip install gdal。

下面终于上代码啦,主要实现打印shp矢量文件的前10个要素。

# _*_ coding: utf-8 _*_
__author__ = 'xbr'
__date__ = '2018/10/30 22:44'

import sys

from osgeo import ogr

# 矢量图shp文件
fn = r'D:\osgeopy-data\global\ne_50m_populated_places.shp'
# 打开文件
ds = ogr.Open(fn, 0)
# 如果文件为空,则报错
if ds is None:
    sys.exit('Could not open {0}.'.format(fn))
# 在确保打开文件后,从数据源中检索第一个图层
lyr = ds.GetLayer(0)
# 下面for循环是获取图层中前10个要素,
# 每个要素所含字段:城市名、最大人口数、经度、纬度
i = 0
for feat in lyr:
    pt = feat.geometry()
    x = pt.GetX()   # 经度
    y = pt.GetY()   # 纬度
    name = feat.GetField('NAME')   # 城市名
    pop = feat.GetField('POP_MAX') # 最大人口数
    print(name, pop, x, y)
    i += 1
    if i == 10:
        break
# 删除ds变量以强制文件关闭
del ds

该代码数据结果如下:

('Bombo', 75000, 32.533299524864844, 0.5832991056146284)
('Fort Portal', 42670, 30.27500161597942, 0.671004121125236)
('Potenza', 69060, 15.798996495640267, 40.642002130098206)
('Campobasso', 50762, 14.655996558921856, 41.56299911864397)
('Aosta', 34062, 7.315002595706176, 45.7370010670723)
('Mariehamn', 10682, 19.949004471869102, 60.09699618489543)
('Ramallah', 24599, 35.206209378189556, 31.90294475142406)
('Vatican City', 832, 12.453386544971766, 41.903282179960115)
('Poitier', 85960, 0.3332765285345545, 46.58329225573658)
('Clermont-Ferrand', 233050, 3.080008095928406, 45.779982115759424)

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值