Python编程基础 课件 CH07普通函数:获取照片拍摄地址信息_第1页
Python编程基础 课件 CH07普通函数:获取照片拍摄地址信息_第2页
Python编程基础 课件 CH07普通函数:获取照片拍摄地址信息_第3页
Python编程基础 课件 CH07普通函数:获取照片拍摄地址信息_第4页
Python编程基础 课件 CH07普通函数:获取照片拍摄地址信息_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

深入浅出Python编程

(模块4函数与代码复用)第7单元获取照片拍摄地址信息

获取照片的经纬度信息根据经纬度反查询地址通过API地理逆编码解析地址Outcome单元目标/Objectives理解代码的复用

熟练掌握函数的定义和调用

理解函数的返回值

理解函数的传值和传引用

掌握函数的多种参数传递方式⑥

具有个人信息保护和国家版图意识内容及计划/Agenda&Schedule8/6ClassHoursDetails专科应用本科<00:10><00:10>回顾&成果介绍<00:25><00:25>认识函数&函数的简单使用<01:20><01:00>使用位置参数获取照片经纬度<01:20><01:00>使用关键字参数查询地址信息<01:00><00:40>使用默认值参数查询地址信息<01:00><00:40>使用不定长参数查询地址信息<00:05><00:05>课堂小结Total:8/6hours(6/4hPractice)Total:54Hours(24hPractice)01照片位置信息Photolocation1.任务分析目标解构从照片文件提取GPS经纬度数据利用逆地理编码查询地址模式识别借助第三方Python包从文件中读取照片文件的元数据地理逆编码可以借助Python第三方模块实现或者:通过地图服务商提供的逆地理编码WebAPI查询实现1.任务分析模式归纳打印照片的经纬度坐标信息和查询照片拍摄地址信息都需要重复用获取照片GPS经纬度数据的代码,为提高代码的复用,可以将该功能模块封装成一个Python函数算法设计使用exifread模块读取照片的GPS信息使用geopy模块对地理逆编码查询/从经纬度查地址使用天地图地图服务的WebAPI查询地址信息2.任务准备exifread模块Exif(Exchangeableimagefileformat)交换图像文件格式是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据地理编码和逆编码地理编码是将地址作为输入,然后将其转换为地图上的位置,也就是将地址转换为经纬度坐标(纬度和经度)。逆地理编码刚好相反,它是从纬度和经度坐标开始,使用其对应的街道、城市等名称来标识地址。详细地址(北京市东城区景山前街4号故宫博物院)地理坐标(116.39,39.92)地理编码逆地理编码2.任务准备geopy模块一个比较流行的GEO编码Web服务客户端geopy不负责地理编码服务的数据库,地理编码由许多不同的服务商提供,它只是一个在单个包中为不同服务提供这些实现的库大部分的API服务都需要申请开发者Key,其中Nominatim是免费的,提供低访问请求,高并发、频繁的访问可能会被拒绝02认识函数function1.函数的定义和调用—

使用函数复用代码函数(function)就是实现某一个特定功能的代码块语法格式:建议命名函数用lowercase_with_underscores,即只用小写字母单词函数名称后面的一对圆括号,即使没有参数,也需要保留1.函数的定义和调用—

使用函数复用代码使用函数,减少重复代码1.函数的定义和调用—

函数的形参与实参函数的参数形参(parameter):定义函数时,在函数声明中定义的变量。实参(argument):调用函数时,给定函数调用/执行的变量把差异参数化把函数看成是一个“通用”的模板不同的部分用一个符号/参数替代1.函数的定义和调用—

