何文娜
(吉林體育學(xué)院,吉林 長春 130022)
公共體育場地指由政府主導(dǎo)或直接提供的可供居民大眾進(jìn)行體育活動的場地[1]。隨著人們生活水平提升,國家全民健身計劃推行,體育場地供給不足與大眾健身需求日益增強(qiáng)產(chǎn)生供需矛盾[2]。自2002年以來,國內(nèi)外學(xué)者對公共體育資源格局研究迅速增多,并取得一定的研究成果[3-5]。通過閱讀相關(guān)論文發(fā)現(xiàn)研究人員多采用文獻(xiàn)法[6-7],導(dǎo)致定性研究結(jié)果難以精確反映真實情況。因為缺少體育空間數(shù)據(jù)而鮮用GIS分析方法研究空間格局等,對政府科學(xué)決策、科學(xué)研究、公眾健身等均帶來不便。為了更好地理解和分析長春市城區(qū)體育資源空間分布特征及資源配置情況,本文研究一種從百度地圖中抓取體育場地分布信息以構(gòu)建空間數(shù)據(jù)庫的方法,將為后續(xù)體育資源分析打下數(shù)據(jù)基礎(chǔ)。
由于當(dāng)前百度已禁止行政區(qū)名稱或按規(guī)則矩形區(qū)域抓取POI數(shù)據(jù),故按照行政區(qū)名稱抓取的POI數(shù)據(jù)只返回少量隨機(jī)數(shù)據(jù)[8],難以保證采集數(shù)據(jù)的完整性及數(shù)據(jù)質(zhì)量。但百度API 支持不規(guī)則圖形的抓取,可基于云計算[9]、GIS 自研算法等完成數(shù)據(jù)采集任務(wù),以構(gòu)建長春市城區(qū)體育場空間數(shù)據(jù)。圖1為構(gòu)建長春市城區(qū)體育場地空間數(shù)據(jù)庫總體流程。
圖1 長春市城區(qū)體育場地空間數(shù)據(jù)庫建設(shè)流程
(1)合并行政區(qū):把ArcGIS 格式的2021 年長春市城區(qū)的行政區(qū)合并成一個大的不規(guī)則多邊形。
(2)創(chuàng)建網(wǎng)格:以第一步合并形成的長春市城區(qū)多邊形為數(shù)據(jù)源,創(chuàng)建規(guī)則的小正方形(如邊長1公里或500米)。
(3)篩選網(wǎng)格:因創(chuàng)建網(wǎng)格默認(rèn)采用多邊形的外包絡(luò)線,行政區(qū)不規(guī)則邊界與外包絡(luò)線之間可能存在空隙,則建網(wǎng)格時此空隙亦由小單元格生成。采用第一步合并結(jié)果作為空間篩選條件,只選中被其包含或與其邊界相交的小方格。
(4)輸出選中網(wǎng)格:將選中的所有小方格(包含或相交)輸出到系統(tǒng)外,單位保存成ArcGIS Shapefile文件。
(5)生成重心:將第4步執(zhí)行結(jié)果作為數(shù)據(jù)源,批量計算每一個小方格的重點,得到一個重心點圖層。
(6)生成緩沖區(qū):以第5步的重心點圖層作為輸入,按指定半徑生成緩沖區(qū),保證所有緩沖區(qū)的區(qū)域融合后可全覆蓋整個長春市城區(qū)。
(7)按緩沖區(qū)抓?。罕闅v每一個緩沖區(qū)要素,用當(dāng)前緩沖區(qū)、關(guān)鍵詞(如體育場地)作為搜索參數(shù),發(fā)給百度API 采集指令,百度云返回符合當(dāng)前抓取條件的數(shù)據(jù)。
(8)解析數(shù)據(jù):對百度返回的數(shù)據(jù)進(jìn)行解析,將數(shù)據(jù)流中的數(shù)據(jù)按照名稱、坐標(biāo)(經(jīng)度、緯度)、地址、所在區(qū)、所在市、所在省等分別解算,解析結(jié)果臨時存于內(nèi)存對象中。
(9)保存數(shù)據(jù):保存前根據(jù)編號及名稱判斷當(dāng)前要保存的數(shù)據(jù)是否已存在,若已存在則跳過,若不存在則保存到本地文件中,從而保證了抓取數(shù)據(jù)的唯一性。
(10)生成圖層:使用第9步生成的體育數(shù)據(jù)文件作為數(shù)據(jù)源,采用空間數(shù)據(jù)生成工具(如ArcMap),使用經(jīng)緯度空間數(shù)據(jù)生成點,同時將名稱、地址等數(shù)據(jù)項同步存入屬性表,最后生成ArcGIS Shapefile格式的體育場地點圖層。
(11)創(chuàng)建空間數(shù)據(jù)庫:在開源空間數(shù)據(jù)庫服務(wù)器(如PostGIS)中創(chuàng)建專用數(shù)據(jù)庫,將體育場地點圖層數(shù)據(jù)用導(dǎo)入/導(dǎo)出工具等存入,形成長春市城區(qū)體育場地空間數(shù)據(jù)庫。
使用ArcMap 軟件打開保存長春市城區(qū)的ArcGIS 數(shù)據(jù)(如Changchun.shp),在編輯狀態(tài)下選擇城區(qū)所有面要素,使用合并工具將它們合成一個要素,將合并后要素存成shapefile文件輸出(如Changchun_Merged.shp)。圖2中(a)為長春市城區(qū)原始數(shù)據(jù)、(b)為城區(qū)合并后結(jié)果。
圖2 長春市城區(qū)合并
(1)選擇長春市城區(qū)合并面要素為模板邊界范圍,自動提取圖層最小包絡(luò)矩形范圍。
(2)指定生成的網(wǎng)格要素類保存位置及名稱(如Changchun_FishNet.shp)。
(3)打開魚網(wǎng)工具(Fishnet)并設(shè)置創(chuàng)建魚網(wǎng)的參數(shù):設(shè)置行列數(shù)各100,單元的高度和寬度設(shè)為0,則會自動將其分割成100 行、100 列共10000 個單元格,自動計算單元格的高度和寬度。
(4)輸出幾何類型設(shè)為面(POLYGON),且取消創(chuàng)建標(biāo)簽點復(fù)選框。
(5)確認(rèn)后將自動生成并輸出存有10000個單元格的面圖層。
圖3(a)顯示了創(chuàng)建魚網(wǎng)的參數(shù)設(shè)置窗口,(b)為創(chuàng)建的10000個小網(wǎng)格覆蓋長春市城區(qū)效果。
圖3 創(chuàng)建網(wǎng)格
因長春市城區(qū)邊界外的空余區(qū)域不在城區(qū)范圍內(nèi),可將這些網(wǎng)格移除以提高抓取效率與精度。使用ArcMap的位置選擇(Select By Location)工具,設(shè)置被選擇的目標(biāo)圖層為生成的網(wǎng)格(如Changchun_FishNet.shp),位置源圖層選擇長春市合并城區(qū)(Changchun_Merged.shp),為目標(biāo)圖層要素設(shè)置的空間選擇方法為“與源圖層要素相交”,即可選中與長春市城區(qū)邊界相交及被其包含的所有小網(wǎng)格(如圖4(a)),圖4(b)展示了選中要素導(dǎo)出結(jié)果。
圖4 選擇長春市城區(qū)網(wǎng)格
使用ArcMap 數(shù)據(jù)管理工具中要素轉(zhuǎn)點(Feature to Point)工具,它以篩選后的長春市城區(qū)網(wǎng)格作為輸入,批量計算每一個網(wǎng)格的重心到一點圖層中(如Changchun_Fish-Net_Circle.shp)。圖5(a)顯示了長春市城區(qū)邊界與所有網(wǎng)格重心。
重心點圖層作為ArcMap 的緩沖區(qū)工具(Buffer)的輸入要素,設(shè)置緩沖區(qū)半徑(如500 米),指定輸出路徑及圖層名(如Changchun_FishNet_CircleBuffer.shp),即可生成用于提取長春市城區(qū)體育場地的緩沖區(qū)(如圖5(b))。
圖5 長春市城區(qū)網(wǎng)格重心、緩沖區(qū)
采用Python 語言編寫抓取代碼,將搜索關(guān)鍵詞數(shù)組、格網(wǎng)緩沖區(qū)等作為輸入?yún)?shù),調(diào)用百度云API 接口,對返回的流式數(shù)據(jù)內(nèi)容進(jìn)行字符轉(zhuǎn)換、格式解析并保存在Excel 中。使用ArcMap將Excel中保存的體育空間數(shù)據(jù)加載到地圖時,指定正確的經(jīng)度、緯度及投影參數(shù)等(如WGS1984),再將顯示結(jié)果保存為點圖層(如圖6)。最后將保存長春市城區(qū)體育場地位置數(shù)據(jù)圖層導(dǎo)入到PostGIS 數(shù)據(jù)庫中,形成長春市城區(qū)體育場地空間數(shù)據(jù)庫。
圖6 長春市城區(qū)體育場地空間數(shù)據(jù)結(jié)果
(1)受百度對POI 數(shù)據(jù)抓取的限制,本文提出一種采用非規(guī)則圖形采集并構(gòu)建長春市城區(qū)體育場地空間數(shù)據(jù)庫的技術(shù)流程,主要包括合并行政區(qū)、創(chuàng)建網(wǎng)格、篩選網(wǎng)格、生成重心、生成緩沖區(qū)、按緩沖區(qū)抓取、保存數(shù)據(jù)、生成圖層、導(dǎo)入空間數(shù)據(jù)庫等環(huán)節(jié);
(2)使用Python語言編程實現(xiàn)了具體抓取算法,通過調(diào)用百度API實現(xiàn)了長春市城區(qū)體育場地空間數(shù)據(jù)的采集;
(3)將采集的體育場地位置數(shù)據(jù)導(dǎo)入到PostGIS數(shù)據(jù)庫中,初步構(gòu)建了長春市城區(qū)體育場地空間數(shù)據(jù)庫,為后續(xù)開展體育資源空間分析等打下數(shù)據(jù)基礎(chǔ)。