1.摘要
? ? ? ?如果我們的應(yīng)用想實(shí)現(xiàn)點(diǎn)擊地圖的某一個(gè)位置幼衰,自動(dòng)識(shí)別點(diǎn)擊位置附近POI點(diǎn)的功能(反向地理編碼)靴跛。在Arcgis中,就只有通過地址定位器來實(shí)現(xiàn)渡嚣。其實(shí)官方文檔已經(jīng)給出很詳細(xì)的制作步驟梢睛,而且還有中文版的。那在這里只簡(jiǎn)單總結(jié)一下生成過程识椰,然后說一下我在實(shí)際項(xiàng)目中遇到的問題绝葡。
2.生成
? ? ? ?打開Arcmap,加載進(jìn)圖層腹鹉,這邊我用的版本是10.2.2藏畅。用Arcmap自帶的搜索功能(Ctrl+F)搜索Locator,點(diǎn)擊 Create Address Locator 【圖1】進(jìn)入【圖2】界面。
? ? ? 在Address Locator Style里面選擇要生成的樣式功咒,里面內(nèi)置的都是美國(guó)的一些內(nèi)置樣式愉阎,最常用的我們有點(diǎn)(建筑物)绞蹦,線(道路),面(村落)三種榜旦,分別可以對(duì)應(yīng) General - Single Field幽七, US Address - Street Name,US Address - State。(面這塊我沒做過溅呢,我猜的澡屡,誰驗(yàn)證了告訴我一下,哈哈)
? ? ? 我們?cè)赗eference Data里面選要添加的圖層藕届,不要貪心挪蹭,只能添加一個(gè)圖層亭饵。Role選Primary Table休偶,接著FieldMap下面帶星號(hào)的必填項(xiàng)選擇你想被反向編碼的POI信息,這里我以點(diǎn)為例辜羊,反向編碼坐標(biāo) '名稱'【圖3】
? ? ? 有個(gè)小建議踏兜,把進(jìn)度條往下拖動(dòng),記得選保存地點(diǎn)八秃,默認(rèn)的地方藏得比較深碱妆,用到的時(shí)候不好找∥羟【圖4】
? ? ? 點(diǎn)OK疹尾,開始生成。單個(gè)圖層的Locator生成完畢骤肛。下面我們來說說多圖層纳本,生成復(fù)合Locator,這在項(xiàng)目中應(yīng)用的很普遍腋颠,因?yàn)橥ǔ碚f我們項(xiàng)目需要編碼的地理信息肯定不止一種圖層繁成。接下來還是搜索Locator,這次我們選Create Composite Address Locator【圖5】,Address Locators里添加進(jìn)去所有我們想復(fù)合起來的單個(gè)Locator淑玫,也就是剛才生成的那些單個(gè)Locator【圖6】(剛才沒有自己選儲(chǔ)存路徑的后悔去吧)巾腕。在下面我們同樣的選擇路徑,點(diǎn)擊OK生成完畢絮蒿!
3.我的項(xiàng)目經(jīng)驗(yàn)
1.復(fù)合地址定位器只加自己需要用到的尊搬,多余的不要加!因?yàn)榭赡軙?huì)造成編碼干擾土涝,如果兩個(gè)POI點(diǎn)離得很近的話佛寿。你的手指頭不可能點(diǎn)的非常精確,這就需要多余的代碼處理了回铛,增加工作量狗准。
2.地址定位器可以生成多個(gè)克锣,一個(gè)項(xiàng)目中不一定只用一個(gè),按需加載需要的腔长。理由同上袭祟,比如道路和建筑物,有時(shí)候我們可以生成道路一個(gè)符合Locator,建筑物一個(gè)Locator,點(diǎn)擊地圖只識(shí)別建筑物的POI信息(可以參考高德地圖的效果)捞附。
3.為什么生成出來的.loc不能用巾乳。這個(gè)我也沒查出來原因,直接生成的為什么不能用鸟召,不過我找出了解決辦法胆绊。解決辦法是添加到.geodatabase生成一遍地理數(shù)據(jù)庫就好了,可以把生成的locator單獨(dú)拿出來用欧募,生成地理數(shù)據(jù)庫請(qǐng)參考我上一篇文章压状。
4.MultiPoint類型用SingleKey類型無效!即點(diǎn)擊了位置反編碼不出來跟继。需要把點(diǎn)轉(zhuǎn)換成Point才可以种冬。