函数的返回值return语句如果函数没有return语句,Python将认为该函数以returnNone既可以用return语句返回数值、字符串等单个、单值,也可以用return语句返回列表、元组、字典、集合等多值2.函数的编码风格文档字符串(docstring)函数内的第一条语句是字符串时,该字符串就是文档字符串利用文档字符串可以自动生成在线文档或打印版文档,还可以让开发者在浏览代码时直接查阅文档2.函数的编码风格函数注解(annotations)用户自定义函数类型的元数据完整信息注解以字典的形式存放在函数的__annotations__属性中形参注解的定义方式是在形参名后加冒号“:”,后面跟一个表达式,该表达式会被求值为标注的值返回值注解的定义方式是加组合符号“->”,后面跟一个表达式,该标注位于形参列表和表示def语句结束的冒号之间创建并使用函数:defprint_city_info(my_city):03使用位置参数获取照片经纬度positionparameter1.参数的传值和传引用传值(value):当参数类型为固定/不可变数据类型时(如数值、字符串、元组等),在函数内部直接修改形参的值不会影响实参传引用/传址(address):当参数类型为可变数据类型时(如列表、字典、集合等),在函数内部使用下标或其他方式为其增加、删除或修改元素值时,修改后的结果是可以反映到函数之外的,即实参也会得到相应的修改1.参数的传值和传引用传值(value)vs.传引用/传址(address)1.参数的传值和传引用避免实参被修改2.获取照片的坐标数据“一点一线,皆是河山”“规范使用地图,一点都不能错。”返回GPS信息经度、纬度和高度等3个值地理坐标系(GCS,GeographicCoordinateSystem)使用三维球面来定义地球上的位置,点(point)要素可通过其经度(longitude)和纬度(latitude)值进行引用国家大地坐标系:CGCS-2000(CGCS,ChinaGeodeticCoordinateSystem2000)GPS坐标大多都是WGS-84(WorldGeodeticSystem-1984)坐标图片引自:/zh-cn/arcmap/10.4/map/projections/geographic-coordinate-system.htm2.获取照片的坐标数据DMS

(degree/度,minute/分,second/秒)DD(decimaldegree)在调用函数传递参数时,实参和形参的顺序必须严格一致,并且实参和形参的数量必须相同,这种严格按位置来传递参数称之为位置参数(positionalparameters)。以位置参数调用形式获取照片经纬度坐标值04使用关键字参数查询地址信息KeywordArguments1.关键字参数传入经度和纬度,使用Nominatim地图服务来进行地址信息查询。注意参数的顺序,纬度在前,经度在后。关键字参数(KeywordArguments)是指在函数调用中前面带有标识符,形如:kwarg=value的参数传递方式,也即一种按参数名字传递值的方式。1.关键字参数关键字参数比位置参数更具优势:位置参数传参容易出错:不小心把经度和纬度的顺序搞反了将会收到一条错误提示信息:“ValueError:Latitudemustbeinthe[-90;90]range.”位置参数传参程序的可读性也比较差以关键字参数调用形式进行逆地理信息查询照片地址05使用默认值参数查询地址信息DefaultArgumentValues1.什么是默认值参数定义函数时,可以给函数的形参赋予默认值,这个参数被称为默认值参数(DefaultArgumentValues)。定义一个带默认值参数的函数,只需要在形参变量的后面用赋值符为该形参赋一个值即可在调用函数时,如果不给该形参传递值,则该形参就使用定义时赋予的默认值。可以使用“函数名.__defaults__”查看函数所有默认值参数的当前值2.天地图逆地理服务API查询照片地址API/geocoder?postStr={'lon':116.37304,'lat':39.92594,'ver':1}&type=geocode&tk=你自己的密钥除了经度、纬度和开发者Key之外,其余部分基本都是固定的,特别是URL的域名、版本号等就可以设置为默认值参数2.天地图逆地理服务API查询照片地址默认值参数:domain='’ver=1使用默认值参数调用天地图API查询照片地址信息06使用不定长参数查询地址信息ArbitraryArgument1.不定长参数Python允许函数在执行/调用中接受任意数量的实参,也即可变参数或不定长参数(ArbitraryArgument)*args:接收任意多个实参,并将其解包到一个元组中**kwargs:接收任意多个关键字参数,并将其解包到一个字典中结合位置参数一起使用时,必须将不定长参数放在位置参数的最后,且*args和**kwargs同时出现时,*args在**kwargs的前面Python先匹配位位置实参再将剩余的位置参数装入到*args最后将剩余的关键字参数转入到**kwargs2.参数的解包按单值、多个传递:根据顺序逐一传递变量解包方式:解包实参变量传递使用不定长参数查询照片地址信息课堂小结函数是一种仅在调用时运行的代码块,函数让我们编写的代码可供重复使用,既能提供代码的复用率,也让代码更易于维护。形

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论