歡迎來到天天文庫
瀏覽記錄
ID:40738954
大?。?.33 MB
頁數:9頁
時間:2019-08-07
《arcgis分式標注》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。
1、也談分數標注的問題經常被朋友問到分數標注的問題,如林班的標注。在壇子里搜索,大伙給出了很多方案。最常見的是勾選advance后,用VBA語言,利用“—”來劃那條橫線,或者利用對分子加下劃線的形式加橫線。下邊看下具體例子【其中引用了很多以前壇子里大家滴成果】:1)如只想簡單的標注成分數形式,那是很easy的,如以shape_length作分子,shape_area作分母,則其設置方式為:試驗1:圖1簡單分數形式標注設置即,對分子[Shape_Length]字段加下劃線,然后用vbnewline換行,再加上[Shape_Area]字段即可。1."
2、ND>"&[Shape_Length]&""&vbnewline&[Shape_Area]復制代碼此時存在的問題是,有可能分子的長度小于分母,導致下劃線長度不夠,缺少美觀,改進方式為,增加長度判斷,并以"—"代替下劃線,則此時將分子、橫線和分母,作三行顯示。其設置如下:試驗2圖2調整中間橫線長度的設置用len([字段])來獲取字段值的長度,如12.34,其長度為4,而123.45,其長度為5。用if..then..endif條件判斷語句,使max取得最長字段的長度,作為"—"長度計算值。string(int(max/2),"—")的作
3、用為:繪制int(max/2)個"—",而int(max/2)是因為一個中文輸入法下的"—"占據了2個英文字符的長度,因此要除2取整。1.FunctionFindLabel([Shape_Length],[Shape_Area],[DM])2.max=len([Shape_Length])3.ifmax4、ne&[Shape_Area]7.EndFunction復制代碼標注作如上設置,使其聚合:圖3解決標注行間過于分散的設置完成上述設置,則純粹的分子/分母的標注形式就完成了。但往往我們的需求不止于此,還需要在分數的左邊再加一個字段,如圖:試驗3:圖43個字段的分數形式設置即,在上一步的基礎上,對分子,分母前分別加上與[DM]字段等長的空格,用s=string(len([DM]),"")表示。然后把[DM]字面放在橫線所在行即可。1.FunctionFindLabel([Shape_Length],[Shape_Area],[DM])2.max=le5、n([Shape_Length])3.ifmax6、--------------------------------------------以上為壇子里大家的總結,以下為本人心得-------------------^-^為此,我試驗了很多方法,把代碼修改來修改去,始終無法達以完美的效果。突然意識到,這個問題跟代碼無關,而應該跟arcmap內部的設置有關。的確,仔細看上述所有試驗的標注發(fā)現(xiàn)兩點:1)標注是默認居中對齊的(試驗1、2可以看以明顯效果)2)系統(tǒng)默認把我加的空格給忽略掉了。(這是導致試驗3無效的主因)從上述著手,我找到兩種不同的解決方案。對于10.1及以后版本中,maplex增加了一個細7、小的新功能:圖5去除標注內多余空格的設置在labelexpression界面,切換到maplex選項卡,發(fā)現(xiàn)有一個叫removeextraspacefromlabel的功能項,默認設置是勾選的。它的作用為:去除標注中無效的空格,所謂無效,是指標注行開始和末尾處的空格。即,我們不論在分子或分母(因為此時分子、分母都是單獨成行的)的前或后任意加多少空格,都會被忽視掉。因此,去除勾選后,查看效果圖如下:試驗4:圖6不勾選“去除標注內多余空格”設置的效果注意,此時為了對齊,做了很多小改動,如增加了s0變量,以及對s變量的修改,s=string(len([8、DM])*2+s0,""),對[DM]長度*2的目的,也在于中文字符占兩個字節(jié)長度而英文字符占一上字節(jié)長度。S0是取的是分子分母長度差的
4、ne&[Shape_Area]7.EndFunction復制代碼標注作如上設置,使其聚合:圖3解決標注行間過于分散的設置完成上述設置,則純粹的分子/分母的標注形式就完成了。但往往我們的需求不止于此,還需要在分數的左邊再加一個字段,如圖:試驗3:圖43個字段的分數形式設置即,在上一步的基礎上,對分子,分母前分別加上與[DM]字段等長的空格,用s=string(len([DM]),"")表示。然后把[DM]字面放在橫線所在行即可。1.FunctionFindLabel([Shape_Length],[Shape_Area],[DM])2.max=le
5、n([Shape_Length])3.ifmax6、--------------------------------------------以上為壇子里大家的總結,以下為本人心得-------------------^-^為此,我試驗了很多方法,把代碼修改來修改去,始終無法達以完美的效果。突然意識到,這個問題跟代碼無關,而應該跟arcmap內部的設置有關。的確,仔細看上述所有試驗的標注發(fā)現(xiàn)兩點:1)標注是默認居中對齊的(試驗1、2可以看以明顯效果)2)系統(tǒng)默認把我加的空格給忽略掉了。(這是導致試驗3無效的主因)從上述著手,我找到兩種不同的解決方案。對于10.1及以后版本中,maplex增加了一個細7、小的新功能:圖5去除標注內多余空格的設置在labelexpression界面,切換到maplex選項卡,發(fā)現(xiàn)有一個叫removeextraspacefromlabel的功能項,默認設置是勾選的。它的作用為:去除標注中無效的空格,所謂無效,是指標注行開始和末尾處的空格。即,我們不論在分子或分母(因為此時分子、分母都是單獨成行的)的前或后任意加多少空格,都會被忽視掉。因此,去除勾選后,查看效果圖如下:試驗4:圖6不勾選“去除標注內多余空格”設置的效果注意,此時為了對齊,做了很多小改動,如增加了s0變量,以及對s變量的修改,s=string(len([8、DM])*2+s0,""),對[DM]長度*2的目的,也在于中文字符占兩個字節(jié)長度而英文字符占一上字節(jié)長度。S0是取的是分子分母長度差的
6、--------------------------------------------以上為壇子里大家的總結,以下為本人心得-------------------^-^為此,我試驗了很多方法,把代碼修改來修改去,始終無法達以完美的效果。突然意識到,這個問題跟代碼無關,而應該跟arcmap內部的設置有關。的確,仔細看上述所有試驗的標注發(fā)現(xiàn)兩點:1)標注是默認居中對齊的(試驗1、2可以看以明顯效果)2)系統(tǒng)默認把我加的空格給忽略掉了。(這是導致試驗3無效的主因)從上述著手,我找到兩種不同的解決方案。對于10.1及以后版本中,maplex增加了一個細
7、小的新功能:圖5去除標注內多余空格的設置在labelexpression界面,切換到maplex選項卡,發(fā)現(xiàn)有一個叫removeextraspacefromlabel的功能項,默認設置是勾選的。它的作用為:去除標注中無效的空格,所謂無效,是指標注行開始和末尾處的空格。即,我們不論在分子或分母(因為此時分子、分母都是單獨成行的)的前或后任意加多少空格,都會被忽視掉。因此,去除勾選后,查看效果圖如下:試驗4:圖6不勾選“去除標注內多余空格”設置的效果注意,此時為了對齊,做了很多小改動,如增加了s0變量,以及對s變量的修改,s=string(len([
8、DM])*2+s0,""),對[DM]長度*2的目的,也在于中文字符占兩個字節(jié)長度而英文字符占一上字節(jié)長度。S0是取的是分子分母長度差的
此文檔下載收益歸作者所有