|
彈指一揮間,ArcGIS筆記已經(jīng)很久沒有更新了。這里先給大家道個歉,由于前段時間趕項目,加之錄python視頻,因此耽擱了很久。這里需要說明的是,我們公眾號會持續(xù)更新下去,希望大家多多支持。 我們知道,城市的中心一般是商業(yè)、商務(wù)高度發(fā)達(dá),公共服務(wù)較為集中的區(qū)域。從市中心外圍前往市中心享受各類公共服務(wù)是市民的重要權(quán)利之一。但受城市交通條件的影響,各區(qū)域前往市中心的交通狀況差異較大。有效識別各區(qū)域前往市中心的交通時間,一方面有助于我們認(rèn)識各區(qū)域交通狀況,從而有針對性的進行區(qū)域交通條件改進;另一方面,有助于我們進行用地優(yōu)化,從而實現(xiàn)交通與用地的協(xié)調(diào)。當(dāng)然,前往市中心休閑、購物是我們年輕人最為重要的假日活動,在房價高漲的當(dāng)下,選擇交通條件優(yōu)越、房價相對較低的區(qū)域是我們擇居的原則之一,故研究城市中心交通時空圈也具有重要意義。本期應(yīng)網(wǎng)友要求,帶來城市中心交通時空圈的技術(shù)方法講解。 1案例選擇 本次案例城市選擇成都市。首先,成都是我的家鄉(xiāng),我對成都有著深厚的感情(要整就整成都);其次,成都中心城區(qū)受自然條件影響相對較少,不像南京有紫金山,武漢有東湖、長江等自然條件的限制,網(wǎng)格之間可實現(xiàn)無差別的比較;最后,也是最為重要的,成都是環(huán)形放射網(wǎng)狀的路網(wǎng)格局,不同方位的交通狀況差異性并不十分明顯,并且市中心正好位于幾何中心,在交通條件差異不大的情況下,其交通通達(dá)績效究竟如何? 2方法步驟 第一步,我們需要獲取研究區(qū)域的范圍,以成都為例,我們獲取了中心城區(qū),包括天府新區(qū)的規(guī)劃范圍線。第二步,我們要將規(guī)劃范圍生成面,并生成網(wǎng)格(這里我們生成1000mX1000m的網(wǎng)格);第三步,我們要獲取各網(wǎng)格中心坐標(biāo)和市中心坐標(biāo)(市中心選擇天府廣場中心);第四步,運用百度API獲取各網(wǎng)格中心坐標(biāo)至市中心坐標(biāo)的時間(http://lbsyun.baidu.com/index.php?title=webapi/direction-api,不再具體解釋,自己看參數(shù))。第五步,空間可視化后進行相關(guān)分析,即可獲得城市中心交通時空圈。 3方法實施 在對方法進行具體實施前,我想感謝網(wǎng)友web攻城獅之路。他編寫了Python代碼用于抓取路線時間,具體見http://blog.csdn.net/taijiedi13/article/details/51279959。我在其基礎(chǔ)上結(jié)合規(guī)劃師的思維邏輯對代碼進行優(yōu)化。主要的優(yōu)化部分是運用arcpy來實現(xiàn)數(shù)據(jù)的自動更新。我猜想該網(wǎng)友并不是城市規(guī)劃專業(yè)的,因此可能未接觸過面向ArcGIS的arcpy,具體代碼調(diào)整后面講具體方法時會提到。為了讓大家更清楚的了解流程方法,因此很多地方我是直接運用ArcGIS來實現(xiàn),并未完全采用python。如果網(wǎng)友感興趣,可以自己編寫Python代碼,來實現(xiàn)全過程的自動化。 第一步:獲取范圍。 這個不做過多介紹,你要研究,好歹有個基礎(chǔ)的CAD范圍線啊。別問我怎么找,發(fā)揮自己聰明頭腦。找不到,自己拿豆腐撞頭。 第二步:生成網(wǎng)格。 將線生成面后,對面進行坐標(biāo)調(diào)整,調(diào)整為百度十進制經(jīng)緯度坐標(biāo)系。由于我們的研究范圍大,因此位置大致準(zhǔn)就行。建議在百度地圖中找好參照點后,運用空間校正來實現(xiàn)??臻g坐標(biāo)準(zhǔn)確后,用創(chuàng)建漁網(wǎng)工具來生成1000mX1000m的漁網(wǎng)。生成的文件有點與線兩個要素,并將線生成面。最終,我們有了網(wǎng)格中心點與網(wǎng)格面兩個我們需要的文件(圖1)。
第三步:獲取坐標(biāo)。 先講下獲取城市中心(天府廣場)坐標(biāo)。運用百度獲取坐標(biāo)系統(tǒng)工具(http://api.map.baidu.com/lbsapi/getpoint/index.html)可以輕松獲?。▓D2)。
接下來,講下獲取各網(wǎng)格中心點的坐標(biāo)。打開點要素表,添加經(jīng)度、緯度、時間3個字段(圖3,時間字段為后續(xù)記錄時間),并用計算幾何命令分別計算中心點的坐標(biāo),計算是要選擇十進制,X坐標(biāo)為經(jīng)度,Y坐標(biāo)為緯度(圖4)。 這樣,我們就獲取了起點(N各網(wǎng)格中心),終點(天府廣場)的坐標(biāo)。
第四步:獲取時間 這一步驟為重點。在這個程序中獲取百度API的時間函數(shù)get_time()為直接來自網(wǎng)友web攻城獅之路,這些代碼我不做介紹,我只給大家講下我調(diào)整的代碼(圖5)。我將他的run()去掉,用數(shù)據(jù)訪問模塊的UpdateCursor來實現(xiàn)數(shù)據(jù)的自動更新。在網(wǎng)友web攻城獅之路的代碼中,需要將點坐標(biāo)統(tǒng)一封裝到excel文件中,然后再讀取每一個坐標(biāo),最終還要將獲取的時間再寫入excel文件。而且最終生成的時間數(shù)據(jù)還要導(dǎo)入ArcGIS進行空間可視化。過程過于復(fù)雜,而且比較繁瑣,這一步驟完全可以運用Arcpy中的UpdateCursor來高效實現(xiàn)。 圖5 考慮到百度起點坐標(biāo)的引用規(guī)則(緯度在前,經(jīng)度在后),我們用變量coord來存儲每一個坐標(biāo)數(shù)據(jù),并調(diào)用get_time()來獲取時間數(shù)據(jù)。由于獲取的時間為秒,而我最后想用分鐘來表示,所以代碼53將秒數(shù)據(jù)改為分鐘數(shù)據(jù)。在代碼測試過程中,我遇到了JSON數(shù)據(jù)報錯,這是由于百度JSON數(shù)據(jù)規(guī)范性所產(chǎn)生的。因此,我加入了try命令進行錯誤調(diào)試,如果出現(xiàn)錯誤,則時間為0,便于我們后續(xù)檢查數(shù)據(jù)。最后,將獲取的時間數(shù)據(jù)寫入點文件。 第五步:空間可視化 用空間鏈接,可將點要素中的時間數(shù)據(jù)記錄入面要素中,并進行空間可視化,實現(xiàn)城市中心交通時空圈圖的最終生成(圖6、圖7)。我獲取的時間是10月1日晚11時,由于假期外出車輛較多,故總體交通條件較優(yōu)。大家可以測試下高峰時期,估計時間會有所增加。結(jié)論大家自己總結(jié)吧!
圖7 4總結(jié) 全代碼如下。
最后,我想說下,網(wǎng)絡(luò)上的數(shù)據(jù)實在是太豐富了,我們要善于去利用。時值國慶節(jié)期間,游山玩水期間發(fā)表此文,時間倉促,未講清楚的地方請各位看官提出。 祝大家國慶快樂,吃好玩好! |
|
|