Python編程基礎(chǔ) 課件 CH07普通函數(shù):獲取照片拍攝地址信息_第1頁
Python編程基礎(chǔ) 課件 CH07普通函數(shù):獲取照片拍攝地址信息_第2頁
Python編程基礎(chǔ) 課件 CH07普通函數(shù):獲取照片拍攝地址信息_第3頁
Python編程基礎(chǔ) 課件 CH07普通函數(shù):獲取照片拍攝地址信息_第4頁
Python編程基礎(chǔ) 課件 CH07普通函數(shù):獲取照片拍攝地址信息_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

深入淺出Python編程

(模塊4函數(shù)與代碼復(fù)用)第7單元獲取照片拍攝地址信息

獲取照片的經(jīng)緯度信息根據(jù)經(jīng)緯度反查詢地址通過API地理逆編碼解析地址Outcome單元目標(biāo)/Objectives理解代碼的復(fù)用

熟練掌握函數(shù)的定義和調(diào)用

理解函數(shù)的返回值

理解函數(shù)的傳值和傳引用

掌握函數(shù)的多種參數(shù)傳遞方式⑥

具有個(gè)人信息保護(hù)和國(guó)家版圖意識(shí)內(nèi)容及計(jì)劃/Agenda&Schedule8/6ClassHoursDetails??茟?yīng)用本科<00:10><00:10>回顧&成果介紹<00:25><00:25>認(rèn)識(shí)函數(shù)&函數(shù)的簡(jiǎn)單使用<01:20><01:00>使用位置參數(shù)獲取照片經(jīng)緯度<01:20><01:00>使用關(guān)鍵字參數(shù)查詢地址信息<01:00><00:40>使用默認(rèn)值參數(shù)查詢地址信息<01:00><00:40>使用不定長(zhǎng)參數(shù)查詢地址信息<00:05><00:05>課堂小結(jié)Total:8/6hours(6/4hPractice)Total:54Hours(24hPractice)01照片位置信息Photolocation1.任務(wù)分析目標(biāo)解構(gòu)從照片文件提取GPS經(jīng)緯度數(shù)據(jù)利用逆地理編碼查詢地址模式識(shí)別借助第三方Python包從文件中讀取照片文件的元數(shù)據(jù)地理逆編碼可以借助Python第三方模塊實(shí)現(xiàn)或者:通過地圖服務(wù)商提供的逆地理編碼WebAPI查詢實(shí)現(xiàn)1.任務(wù)分析模式歸納打印照片的經(jīng)緯度坐標(biāo)信息和查詢照片拍攝地址信息都需要重復(fù)用獲取照片GPS經(jīng)緯度數(shù)據(jù)的代碼,為提高代碼的復(fù)用,可以將該功能模塊封裝成一個(gè)Python函數(shù)算法設(shè)計(jì)使用exifread模塊讀取照片的GPS信息使用geopy模塊對(duì)地理逆編碼查詢/從經(jīng)緯度查地址使用天地圖地圖服務(wù)的WebAPI查詢地址信息2.任務(wù)準(zhǔn)備exifread模塊Exif(Exchangeableimagefileformat)交換圖像文件格式是專門為數(shù)碼相機(jī)的照片設(shè)定的,可以記錄數(shù)碼照片的屬性信息和拍攝數(shù)據(jù)地理編碼和逆編碼地理編碼是將地址作為輸入,然后將其轉(zhuǎn)換為地圖上的位置,也就是將地址轉(zhuǎn)換為經(jīng)緯度坐標(biāo)(緯度和經(jīng)度)。逆地理編碼剛好相反,它是從緯度和經(jīng)度坐標(biāo)開始,使用其對(duì)應(yīng)的街道、城市等名稱來標(biāo)識(shí)地址。詳細(xì)地址(北京市東城區(qū)景山前街4號(hào)故宮博物院)地理坐標(biāo)(116.39,39.92)地理編碼逆地理編碼2.任務(wù)準(zhǔn)備geopy模塊一個(gè)比較流行的GEO編碼Web服務(wù)客戶端geopy不負(fù)責(zé)地理編碼服務(wù)的數(shù)據(jù)庫(kù),地理編碼由許多不同的服務(wù)商提供,它只是一個(gè)在單個(gè)包中為不同服務(wù)提供這些實(shí)現(xiàn)的庫(kù)大部分的API服務(wù)都需要申請(qǐng)開發(fā)者Key,其中Nominatim是免費(fèi)的,提供低訪問請(qǐng)求,高并發(fā)、頻繁的訪問可能會(huì)被拒絕02認(rèn)識(shí)函數(shù)function1.函數(shù)的定義和調(diào)用—

