Python类的定义与使用

定义类

#类(Class) 由3个部分构成:
'''
类的名称:类名
类的属性:指对象的特征(一组数据)
类的方法:允许对象进行操作的方法 (行为/功能)
'''

class people:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def information(self):
        print('name is {}'.format(self.name))
        print('age is {} '.format(self.age))

在python3.x中所有的类都继承了object,拥有更多操作方法,无需定义成class people(object):
self代表类的实例本身.
__init__的方法在实例化类时将自动执行.

类的实例化

类的实例化即引用定义的类。

someone = people('xiaoming', 10)

查看类的属性

someone.name
'xiaoming'
someone.age
10

调用类中的方法

someone.information()

name is xiaoming
age is 10 

自定义遥感影像属性的类

代码来自 http://gaohr.win/site/blogs/2017/2017-04-14-tvdi.html

from osgeo import gdal,osr
class Raster:
    def __init__(self, nRows, nCols, data, noDataValue=None, geotransform=None, srs=None):
        self.nRows = nRows
        self.nCols = nCols
        self.data = data
        self.noDataValue = noDataValue
        self.geotrans = geotransform
        self.srs = srs
 
        self.dx = geotransform[1]
        self.xMin = geotransform[0]
        self.xMax = geotransform[0] + nCols * geotransform[1]
        self.yMax = geotransform[3]
        self.yMin = geotransform[3] + nRows * geotransform[5]
 
def ReadRaster(rasterFile):
    ds = gdal.Open(rasterFile)
    band = ds.GetRasterBand(1)
    data = band.ReadAsArray()
    xsize = band.XSize
    ysize = band.YSize
    noDataValue = band.GetNoDataValue()
    geotrans = ds.GetGeoTransform()
 
    srs = osr.SpatialReference()
    srs.ImportFromWkt(ds.GetProjection())
    if noDataValue is None:
        noDataValue = -9999
    return Raster(ysize, xsize, data, noDataValue, geotrans, srs)

可以看出代码中自定义了一个Raster的类,该类中包含了影像行列号,仿射变换参数等属性。
定义这个类的优势在于可以使代码变得简洁,易懂。
在这里实例化Raster的方法是在自定义读取数据函数中返回这个类。

raster = ReadRaster('F:\GDAL learning\Landsat8.tif') #实例化Raster类

除了在类中自定义一个函数来print属性来查看影像属性外,还可以在类Raster中添加__str__方法查看影像属性。

    def __str__(self):  
        return "影像行数:%s 影像列数:%d" % (self.nRows, self.nCols)
print(raster)
影像行数:8900 影像列数:8563
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值