1.摘要
? ? ? 在上一篇文章我們說了Arcgis生成離線地圖的方法,但是一個地圖類應(yīng)用,只有底圖是不夠的。我們的應(yīng)用大多數(shù)情況下都需要地點查詢的功能金刁,在離線的情況下,我們有兩種方式议薪,一種是通過Android原生的SQLite數(shù)據(jù)庫尤蛮,另一種就是通過Arcgis提供的geodatabase地理數(shù)據(jù)庫。在這里我們說一下基礎(chǔ)的geodatabase數(shù)據(jù)庫的生成以及生成geodatabase常見的信息丟失問題笙蒙。本文Arcmap軟件用的版本是10.2.2,也是可以生成.geodatabase的最低版本。
2.離線數(shù)據(jù)庫的生成
? ? ? 1.和生成.tpk離線地圖的方式差不多庆锦,我們需要先打開制作runtime content的界面【圖1】捅位。在這里有個需要注意的地方,就是這個方式導(dǎo)出的是當前可視區(qū)域內(nèi)要素搂抒,所以我們?nèi)绻枰烧麄€地圖范圍內(nèi)的geodatabase艇搀,那么請把地圖縮放到最小,讓整個地圖都顯示出來然后再進行File->Share As->Runtime content求晶。(還有種方式是使用工具箱中的System Toolboxes -> Data Management Tools ->Package -> Create Runtime Content焰雕,更加靈活,默認導(dǎo)出的是所有的要素數(shù)據(jù)芳杏,但是比較麻煩矩屁,這里不推薦)打開之后如【圖2】
? ? ? 2.在Runtime Content標簽頁面下的Save runtime content to 選擇.geodatabase要存儲的位置【粽裕【圖2】
? ? ? 2.Feature and Tabular Data標簽頁下的東西是問是否包含表格數(shù)據(jù)和一些其他信息吝秕,Basemap標簽至今沒有用到過,這個我們一般保持原樣就行了空幻,不動它烁峭。
? ? ? 3.如果我們的應(yīng)用需要做離線的路徑規(guī)劃,那么我們需要把路網(wǎng)數(shù)據(jù)集集成到.geodatabase中秕铛,選擇Network Data標簽约郁,Include network data from the current map。(arcmap會自動檢測你的圖層是否包含路網(wǎng)數(shù)據(jù)集但两,如果不包括鬓梅,則這塊是不可選的。)如果不需要谨湘,請?zhí)^這一步己肮∈堪溃【圖3】
? ? ? 4.如果你的應(yīng)用需要點擊地圖某個位置,自動識別點擊位置的地理信息功能谎僻,我們就需要把地址定位器集成到.geodatabase里面去娄柳,選擇Locator標簽下面的Use a locator from the current map,這里選擇你要集成進去的地址定位器艘绍。如果本次打開的.mxd沒有生成過地址定位器赤拒,那么這里檢測不到,不可選用诱鞠。正確的步驟是先生成地址定位器挎挖,再生成.geodatabase。如果不需要航夺,請直接跳過這一步蕉朵。【圖4】
? ? ? 5.Analyze阳掐,如果沒有錯誤即可直接Share生成.geodatabase始衅。
3.常見問題
1.生成的.geodatabase數(shù)據(jù)不全,發(fā)生了數(shù)據(jù)丟失的情況缭保。
? ? ? 發(fā)生這種情況一般的有以下兩種原因:1汛闸、沒有調(diào)整到全部地圖的可見范圍生成地圖,本文的方法是導(dǎo)出的是當前可視區(qū)域內(nèi)要素艺骂,我們通常把地圖全部可見之后再次縮放一點诸老,然后再進行 runtime content 即可解決。2钳恕、通常是由于數(shù)據(jù)格式異常别伏,錄入數(shù)據(jù)不規(guī)范導(dǎo)致,arcmap生成geodatabase的時候比較挑食忧额,有些字段里的數(shù)據(jù)不合胃口就直接不管了畸肆。解決辦法是移動端不需要展示的字段數(shù)據(jù)可以直接通過arcmap刪掉(別忘了備份),一方面可以減小數(shù)據(jù)包體積宙址,一方面可以解決丟失數(shù)據(jù)的問題轴脐;如果字段必須存在,那么只能從數(shù)據(jù)本身著手抡砂,我處理的數(shù)據(jù)一般是由于中文標點有問題大咱,全文替換成英文的就可以了。比較常見的有中文的頓號注益,句號碴巾,逗號,分號丑搔,引號還有數(shù)據(jù)前面有空格厦瓢,甚至是數(shù)據(jù)直接為空提揍。也不排除別的字符問題,畢竟是國外的軟件煮仇,對中文支持不太好劳跃。這種情況就只能一個一個進行嘗試了。
2.Analyze的時候報錯Multiple workspaces for feature and tabular data are not supported for runtime content 浙垫。
? ? ? 通常來說刨仑,生成geodatabase的圖層shp必須存在于同一個文件夾下面,發(fā)生這種情況我們可以手動把shp都放到一個文件夾下面;如果是在gdb數(shù)據(jù)庫當中的夹姥,那么需要用ArcCatalog工具都導(dǎo)入到一個數(shù)據(jù)庫當中杉武,然后在進行Share.如果存在路網(wǎng)數(shù)據(jù)集,那么只能把shp都導(dǎo)入到gdb數(shù)據(jù)庫當中進行圖層加載才可以辙售,如果把gdb數(shù)據(jù)導(dǎo)出為shp生成會出問題轻抱。