使用函數(shù)復(fù)用代碼函數(shù)(function)就是實(shí)現(xiàn)某一個(gè)特定功能的代碼塊語法格式:建議命名函數(shù)用lowercase_with_underscores,即只用小寫字母單詞函數(shù)名稱后面的一對(duì)圓括號(hào),即使沒有參數(shù),也需要保留1.函數(shù)的定義和調(diào)用—

使用函數(shù)復(fù)用代碼使用函數(shù),減少重復(fù)代碼1.函數(shù)的定義和調(diào)用—

函數(shù)的形參與實(shí)參函數(shù)的參數(shù)形參(parameter):定義函數(shù)時(shí),在函數(shù)聲明中定義的變量。實(shí)參(argument):調(diào)用函數(shù)時(shí),給定函數(shù)調(diào)用/執(zhí)行的變量把差異參數(shù)化把函數(shù)看成是一個(gè)“通用”的模板不同的部分用一個(gè)符號(hào)/參數(shù)替代1.函數(shù)的定義和調(diào)用—

函數(shù)的返回值return語句如果函數(shù)沒有return語句,Python將認(rèn)為該函數(shù)以returnNone既可以用return語句返回?cái)?shù)值、字符串等單個(gè)、單值,也可以用return語句返回列表、元組、字典、集合等多值2.函數(shù)的編碼風(fēng)格文檔字符串(docstring)函數(shù)內(nèi)的第一條語句是字符串時(shí),該字符串就是文檔字符串利用文檔字符串可以自動(dòng)生成在線文檔或打印版文檔,還可以讓開發(fā)者在瀏覽代碼時(shí)直接查閱文檔2.函數(shù)的編碼風(fēng)格函數(shù)注解(annotations)用戶自定義函數(shù)類型的元數(shù)據(jù)完整信息注解以字典的形式存放在函數(shù)的__annotations__屬性中形參注解的定義方式是在形參名后加冒號(hào)“:”,后面跟一個(gè)表達(dá)式,該表達(dá)式會(huì)被求值為標(biāo)注的值返回值注解的定義方式是加組合符號(hào)“->”,后面跟一個(gè)表達(dá)式,該標(biāo)注位于形參列表和表示def語句結(jié)束的冒號(hào)之間創(chuàng)建并使用函數(shù):defprint_city_info(my_city):03使用位置參數(shù)獲取照片經(jīng)緯度positionparameter1.參數(shù)的傳值和傳引用傳值(value):當(dāng)參數(shù)類型為固定/不可變數(shù)據(jù)類型時(shí)(如數(shù)值、字符串、元組等),在函數(shù)內(nèi)部直接修改形參的值不會(huì)影響實(shí)參傳引用/傳址(address):當(dāng)參數(shù)類型為可變數(shù)據(jù)類型時(shí)(如列表、字典、集合等),在函數(shù)內(nèi)部使用下標(biāo)或其他方式為其增加、刪除或修改元素值時(shí),修改后的結(jié)果是可以反映到函數(shù)之外的,即實(shí)參也會(huì)得到相應(yīng)的修改1.參數(shù)的傳值和傳引用傳值(value)vs.傳引用/傳址(address)1.參數(shù)的傳值和傳引用避免實(shí)參被修改2.獲取照片的坐標(biāo)數(shù)據(jù)“一點(diǎn)一線,皆是河山”“規(guī)范使用地圖,一點(diǎn)都不能錯(cuò)。”返回GPS信息經(jīng)度、緯度和高度等3個(gè)值地理坐標(biāo)系(GCS,GeographicCoordinateSystem)使用三維球面來定義地球上的位置,點(diǎn)(point)要素可通過其經(jīng)度(longitude)和緯度(latitude)值進(jìn)行引用國(guó)家大地坐標(biāo)系:CGCS-2000(CGCS,ChinaGeodeticCoordinateSystem2000)GPS坐標(biāo)大多都是WGS-84(WorldGeodeticSystem-1984)坐標(biāo)圖片引自:/zh-cn/arcmap/10.4/map/projections/geographic-coordinate-system.htm2.獲取照片的坐標(biāo)數(shù)據(jù)DMS

