郭正揚(yáng),許捍衛(wèi)
(1.河海大學(xué)地球科學(xué)與工程學(xué)院,江蘇 南京 211100)
3S技術(shù)應(yīng)用
融合社交媒體大數(shù)據(jù)的城市三維模型構(gòu)建
郭正揚(yáng)1,許捍衛(wèi)1
(1.河海大學(xué)地球科學(xué)與工程學(xué)院,江蘇 南京 211100)
通過C#代碼編寫微博大數(shù)據(jù)抽取系統(tǒng)(定時自動抽?。?,自動抽取有關(guān)新街口地區(qū)消費(fèi)者對商戶的海量最新評論數(shù)據(jù),從網(wǎng)頁上獲取南京新街口的GIS數(shù)據(jù)與微博數(shù)據(jù)一起形成數(shù)據(jù)庫,再將數(shù)據(jù)庫導(dǎo)入Cityengine中,通過規(guī)則建模,形成具有情感信息的三維城市。該方法能夠直觀地看出南京市新街口地區(qū)的情感信息,便于選擇評價好的區(qū)域,實(shí)現(xiàn)GIS服務(wù)于人。
CityEngine;微博大數(shù)據(jù);三維;情感信息
對微博大數(shù)據(jù)而言,如何使消費(fèi)者對商戶的評價信息以三維形式展現(xiàn)并給人直觀的視覺感受顯得尤為重要[1]。本文對微博大數(shù)據(jù)的自動抽取進(jìn)行研究,設(shè)計(jì)開發(fā)微博大數(shù)據(jù)抽取系統(tǒng),對獲取的微博大數(shù)據(jù)進(jìn)行分析,將分析后的微博大數(shù)據(jù)進(jìn)行三維建模顯示,將大數(shù)據(jù)技術(shù)與三維建模技術(shù)結(jié)合起來,幫助用戶直觀地理解數(shù)據(jù),發(fā)現(xiàn)規(guī)律,有利于為消費(fèi)者提供高質(zhì)量的商戶信息,同時也有利于促進(jìn)商戶不斷改善其服務(wù)水平與商品質(zhì)量,對實(shí)際生產(chǎn)生活具有重要意義。
本系統(tǒng)的主要模塊有數(shù)據(jù)庫設(shè)計(jì)模塊和前端三維系統(tǒng)設(shè)計(jì)模塊兩大部分。數(shù)據(jù)庫設(shè)計(jì)模塊包括微博大數(shù)據(jù)的獲取與預(yù)處理、地圖數(shù)據(jù)的獲取與預(yù)處理兩部分,如圖1所示。
圖1 系統(tǒng)架構(gòu)示意圖
本系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)需要使用到ArcGIS數(shù)據(jù)庫Geodatabase和SQL Server數(shù)據(jù)庫。利用SQL Server數(shù)據(jù)庫強(qiáng)大的數(shù)據(jù)聚合和處理能力來存儲和處理微博情感數(shù)據(jù),Geodatabse數(shù)據(jù)庫則用來存儲和處理地圖數(shù)據(jù)。最終將處理好的微博數(shù)據(jù)和地圖數(shù)據(jù)導(dǎo)入到一個數(shù)據(jù)庫中。本系統(tǒng)選用的數(shù)據(jù)庫是Geodatabase,能與CityEngine(以下簡稱CE)無縫結(jié)合,形成完整數(shù)據(jù)庫,為下一步前端系統(tǒng)設(shè)計(jì)提供數(shù)據(jù)支持。
2.1.1 微博數(shù)據(jù)的獲取
對于微博數(shù)據(jù)的獲取模塊,首先聚合新浪微博和騰訊微博及大眾點(diǎn)評網(wǎng)開放平臺API于開發(fā)的數(shù)據(jù)抽取系統(tǒng)中。對新街口地區(qū)特定的點(diǎn)、話題以及特定時間對特定點(diǎn)等進(jìn)行時空數(shù)據(jù)抽取。通過發(fā)送http請求到開放平臺,返回JSON數(shù)據(jù),對JSON數(shù)據(jù)進(jìn)行解析,將抽取到的南京市新街口地區(qū)的商戶點(diǎn)評信息以及與南京市新街口地區(qū)有關(guān)的微博搜索數(shù)據(jù)入庫。對文本數(shù)據(jù)采用網(wǎng)絡(luò)上開源分詞工具盤古分詞來進(jìn)行分詞,提取存在的情感詞及情感值。表1為抽取到的部分微博數(shù)據(jù)條數(shù)。
表1 抽取到的微博數(shù)據(jù)條數(shù)
2.1.2 微博數(shù)據(jù)的預(yù)處理
由于通過數(shù)據(jù)抽取系統(tǒng)抽取到的微博數(shù)據(jù)數(shù)量非常大并且情感信息復(fù)雜,要有效地運(yùn)用這些微博數(shù)據(jù),必須進(jìn)行詳細(xì)的數(shù)據(jù)預(yù)處理,由此獲得方便在CE中運(yùn)用的微博數(shù)據(jù)。以新街口地區(qū)微博數(shù)據(jù)的預(yù)處理為例進(jìn)行說明。
1) 首先對 ArcGIS Editor for OpenstreetMap 獲取的房屋底面數(shù)據(jù)(以下簡稱OSM數(shù)據(jù))獲取中心點(diǎn),并以這些中心點(diǎn)為圓心、 50 m為半徑作緩沖區(qū)分析。對房屋底面數(shù)據(jù)的中心點(diǎn)作緩沖區(qū)分析的目的在于對微博數(shù)據(jù)進(jìn)行抽稀處理,使落在緩沖區(qū)內(nèi)的點(diǎn)被保留,落在緩沖區(qū)外的點(diǎn)被排除,與房屋底面數(shù)據(jù)相關(guān)的微博數(shù)據(jù)被保留,而與房屋底面數(shù)據(jù)關(guān)系不大的微博數(shù)據(jù)被排除,以此來對微博數(shù)據(jù)進(jìn)行有效的利用。
2) 由于在緩沖區(qū)內(nèi)的每個微博點(diǎn)數(shù)據(jù)都有情感值,需要對這些情感值獲取平均值,用這個平均值來表達(dá)此地區(qū)的情感信息。首先,需要獲取每個緩沖區(qū)內(nèi)微博點(diǎn)的情感值總分,除以緩沖區(qū)內(nèi)的微博點(diǎn)個數(shù),以此來獲取緩沖區(qū)內(nèi)微博點(diǎn)的情感值平均分。將獲取的微博點(diǎn)情感平均分分別賦給房屋底面數(shù)據(jù)中心點(diǎn)。獲取到的微博點(diǎn)平均分在2~6分之間,分?jǐn)?shù)越高則表示此地區(qū)的情感值越高,即此地區(qū)評價越好。因此,需要將這些情感平均分分段,以便在CE中用不同的符號來表達(dá)。將這些情感分?jǐn)?shù)分為(2~3)、(3~4)、(4~5)、(>5)4個分段,在CE中分別用下雨、陰天、多云、晴天來表達(dá)。微博數(shù)據(jù)的預(yù)處理流程如圖2所示。
圖2 微博數(shù)據(jù)預(yù)處理過程
由于本系統(tǒng)所使用的數(shù)據(jù)要求是南京市新街口地區(qū)的實(shí)時數(shù)據(jù),因此不能選用現(xiàn)成的南京市新街口的數(shù)據(jù),需要通過一定的方法從網(wǎng)上獲取所需要的數(shù)據(jù)。由于所需要的數(shù)據(jù)類型不同,所使用的方法也不盡相同。新街口地區(qū)的影像圖是通過稻歌軟件(http://www.daogle.com)截取的,即在稻歌軟件中通過鼠標(biāo)直接點(diǎn)取要截取區(qū)域的左上角和右下角坐標(biāo),設(shè)置好地圖級別與地圖類型,最后選擇好輸出文件夾點(diǎn)擊輸出即可;道路以及房屋底面數(shù)據(jù)使用OpenStreetMap(http://www.openstreetmap.org/copyright)在網(wǎng)頁上爬取,即在OpenStreetMap網(wǎng)頁中輸入研究區(qū)域的經(jīng)緯度,點(diǎn)擊導(dǎo)出即可。OpenStreetMap?是開放數(shù)據(jù),由OpenStreetMap基金會(OSMF)采用開放數(shù)據(jù)共享開放數(shù)據(jù)庫許可協(xié)議(ODbL)授權(quán);地鐵數(shù)據(jù)通過ArcGIS中的插件ArcTilerPlugin1.4.2(http://www.a(chǎn)rctiler.com/index.html)獲??;底圖數(shù)據(jù)是通過之前獲取的影像圖在ArcGIS中經(jīng)過重新配色,再經(jīng)過圖幅配準(zhǔn)處理得到的[2]。
通過以上方法即可得到南京市新街口地區(qū)的地圖數(shù)據(jù),將其導(dǎo)入到ArcGIS的數(shù)據(jù)庫Geodatabase中,圖3所示為獲取并預(yù)處理之后的南京市新街口地區(qū)的二維地圖數(shù)據(jù)。
圖3 研究區(qū)二維地圖數(shù)據(jù)
要實(shí)現(xiàn)本系統(tǒng)的功能,需要在CE中進(jìn)行前端系統(tǒng)設(shè)計(jì)。在CE中進(jìn)行設(shè)計(jì),首先必須創(chuàng)建場景。打開CE,新建一個場景,選擇投影坐標(biāo)為墨卡托投影,將之前得到的底圖轉(zhuǎn)換成和數(shù)據(jù)庫一致的投影(這里選擇的是墨卡托投影),分別將底圖和數(shù)據(jù)庫加載到場景中,效果如圖4所示。再在這個場景中進(jìn)行規(guī)則建模,將二維的數(shù)據(jù)轉(zhuǎn)化為三維的城市,達(dá)到三維城市建模的目的。
圖4 Cityengine中二維場景圖
規(guī)則是CE中自帶的一種腳本語言,通過編寫規(guī)則代碼可以進(jìn)行大批量的模型生成。規(guī)則定義一系列幾何和紋理特征,決定模型如何生成?;谝?guī)則建模的思想是定義規(guī)則,反復(fù)優(yōu)化設(shè)計(jì),以創(chuàng)造更多細(xì)節(jié)。當(dāng)有大量模型創(chuàng)造和設(shè)計(jì)時,基于規(guī)則建??梢怨?jié)省大量時間和成本[3-6]。
1) 公共設(shè)施規(guī)則的編寫思路。這里的公共設(shè)施包括操場、花壇、停車場、公園、草地、公交站臺、交通燈等。由于本系統(tǒng)追求卡通化的效果,而這些公共設(shè)施的結(jié)構(gòu)又極為復(fù)雜,故在規(guī)則當(dāng)中使用Dae模型。Dae模型是一種在3DMax或者Sketchup導(dǎo)出的格式,能與CE無縫結(jié)合[7]。以下為公共設(shè)施建模的方法:① 用extrude函數(shù)進(jìn)行拉伸操作;②用i函數(shù)導(dǎo)入dae模型;③用comp函數(shù)分面,方便為每個面貼圖;④用setupProjection函數(shù)設(shè)置紋理的大小,以及紋理對應(yīng)的紋理坐標(biāo)系圖; ⑤用texture函數(shù)導(dǎo)入圖片并貼圖;⑥ 用ProjectUV函數(shù)結(jié)束創(chuàng)建紋理。
2) 房屋規(guī)則的編寫思路。對于房屋可以不用Dae模型導(dǎo)入,只在CE中用代碼來實(shí)現(xiàn)。本系統(tǒng)的房屋大體上分為南京市新街口中心的標(biāo)志性建筑和新街口周邊的民房兩大類。首先,對于標(biāo)志性建筑,需要先用extrude函數(shù)拉伸一定的高度,此高度可以隨著屬性進(jìn)行調(diào)節(jié);再用comp函數(shù)對建筑分為前、后、左、右、上5個面,對于每個面再運(yùn)用split(x)函數(shù)沿x軸方向切分為不同的長度,對這些劃分的長度運(yùn)用texture,projectUV,setupProjection這三個函數(shù)進(jìn)行貼圖[8,9]。
對于南京市新街口周邊的民房,與標(biāo)志性建筑建模不同的地方有兩個方面。首先,拉伸的高度不同;其次,南京市新街口地區(qū)的民房屋頂不是通過貼圖來實(shí)現(xiàn)的,而是需要使用roofGable函數(shù)來具體設(shè)置屋頂?shù)臉邮健?/p>
3)道路規(guī)則的編寫思路。首先將道路分為路燈、人行道、樹木、人和交通工具5大模塊。然后對這些模塊分別編寫規(guī)則,其中對于樹木、人、交通工具和人行道運(yùn)用i函數(shù)引入dae模型來實(shí)現(xiàn),對于路燈則采用之前獲取的交通燈的dae模型來實(shí)現(xiàn)。
4)地鐵規(guī)則編寫思路。地鐵需要對其進(jìn)行拉伸負(fù)值來實(shí)現(xiàn)。拉伸負(fù)值后會發(fā)現(xiàn),在地上有一部分可見,需要運(yùn)用split(y)函數(shù)沿y方向進(jìn)行分割。將地上分為2個單位,地下分為18個單位,通過NIL函數(shù)將地上部分隱藏。由于本系統(tǒng)是卡通風(fēng)格,對地下部分可用color函數(shù)進(jìn)行綠色染色。
5)微博大數(shù)據(jù)的表達(dá)。對于之前獲取的微博數(shù)據(jù),需要用不同的模型來表達(dá)。將微博數(shù)據(jù)分為4個分段,即(2~3)、(3~4)、(4~5)、(>5),運(yùn)用下雨、陰天、多云、晴天來表現(xiàn)。首先,用extrude函數(shù)拉伸一定的高度,此高度必須比微博數(shù)據(jù)相對應(yīng)的建筑物的高度高。建筑物的高度信息是在網(wǎng)頁上獲取的,將這些高度信息加入到建筑物圖層屬性中,通過屬性設(shè)定建筑物的高度,進(jìn)而建筑物上的微博情感點(diǎn)高度也可通過屬性獲得。將微博數(shù)據(jù)點(diǎn)的高度設(shè)置為比與之對應(yīng)的建筑物高出20 m。微博數(shù)據(jù)點(diǎn)的高度確定之后,用i函數(shù)導(dǎo)入在sketchup中制作好的dae模型,再用s函數(shù)定義為點(diǎn)狀要素,即可完成微博情感數(shù)據(jù)的表達(dá)。具體實(shí)現(xiàn)方法為:①用Attr函數(shù)定義常量; ②用case和else函數(shù)分情況討論旋轉(zhuǎn)角度和尺寸大??;③用s函數(shù)設(shè)置模型的尺寸、r函數(shù)設(shè)置旋轉(zhuǎn)角度、t函數(shù)設(shè)置寬度的大?。虎?用i函數(shù)導(dǎo)入dae模型。
由于系統(tǒng)中一些數(shù)據(jù)通過手動矢量化得到,其位置可能會與實(shí)際有些偏差,需要進(jìn)行后期的位置調(diào)整和規(guī)劃設(shè)計(jì)。對于地圖數(shù)據(jù),通過修改CGA規(guī)則的相關(guān)屬性來修改模型的高度等特征,以動態(tài)的方式來調(diào)整整體顯示效果,從而增加CGA規(guī)則的靈活性。而對于一些公共設(shè)施,則需要通過手動調(diào)節(jié)來調(diào)整其位置。經(jīng)過調(diào)整后的效果如圖5所示。
圖5 整體效果圖
對微博大數(shù)據(jù)的自動抽取進(jìn)行研究,設(shè)計(jì)開發(fā)微博大數(shù)據(jù)抽取系統(tǒng),對獲取的微博大數(shù)據(jù)進(jìn)行分析,并且將分析后的微博大數(shù)據(jù)進(jìn)行三維建模顯示,將大數(shù)據(jù)技術(shù)與三維建模技術(shù)結(jié)合起來,幫助用戶直觀地理解數(shù)據(jù),發(fā)現(xiàn)規(guī)律,有利于為消費(fèi)者提供高質(zhì)量的商戶信息,同時也有利于促進(jìn)商戶不斷改善其服務(wù)水平與商品質(zhì)量,對實(shí)際生產(chǎn)生活具有重要意義。
[1] 王軍,劉金輝.大數(shù)據(jù)的國內(nèi)外研究現(xiàn)狀及發(fā)展動態(tài)分析[J].電子技術(shù)與軟件工程,2015(23):200
[2] 李學(xué)祥.GIS數(shù)據(jù)動態(tài)獲取方法研究[J].地理信息世界,2010(5):77-82
[3] 徐汝坤.Esri CityEngine:開啟三維規(guī)則建模新篇章[M].北京:中國信息技術(shù)有限公司,2012
[4] 董曉非.Esri CityEngine中文教程[M].北京:Esri 中國信息技術(shù)有限公司,2012
[5] 董曉非.Generating a 3D City[M].北京:Esri 中國信息技術(shù)有限公司,2012
[6] 李德仁.從數(shù)字地球到智慧地球[J].武漢大學(xué)學(xué)報(信息科學(xué)版),2010,35(2):127-132
[7] 呂永來,李曉莉.基于CityEngine的三維建筑模型研究[D].合肥:合肥工業(yè)大學(xué),2012
[8] 花利忠,王趙兵.基于CityEngine與ArcGIS Flex API的校園WebGIS系統(tǒng)[D].合肥:合肥工業(yè)大學(xué),2013
[9] 呂永來,李曉莉.基于CityEngine平臺的高速鐵路建模方法的研究與實(shí)現(xiàn)[D].合肥:合肥工業(yè)大學(xué),2012
P208
B
1672-4623(2017)10-0046-03
10.3969/j.issn.1672-4623.2017.10.014
2016-07-20。
項(xiàng)目來源:國家自然科學(xué)基金資助項(xiàng)目( 41101374) ;水利部公益性行業(yè)科研專項(xiàng)經(jīng)費(fèi)資助項(xiàng)目( 201201025)。
郭正揚(yáng),碩士,研究方向?yàn)镚IS系統(tǒng)開發(fā)與應(yīng)用。