(degree/度,minute/分,second/秒)DD(decimaldegree)在調(diào)用函數(shù)傳遞參數(shù)時(shí),實(shí)參和形參的順序必須嚴(yán)格一致,并且實(shí)參和形參的數(shù)量必須相同,這種嚴(yán)格按位置來傳遞參數(shù)稱之為位置參數(shù)(positionalparameters)。以位置參數(shù)調(diào)用形式獲取照片經(jīng)緯度坐標(biāo)值04使用關(guān)鍵字參數(shù)查詢地址信息KeywordArguments1.關(guān)鍵字參數(shù)傳入經(jīng)度和緯度,使用Nominatim地圖服務(wù)來進(jìn)行地址信息查詢。注意參數(shù)的順序,緯度在前,經(jīng)度在后。關(guān)鍵字參數(shù)(KeywordArguments)是指在函數(shù)調(diào)用中前面帶有標(biāo)識(shí)符,形如:kwarg=value的參數(shù)傳遞方式,也即一種按參數(shù)名字傳遞值的方式。1.關(guān)鍵字參數(shù)關(guān)鍵字參數(shù)比位置參數(shù)更具優(yōu)勢(shì):位置參數(shù)傳參容易出錯(cuò):不小心把經(jīng)度和緯度的順序搞反了將會(huì)收到一條錯(cuò)誤提示信息:“ValueError:Latitudemustbeinthe[-90;90]range.”位置參數(shù)傳參程序的可讀性也比較差以關(guān)鍵字參數(shù)調(diào)用形式進(jìn)行逆地理信息查詢照片地址05使用默認(rèn)值參數(shù)查詢地址信息DefaultArgumentValues1.什么是默認(rèn)值參數(shù)定義函數(shù)時(shí),可以給函數(shù)的形參賦予默認(rèn)值,這個(gè)參數(shù)被稱為默認(rèn)值參數(shù)(DefaultArgumentValues)。定義一個(gè)帶默認(rèn)值參數(shù)的函數(shù),只需要在形參變量的后面用賦值符為該形參賦一個(gè)值即可在調(diào)用函數(shù)時(shí),如果不給該形參傳遞值,則該形參就使用定義時(shí)賦予的默認(rèn)值??梢允褂谩昂瘮?shù)名.__defaults__”查看函數(shù)所有默認(rèn)值參數(shù)的當(dāng)前值2.天地圖逆地理服務(wù)API查詢照片地址API/geocoder?postStr={'lon':116.37304,'lat':39.92594,'ver':1}&type=geocode&tk=你自己的密鑰除了經(jīng)度、緯度和開發(fā)者Key之外,其余部分基本都是固定的,特別是URL的域名、版本號(hào)等就可以設(shè)置為默認(rèn)值參數(shù)2.天地圖逆地理服務(wù)API查詢照片地址默認(rèn)值參數(shù):domain='’ver=1使用默認(rèn)值參數(shù)調(diào)用天地圖API查詢照片地址信息06使用不定長(zhǎng)參數(shù)查詢地址信息ArbitraryArgument1.不定長(zhǎng)參數(shù)Python允許函數(shù)在執(zhí)行/調(diào)用中接受任意數(shù)量的實(shí)參,也即可變參數(shù)或不定長(zhǎng)參數(shù)(ArbitraryArgument)*args:接收任意多個(gè)實(shí)參,并將其解包到一個(gè)元組中**kwargs:接收任意多個(gè)關(guān)鍵字參數(shù),并將其解包到一個(gè)字典中結(jié)合位置參數(shù)一起使用時(shí),必須將不定長(zhǎng)參數(shù)放在位置參數(shù)的最后,且*args和**kwargs同時(shí)出現(xiàn)時(shí),*args在**kwargs的前面Python先匹配位位置實(shí)參再將剩余的位置參數(shù)裝入到*args最后將剩余的關(guān)鍵字參數(shù)轉(zhuǎn)入到**kwargs2.參數(shù)的解包按單值、多個(gè)傳遞:根據(jù)順序逐一傳遞變量解包方式:解包實(shí)參變量傳遞使用不定長(zhǎng)參數(shù)查詢照片地址信息課堂小結(jié)函數(shù)是一種僅在調(diào)用時(shí)運(yùn)行的代碼塊,函數(shù)讓我們編寫的代碼可供重復(fù)使用,既能提供代碼的復(fù)用率,也讓代碼更易于維護(hù)。形

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論