<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Flyingis

    Talking and thinking freely !
    Flying in the world of GIS !
    隨筆 - 156, 文章 - 16, 評論 - 589, 引用 - 0
    數據加載中……

    2006年8月31日

    Flyingis on BlogJava 停止更新

        文章在多個博客間來回拷貝切換比較麻煩,我寫博客比較注重排版,格式調整也花費了不少時間,并且多個博客使得大家的討論也分散在不同的地方,因此今后BlogJavaJavaEye上的文章停止更新(已經停止一段時間了),感謝大家一直以來的關注,今天是愚人節,但這條消息是正式聲明:)

        博客園上繼續保持更新,請訪問:

        http://www.cnblogs.com/flyingis

        歡迎拍磚交流!

        Flyingis

    posted @ 2008-04-01 11:01 Flyingis 閱讀(2181) | 評論 (1)編輯 收藏

    ArcGIS 9.2 SP4 補丁升級

        最近一直在出差,今天發現ArcGIS 9.2 sp4補丁已經出來了,打破了9.0三個補丁包的記錄及單位時間內的補丁密度:)。如果是全新的應用系統,請直接升級,否則先參考這兩篇說明:

        A complete list of the issues that have been fixed in this service pack is available here.
        A list of the main enhancements that have been made in the 9.2 Service Packs is available here.

        確認需要打上sp4補丁?那就開始吧:所有sp4補丁鏈接

        ArcGIS 9.2每次釋放出的補丁不僅解決了許多已發現的bug,更是在功能、文檔方面做了大量的改進,所以現在準備開發或正在開發的應用系統都應該盡量升級到最新補丁,避免被一些無厘頭的問題扯了后腿。

    posted @ 2007-12-11 23:13 Flyingis 閱讀(3571) | 評論 (8)編輯 收藏

    跨網段部署 ArcGIS Desktop 浮動 License

        如果單獨在服務器上部署ArcGIS桌面浮動License,一般的都需要處理防火墻端口問題,這種環境在校園機房中最為典型,9.x版本需要開放27004端口,這樣所有機器都可以訪問到服務器上的License,但是在跨網段環境中,還需要額外的處理。

        使用Windows XP/2003自帶的防火墻,除了開發27004 TCP端口外,還應將lmgrd.exe、ARCGIS.exe添加到例外程序中,其他商業防火墻同樣需要放開這兩個程序的訪問控制,否則將無法連接到License服務器。

        如果使用的是第三方防火墻,如瑞星、天網,則只需開放27004/tcp端口。

    posted @ 2007-12-11 23:12 Flyingis 閱讀(2362) | 評論 (0)編輯 收藏

    遠程連接 SuSE Linux 設置方法

        作者:Flyingis

        且不說遠程連接的便利性,就是機房里那轟轟的高分貝就足以讓你的耳膜形成習慣性振動,何況還需要集中精神工作呢,在網絡帶寬允許的情況下,還是選擇遠程吧。遠程連接的客戶端工具有很多,有商業的如Symantec pcAnywhere等,但我用的最多的還是Xmanager、VNC、Windows自己的遠程連接工具、還有Telnet,和Windows環境一樣,默認情況下遠程連接是沒有打開的,連接SuSE Linux服務器就需要做一些設置,其他Linux服務器相仿。

        Xmanager

    1. 編輯 '/etc/opt/kde3/share/config/kdm/kdmrc' file in config section '[XDMCP]'
        更改"Enable=false" to "Enable=true",將port=177的屏蔽去掉。

    2. 編輯 '/etc/sysconfig/displaymanager'
        更改'DISPLAYMANAGER_REMOTE_ACCESS="no"' to 'DISPLAYMANAGER_REMOTE_ACCESS="yes"'

        然后使用rcxdm restart命令來重啟xdm服務,一定要有/opt/kde3/bin/kdm進程存在,如果沒有使用rcxdm restart命令看看是否能重啟服務,并且用netstat -a |grep xdm來看看端口是否在listen。

        或者是,YAST中的Network Service打開Remote Administration,然后運行rcxdm restart。

        VNC

        用root用戶更改/root/.vnc下的xstart文件,然后注釋最后一行,再加上gnome - session &

        執行vncstart,這樣就可以通過VNC連接了,如果不更改xstart文件,也可以通過vncstart打開VNC連接,但在客戶端連接后出現的是命令行窗口,和ssh類似。

    posted @ 2007-10-19 13:20 Flyingis 閱讀(4521) | 評論 (0)編輯 收藏

    分布式部署 ArcSDE 和 Oracle 服務

         摘要: 經常輾轉于各種服務器之間,漂浮于各種主流操作系統(AIX/Solaris/SuSE/RH/Windows)之上,被Windows慣壞了之后面對其他環境時經常會發現自己才疏學淺,有時間還是要惡補一下這些筆記,否則下次自己又忘了~~  閱讀全文

    posted @ 2007-10-14 22:43 Flyingis 閱讀(4198) | 評論 (1)編輯 收藏

    高效率編輯器 VIM-操作篇[轉載]

    原文鏈接:http://jmcpherson.org/editing.html
    翻譯鏈接:http://linuxtoy.org/archives/efficient-editing-with-vim.html


    這篇教程寫了在不同工作模式下使用 VIM 的一些基本技巧——即插入模式(insert mode), 命令模式(command mode), 存取文件等。目的是幫助剛剛接觸 VIM 的新手更加有效率的使用這個出色的編輯器。

    說明:在這篇文章里面,<C-X> 代表 Ctrl + X——就是按住 Ctrl 鍵然后再按 X。而且你可以在很多情況下使用 :help command 來獲得大部分命令的幫助,這個是 VIM 的內部幫助文件命令。


    高效率移動

    在插入模式之外

    基本上來說,你應該盡可能少的呆在插入模式里面,因為在插入模式里面 VIM 就像一個“啞巴”編輯器一樣。很多新手都會一直呆在插入模式里面,因為這樣易于使用。但 VIM 的強大之處在于他的命令行模式!你會發現,在你越來越了解 VIM 之后,你就會花越來越少的時間使用插入模式了。

    使用 h、j、k、l

    使用 VIM 高效率編輯的第一步,就是放棄使用箭頭鍵。使用 VIM,你就不用頻繁的在箭頭鍵和字母鍵之間移來移去了,這會節省你很多時間。當你在命令模式時,你可以用 h、j、k、l 來分別實現左、下、上、右箭頭的功能。一開始可能需要適應一下,但一旦習慣這種方式,你就會發現這樣操作的高效之處了。

    在你編輯你的電子郵件或者其他有段落的文本時,你可能會發現使用方向鍵和你預期的效果不一樣,有時候可能會一次跳過了很多行。這是因為你的段落在 VIM 看來是一個大的長長的行。這時你可以在按 h、j、k 或者 l 之前鍵入一個 g,這樣 VIM 就會按屏幕上面的行如你所愿的移動了。

    在當前行里面有效的移動光標

    很多編輯器只提供了簡單的命令來控制光標的移動(比如左、上、右、下、到行首/尾等)。VIM 則提供了很多強大的命令來滿足你控制光標的欲望。當光標從一點移動到另外一點,在這兩點之間的文本(包括這兩個點)稱作被“跨過”,這里的命令也被稱作是 motion。(簡單說明一下,后面會用到這個重要的概念)

    這里是常用到的一些命令(motion):

    • fx:移動光標到當前行的下一個 x 處。很明顯,x 可以是任意一個字母,而且你可以使用 ; 來重復你的上一個 f 命令。
    • tx:和上面的命令類似,但是是移動到 x 的左邊一個位置。(這真的很有用)
    • Fx:和 fx 類似,不過是往回找。
    • w:光標往前移動一個詞。
    • b:光標往后移動一個詞。
    • 0:移動光標到當前行首。
    • ^:移動光標到當前行的第一個字母位置。
    • $:移動光標到行尾。
    • ):移動光標到下一個句子。
    • ( :移動光標到上一個句子。

    在整個文件里面有效移動光標

    VIM 有很多命令,可以用來到達文件里面你想到達的地方。下面是一些在文件里面移動的命令:

    • <C-F>:向下移動一屏。
    • <C-B>:向上移動一屏。
    • G:到文件尾
    • numG:移動光標到指定的行(num)。(比如 10G 就是到第 10 行)
    • gg:到文件首
    • H:移動光標到屏幕上面
    • M:移動光標到屏幕中間
    • L:移動光標到屏幕下面
    • *:讀取光標處的字符串,并且移動光標到它再次出現的地方。
    • #:和上面的類似,但是是往反方向尋找。
    • /text:從當前光標處開始搜索字符串 text,并且到達 text 出現的地方。必須使用回車來開始這個搜索命令。如果想重復上次的搜索的話,按 n。
    • ?text:和上面類似,但是是反方向。
    • ma:在當前光標的位置標記一個書簽,名字為 a。書簽名只能是小寫字母。你看不見書簽的存在,但它確實已經在那里了。
    • `a:到書簽 a 處。注意這個不是單引號,它一般位于大部分鍵盤的 1 的左邊。
    • `.:到你上次編輯文件的地方。這個命令很有用,而且你不用自己去標記它。

    高效的輸入

    使用關鍵詞自動完成

    VIM 有一個非常漂亮的關鍵詞自動完成系統。這表示,你可以輸入一個長詞的一部分,然后按一下某個鍵,然后 VIM 就替你完成了這個長詞的輸入了。舉個例子:你有一個變量名為 iAmALongAndAwkwardVarName 在你寫的代碼的某個地方。也許你不想每回都自己一個一個字母的去輸入它。

    使用關鍵詞自動完成功能,你只需要輸入開始幾個字母(比如 iAmAL),然后按 <C-N>(按住 Ctrl,再按 N)或者 <C-P>。如果 VIM 沒有給出你想要的詞,繼續按,直到你滿意為止,VIM 會一直循環它找到的匹配的字符串。

    聰明的進入插入模式

    很多新手進入插入模式都只是用 i。這樣當然可以進入插入模式,但通常不是那么合適,因為 VIM 提供了很多進入插入模式的命令。下面是最常用的一些:

    • i:在當前字符的左邊插入
    • I:在當前行首插入
    • a:在當前字符的右邊插入
    • A:在當前行尾插入
    • o:在當前行下面插入一個新行
    • O:在當前行上面插入一個新行
    • c{motion}:刪除 motion 命令跨過的字符,并且進入插入模式。比如:c$,這將會刪除從光標位置到行尾的字符并且進入插入模式。ct!,這會刪除從光標位置到下一個嘆號(但不包 括),然后進入插入模式。被刪除的字符被存在了剪貼板里面,并且可以再粘貼出來。
    • d{motion}:和上面差不多,但是不進入插入模式。

    有效的移動大段的文本

    使用可視選擇(visual selections)和合適的選擇模式

    不像最初的 VI,VIM 允許你高亮(選擇)一些文本,并且進行操作。這里有三種可視選擇模式:

    • v:按字符選擇。經常使用的模式,所以親自嘗試一下它。
    • V:按行選擇。這在你想拷貝或者移動很多行的文本的時候特別有用。
    • <C-V>:按塊選擇。非常強大,只在很少的編輯器中才有這樣的功能。你可以選擇一個矩形塊,并且在這個矩形里面的文本會被高亮。

    在選擇模式的時候使用上面所述的方向鍵和命令(motion)。比如,vwww,會高亮光標前面的三個詞。Vjj 將會高亮當前行以及下面兩行。

    在可視選擇模式下剪切和拷貝

    一旦你高亮了選區,你或許想進行一些操作:

    • d:剪貼選擇的內容到剪貼板。
    • y:拷貝選擇的內容到剪貼板。
    • c:剪貼選擇的內容到剪貼板并且進入插入模式。

    在非可視選擇模式下剪切和拷貝

    如果你很清楚的知道你想拷貝或者剪切什么,那你根本就不需要進入可視選擇模式。這樣也會節省時間:

    • d{motion}:剪切 motion 命令跨過的字符到剪貼板。比如,dw 會剪切一個詞而 dfS 會將從當前光標到下一個 S 之間的字符剪切至剪貼板。
    • y{motion}:和上面類似,不過是拷貝。
    • c{motion}:和 d{motion} 類似,不過最后進入插入模式。
    • dd:剪切當前行。
    • yy:拷貝當前行。
    • cc:剪切當前行并且進入插入模式。
    • D:剪切從光標位置到行尾到剪貼板。
    • Y:拷貝當前行。
    • C:和 D 類似,最后進入插入模式。
    • x:剪切當前字符到剪貼板。
    • s:和x類似,不過最后進入插入模式。

    粘貼

    粘貼很簡單,按 p。

    使用多重剪貼板

    很多編輯器都只提供了一個剪貼板。VIM 有很多。剪貼板在 VIM 里面被稱為寄存器(Registers)。你可以列出當前定義的所有寄存器名和它們的內容,命令為“:reg”。最好使用小寫字母來作為寄存器的名稱,因為大寫的有些被 VIM 占用了。

    使用寄存器的命令為雙引號 “。

    比如:我們要拷貝當前行到寄存器 k。你應該按 “kyy。(你也可以使用 V”ky。為什么這樣也可以呢?)現在當前行應該已經存在了寄存器 k 里面直到你又拷貝了一些東西進入寄存器 k?,F在你可以使用命令 “kp 來粘貼寄存器 k 里面的內容到你想要的位置。

    避免重復

    令人驚奇的 . 命令

    在 VI 里面,輸入 . (小數點符號),將會重復你輸入的上一個命令。比如,你上個命令為“dw”(刪除一個詞),VI 將會接著再刪除一個詞。

    使用數字

    使用數字也是 VIM 強大的而且很節省時間的重要特性之一。在很多 VIM 的命令之前都可以使用一個數字,這個數字將會告訴 VIM 這個命令需要執行幾次。比如:

    • 3j 將會把光標向下移動三行。
    • 10dd 將會刪除十行。
    • y3″ 將會拷貝從當前光標到第三個出現的引號之間的內容到剪貼板。

    數字是擴展 motion 命令作用域非常有效的方法。

    記錄宏

    有時候,你會發現你自己在文章的每段或者每行都重復相同的一系列動作。VIM 允許你記錄一個宏來完成你的特殊需要。

    • qregister:記錄宏到寄存器 register,這里 register 是任意的你的寄存器的名字。比如 qa,將會記錄并且把宏存在寄存器 a 里面。
    • q:結束宏的記錄。
    • @register:使用存在寄存器 register 的宏。比如 @a,將會使用存在寄存器 a 里面的宏。

    必須要記住的是,宏只記錄了你的系列按鍵并且重復執行它們。它們不是魔法。因為在 VIM 里面完成目的的方法有很多,所以有時候你要小心選擇命令來記錄你的宏。因為它們會在所有你要執行它的地方執行。

    用 VIM 寫代碼

    VIM 是一個用來寫代碼的絕好編輯器,因為它有一些特性是專門為程序員而設計的。這里是一些常用的:

    • ]p:和 p 的功能差不多,但是它會自動調整被粘貼的文本的縮進去適應當前代碼的位置。試一下!
    • %:匹配花括號、方括號、括號等。在一個括號的上面,然后按 %,鼠標就會出現在匹配的另外一半括號處。
    • >>:縮進所有選擇的代碼
    • <<:和上面類似,但是反縮進
    • gd:到達光標所在處函數或者變量的定義處。
    • K:在 Man 里面查找光標當前所在處的詞。

    posted @ 2007-09-16 14:10 Flyingis 閱讀(3445) | 評論 (0)編輯 收藏

    AIX 和 Linux 基于 NFS 實現共享

         摘要: 這是ArcIMS在SuSE和AIX(1 suse+n aix)上分布式部署時的一個細節。  閱讀全文

    posted @ 2007-09-12 14:47 Flyingis 閱讀(4496) | 評論 (0)編輯 收藏

    又一個升級補丁引發的 arcgisserver cache 問題

        成功創建了地圖cache或將arcgis server補丁升級到最新版本后,出現arcgis catalog及web應用程序不能識別的情況,這是由于arcgis桌面軟件和arcgis server的補丁不是同一個版本造成的,如server已經升級到9.2 sp3,arcgis desktop還是sp2,解決方法就是將軟件補丁版本同步。

        大家都知道不同版本的ArcGIS軟件不能安裝在同一臺計算機上,如Desktop 9.1和ArcGIS Engine 9.2不能共存,在一臺計算機上必須保證版本一致,其實同一版本下的補丁也是一樣,ESRI官方網站釋放出補丁時都會有說明,所以盡量不要被這種問題拖了后腿:)

    posted @ 2007-09-07 18:04 Flyingis 閱讀(2448) | 評論 (0)編輯 收藏

    升級 ArcGIS Server 9.2 sp3 補丁

        作者:Flyingis

        下午花了一個半小時打上了ArcGIS 9.2 sp3全套補丁,現在ESRI發布補丁的速度大大快于以往,打補丁的速度越來越慢,這從側面反應出了程序存在的bug,但相對于9.2剛剛發步的時候,現在sp3已經完善許多了。

        ArcGIS Server 9.2 sp3解決了不少問題,強烈推薦最新使用server開發的項目先打上補丁,原有的9.2程序也可以運行在新補丁的環境中,暫時沒碰到什么問題,但是如果做了大量的cache,升級sp3補丁的時候就需要注意了!

        因為server補丁升級后會進行post installation,重新指定arcgisserver目錄,該目錄下所有文件的權限都會進行一次更新,如果之前生成了大量cache,更新權限會消耗大量的時間和計算機資源,以至于感覺計算機宕機,因此需要采用其他辦法來解決這個問題——偷梁換柱,再換回:)

    1.停止server服務。
    2.重命名現有的arcgisserver文件夾。
    3.進行post installation,注銷重新登錄計算機,再次停止server服務(post后服務會自動啟動)。
    4.刪除post后生成cache目錄。
    5.將原來arcgisserver備份文件夾中的cache目錄移動到post生成的arcgisserver目錄中。
    6.重新啟動server服務。

        OK,這樣就省事了。

        參考:ESRI Support, Article ID 32766

    posted @ 2007-09-04 16:45 Flyingis 閱讀(2856) | 評論 (1)編輯 收藏

    ArcGIS Server 開發系列(二)--Web ADF 編程

         摘要: 目標:
    根據查詢語句實現圖層信息查詢
    準備工作:
    1.Windows XP sp2中/英文版
    2.Visual Studio 2005中/英文版
    3.ArcGIS Server 9.2(我打上了sp2補?。?,創建一個ArcGIS Server服務,Map Server屬性中更改Pooling,使用池化連接方式,Progresses選擇“In a seperate process for each instance(high isolation)”,我的服務為“World”
    4.利用vs2005創建一個模板server應用--Web Mapping Application,并更改MapResourceManager屬性  閱讀全文

    posted @ 2007-08-14 13:55 Flyingis 閱讀(7159) | 評論 (10)編輯 收藏

    ArcGIS Server 開發系列(一)--編程框架總覽

         摘要: 理論性的描述總是讓人覺得有點枯燥,但是做ArcGIS Server編程,不論是用.Net ADF還是Java ADF,都需要對Server開發的基本框架有所了解,這樣在后面的代碼編寫中才能逐步理解這些架構的設計思想。  閱讀全文

    posted @ 2007-08-09 15:54 Flyingis 閱讀(6553) | 評論 (2)編輯 收藏

    ESRI 發布 ArcGIS 9.2 sp3

        很準時,2007年8月1日ESRI發布了ArcGIS 9.2 sp3補丁,相對于美國時間就是7月的最后一天,大家可以到ESRI官方網站上去下載,至于補丁所包含最新的改進可以參考上篇文章:http://www.tkk7.com/flyingis/archive/2007/07/17/130822.html

    posted @ 2007-08-07 15:28 Flyingis 閱讀(2526) | 評論 (0)編輯 收藏

    ArcGIS 9.2 Service Pack 3 - Announcement

         摘要: ESRI網站上已經帖出ArcGIS 9.2 sp3的說明,提供下載的時間就是本月底了,看看有哪些更新。
    http://support.esri.com/index.cfm?fa=downloads.patchesServicePacks.viewPatch&PID=17&MetaID=1319  閱讀全文

    posted @ 2007-07-17 14:26 Flyingis 閱讀(11108) | 評論 (0)編輯 收藏

    AE92 for Java 中手動釋放 COM 對象

        作者:Flyingis 

        用Java進行ArcEngine或ArcGIS Server開發,在底層實際上是用Java調用AO COM對象,ESRI用Jintegra庫來解決Java對COM的調用問題,如果Java對象不再使用,Java虛擬機會自動將這些對象回收,然后 Jintegra將這些對象所指的實際COM對象銷毀,默認情況下時間間隔是10秒,對于快速大量調用COM對象的操作來說,如在循環中,COM對象往往得不到及時的銷毀,以至于內存報錯,這時我們需要手動銷毀COM。

        Jintegra釋放方法:

        com.linar.jintegra.Cleaner.release(objectRef);

        在ArcEngine和ArcGIS Server中如何釋放COM呢?Jintegra為ArcObjects生成了一組proxy類,可以參考com.esri.arcgis.interop命名空間,經常用的是 com.esri.arcgis.interop.Cleaner,它的release(java.lang.Object anObject)和releaseAll()用來釋放指定的或所有的COM對象,同時可以為COM連接和釋放增加監聽, addConnectionListener(ConnectionListener listener)和allUnreferencedListener(Unreferenced listener)。

        同時可以參考:

        HowTo:  Explicitly release a COM object accessed in a Java application
        J-Integra for COM Document
        Garbage Collection: Releasing Java References to COM Objects
        Java調用COM的中間件Jintegra初探

    posted @ 2007-07-09 14:10 Flyingis 閱讀(3705) | 評論 (1)編輯 收藏

    ArcIMS[err0143] 解決方法

         摘要: "Unable to display mapservice:[err0143] server not available for service ...",這是出現錯誤時網頁的提示,應該如何解決這個問題呢?請繼續往下看……  閱讀全文

    posted @ 2007-06-29 13:49 Flyingis 閱讀(4516) | 評論 (0)編輯 收藏

    ArcGIS Server 體系結構

         摘要: ArcGIS Server包含兩個重要部分,一個是ArcGIS Server服務器端(SOM/SOCs),另外就是用于客戶端開發的ADF(Application Developer Framework)程序集,包括adf for java和adf for .net。在掌握ArcGIS Server開發之前,先看看ArcGIS Server的體系架構。  閱讀全文

    posted @ 2007-06-29 09:20 Flyingis 閱讀(5767) | 評論 (3)編輯 收藏

    ArcGIS Desktop 9.2 非版本編輯

        作者:Flyingis

        ArcGIS Desktop 9.2開始支持非版本編輯,和標準的數據庫事務處理一樣,ArcSDE非版本編輯直接對原數據進行編輯,非版本編輯的session不保存任何對數據的更改,在ArcMap中對數據start edit,然后對數據進行增、刪、改,或是修改屬性信息,完成后執行save edit就可以將Geodatabase中的數據直接更新,否則edit session without saving放棄之前的修改。在這種模式下處理數據會存在一些問題,如當某一段編輯過程中出現問題時不能放棄或恢復修改,要么只能退出整個session的編輯放棄所有的修改。

        使用ArcSDE非版本編輯可以針對簡單數據進行處理--點、線、面、注記、relationship,如果feature class存在于拓撲或網絡中,則不能進行編輯。

        ArcMap中進行非版本編輯需要注意:

        1.數據已經registered with the geodatabase

        所有ArcGIS Desktop創建的數據會自動registered with the geodatabase,只有當數據是在ArcGIS Desktop外創建時(如sdetable命令創建)才需要手動注冊。一般我們可以在ArcCatalog中看到空間數據的Register with Geodatabase為灰色的。

        2.數據沒有registered as versioned

        如果數據已經注冊為版本,可以unregister as versioned,這時之前該版本中沒有提交的數據會丟失。

        3.配置ArcMap編輯進程的屬性

        取消“Edit a version of the database with the ability to undo and redo”選項。

        編輯非版本Geodatabase數據庫中的數據,需要注意DBMS的一些特性:同步與鎖、隔離機制、數據完整性等,以后再說吧。

    posted @ 2007-06-25 22:49 Flyingis 閱讀(2917) | 評論 (3)編輯 收藏

    [Design Pattern] The Factory Pattern

         摘要: 對工廠模式的重復羅嗦,用Factory生產Thinkpad。  閱讀全文

    posted @ 2007-06-17 15:01 Flyingis 閱讀(3637) | 評論 (2)編輯 收藏

    SuSE 9.1 平臺 ArcIMS(JRE) 中文顯示解決方案

         摘要: 最初以為是操作系統的字體顯示問題,但SuSE9.1本身是包含中文字體的,很容易讓我們想到了JRE。

    文章標題為《SuSE 9.1 平臺 ArcIMS 中文顯示解決方案》,ArcIMS運行于JRE環境之上,因此問題的根本在于SuSE9.1平臺下JRE運行時環境的中文顯示,通過文中介紹的方案可以解決SuSE9.1操作系統中運行于JRE之上的所有應用程序的中文顯示問題,如ArcIMS Author打開SDE空間數據庫時以中文命名的表無法顯示,數據屬性字段中的中文顯示為亂碼等等。  閱讀全文

    posted @ 2007-05-28 09:29 Flyingis 閱讀(3732) | 評論 (1)編輯 收藏

    Spatial Reference

         摘要: 空間參考是GIS的基礎,失去了空間參考信息,地理空間內所有的信息也就失去了存在的意義,因為它們是不準確的或是錯誤的??纯碅rcGIS9.2對于Spatial Reference的描述及如何編程實現。

    文章中代碼使用C#描述,AE92 for Java SDK的com.esri.arcgis.geometry中各種接口、實現方式和C#基本一致,可以使用相同的思路來解決AE Java開發中關于Spatial Reference的問題。  閱讀全文

    posted @ 2007-05-10 14:43 Flyingis 閱讀(5045) | 評論 (2)編輯 收藏

    ArcSDE 9.1 在 Windows 平臺雙機熱備

         摘要: 一直沒有時間整理各種平臺下ESRI軟件安裝文檔,只能簡單描述一下,有什么問題可以留言。  閱讀全文

    posted @ 2007-04-24 09:32 Flyingis 閱讀(3120) | 評論 (2)編輯 收藏

    Geometry 對象淺析

         摘要: ArcEngine Geometry庫定義了基本幾何圖形的矢量表達形式,頂級的幾何圖形有Points、Multipoints、Polylines、Polygons、Multipatches,Geodatabase和繪圖系統使用這些幾何圖形來定義其他各種形狀的特征和圖形,提供了編輯圖形的操作方法和地圖符號系統符號化特征數據的途徑。

    文章中代碼使用C#描述,AE92 for Java SDK的com.esri.arcgis.geometry中各種接口、實現方式和C#基本一致,可以使用相同的思路來解決AE Java開發中關于Geometry的問題。  閱讀全文

    posted @ 2007-04-19 14:15 Flyingis 閱讀(4935) | 評論 (4)編輯 收藏

    ArcGIS 9.2 SP2 補丁開始提供下載

    2007年4月16日ESRI正式發布ArcGIS 9.2 SP2補丁下載

    ArcGIS 9.2 Service Pack 2
    (包括ArcGIS Desktop、ArcGIS Desktop開發包、ArcEngine SDK、ArcEngine Runtime、ArcGIS Server、ArcGIS Server WebADF Runtime升級補丁包)
    http://support.esri.com/index.cfm?fa=downloads.patchesServicePacks.viewPatch&PID=66&MetaID=1270

    ArcIMS 9.2 Service Pack 2
    http://support.esri.com/index.cfm?fa=downloads.patchesServicePacks.viewPatch&PID=16&MetaID=1271

    ArcSDE 9.2 Service Pack 2
    http://support.esri.com/index.cfm?fa=downloads.patchesServicePacks.viewPatch&PID=66&MetaID=1269

    SP補丁體積不斷增加似乎是當今軟件發展的趨勢,這次釋放出的升級包中,桌面幫助、Server等升級包都超過了200M,補丁升級過程耗時也較長,準備升級之前需做好重要數據備份,參考網站上的說明進行。

    ArcGIS 9.2 SP2補丁的改進,請參考這里:
    http://downloads.esri.com/support/downloads/other_/ArcGIS-92sp2-issues.htm
    http://downloads.esri.com/support/downloads/ims_/ArcIMS_92sp2_issues.htm
    http://gisupdates.esri.com/92sp2/ArcSDE-Windows-UNIX-Linux/ArcSDE-92sp2-issues.htm

    posted @ 2007-04-17 10:06 Flyingis 閱讀(4752) | 評論 (0)編輯 收藏

    用多邊形裁剪影像文件

         摘要: 裁剪方式分為矩形裁剪和多邊形裁剪。  閱讀全文

    posted @ 2007-04-12 11:23 Flyingis 閱讀(4883) | 評論 (1)編輯 收藏

    Geoprocessing 消息機制

        作者:Flyingis

        ArcToolbox每個工具執行之后,都會向Geoprocessor返回消息,包括操作何時開始,使用哪些參數,操作的進度,以及可能出現的問題和錯誤。消息的種類包括常規消息、警告、錯誤,GPMessage類可以包含消息的文本及嚴重等級。

        首先,Geoprocessor.getMessage()方法可以捕獲最后一個工具執行后返回的錯誤消息

    String messages = gp.getMessages(2);
    System.out.println(messages);

        如何使用GPMessage

    //if there was an error then you want to loop the messages
    //returned by the geoprocessor to look for the error
    GPMessages gpMessages = (GPMessages)gp.getReturnMessages();
    for(int i = 0;  i gpMessages.getCount(); i++{
          System.out.println(gpMessages.getMessage(i).getDescription());
    }

        可以看出,上面都是通過GeoProcessor的方法來獲取消息,除此之外還可以使用IGeoProcessorResult接口,從功能上來說它們沒有多少區別。

    // Execute Union
    IGeoProcessorResult pResult = gp.execute(uniontool, null); 
    if (pResult.getMessageCount() > 0)  
          
    for(int i = 0;  i <= pResult.getMessageCount() - 1; i++){
                System.out.println(pResult.getMessageCount());
          }

    }

        另外我們還可以自定義輸出的方法,根據程序執行的過程,可以添加的方法有AddMessage、AddWarning、AddError。下面的示例將feature class從一個工作區復制到另外一個工作區,并跟蹤顯示每個文件復制的情況。

    IGpEnumList fcs = gp.listFeatureClasses("""","");
    Copy copy 
    = new Copy();
    String fc 
    = fcs.next();
    while (! "".equals(fc)){
          gp.addMessage(
    "Copying " + fc + " to file gdb" );
          copy.setInData(fc);
          copy.setOutData(
    "C:/temp/eric.gdb" + "/" + fc);
          
    try {
                gp.execute(copy, 
    null);
          }
     catch (Exception e) {
                gp.addError(
    "COPY FAILED! " + gp.getMessage(2));
          }

          fc 
    = fcs.next();
    }

    posted @ 2007-04-10 15:58 Flyingis 閱讀(3592) | 評論 (0)編輯 收藏

    Geoprocessing 數據批處理

         摘要: ArcGIS使用者經常要面對大量的數據處理工作,如果要在自己的程序中使用Geoprocessing,更多的時候我們是要進行對數據進行批處理分析,Geoprocessing為我們提供了豐富的批處理的功能。  閱讀全文

    posted @ 2007-04-05 15:07 Flyingis 閱讀(4505) | 評論 (2)編輯 收藏

    Vi 指令大全[轉載]

         摘要: 方便自己查閱,轉載Vi指令大全。  閱讀全文

    posted @ 2007-04-05 10:25 Flyingis 閱讀(2875) | 評論 (0)編輯 收藏

    學習在 ArcEngine 中使用 Geoprocessing

         摘要: Geoprocessing對于ArcGIS使用者來說,是一種非常方便實用的工具,它可以利用ArcToolbox中的各種工具為我們的地理空間工作流進行框架建模,自動執行空間分析與處理?,F在ArcEngine 9.2單獨提供了com.esri.arcgis.geoprocessing.tools工具包,使得在二次開發中通過Geoprocessing構建應用模型,將ArcGIS眾多分析工具集成到我們的應用中成為現實??纯丛贏rcEngine for Java環境中如何使用它。  閱讀全文

    posted @ 2007-04-04 17:23 Flyingis 閱讀(8944) | 評論 (1)編輯 收藏

    ArcGIS 9.1 升級到 9.2 部分文件格式不可讀的解決方法

         摘要: 機器上安裝了ArcGIS 9.1和Erdas Image,卸載ArcGIS 9.1安裝新版本9.2,發現img、tif、grid格式的文件均不可讀,其中打開img文件的時候提示"Raster Objects Data Error",卸載ArcGIS 9.2重裝ArcGIS 9.1,問題依舊。本文提供了解決方法。  閱讀全文

    posted @ 2007-03-15 17:21 Flyingis 閱讀(3872) | 評論 (2)編輯 收藏

    AE92 SDK for Java 窗體簡例

         摘要: 看看怎么用AE92 SDK for Java做簡單的窗體應用。  閱讀全文

    posted @ 2007-03-09 12:41 Flyingis 閱讀(4950) | 評論 (2)編輯 收藏

    AE92 SDK for Java 最小示例學習

         摘要: ArcEngine 92 SDK for Java 最小示例學習,類似于Java開發的第一個例子"Hello World",但要稍微復雜一點。整個過程清晰明了,通過這個例子我們可以順藤摸瓜,逐漸深入到AE的開發中。  閱讀全文

    posted @ 2007-03-08 16:21 Flyingis 閱讀(3640) | 評論 (0)編輯 收藏

    ArcGIS 坐標系統文件

         摘要: 看看ArcGIS 9.2中包含的坐標系統文件夾Geographic Coordinate Systems、Projected Coordinate Systems、Vertical Coordinate Systems的簡介,欣賞北京54和西安80投影坐標系令人費解的命名方式。  閱讀全文

    posted @ 2007-03-02 09:04 Flyingis 閱讀(13980) | 評論 (7)編輯 收藏

    地震為什么沒有影響到 Google

    原文鏈接:http://news.mydrivers.com/pages/20070120074305_14081.htm

    2006年底,臺灣海域地震,讓人們深刻感覺到互聯網的脆弱。在這次地震中,中美海纜、亞太一號、亞太二號海纜、FLAG海纜、亞歐海纜、FNAL海纜等多條國際海底通信光纜中斷。一時間,臺灣,韓國,日本,菲律賓,甚至印度的呼叫中心都受牽連;中國用戶幾乎無法訪問所有的美國網站以及網絡服務,有些網站雖然可以勉強登入,但速度也讓人無法忍受。

    不過,與平時經常被“屏蔽”相反,Google在此期間幾乎沒有受到影響,搜索引擎、Gmail以及Google旗下的其他服務都能夠在國內正常訪問。

    事實上,連接中國與亞洲、美國以及歐洲的電纜有多個系統。臺灣地震只損害了一部分海底電纜,但并不是所有的電纜都出現了問題。這個時間段內,從中國接入國際互聯網的服務,就取決于提供該服務的這個互聯網公司或者ISP購買的是哪些電纜系統,在地震中是否受到損害。

    不過,還有另外一種情況存在:一些國際連接雖然沒有受到地震的影響,但是過多地負載了從其它損害的電纜轉道而來的信息流量,導致交通堵塞。

    Google使用了多網絡連接系統,如果某個數據中心出了訪問障礙,系統會自動選擇其它的網絡路徑,由其它數據中心無縫地提供服務。

    在設計和實施時,Google在中國的服務網絡充分考慮了冗余要求,不會因為其它線路的擁擠而變得緩慢。因此,Google中國用戶感覺不到任何地震引起的變化。

    為什么Google成為此次地震事件中的特例?

    時間追溯到2002年2月,Google的一個數據中心的主電源跳閘,導致Google癱瘓了將近1個小時。有了這次教訓,Google便徹底改變了自己的文件系統分布。

    改進后的Google文件分布系統,即便一個擁有80臺電腦的支架被斷開連接,也能迅速完成再一次的備份,而且,并不中斷正常的服務。實際上,按照霍茨勒的說法,Google的“每臺服務器都有50個備份”。除此之外,多網絡連接模式應用,也為服務穩定提供了有效的硬件基礎。

    posted @ 2007-01-20 14:54 Flyingis 閱讀(2120) | 評論 (1)編輯 收藏

    shapefile 和 MapGIS 文件格式之間的轉換

         摘要: 這篇文章比較老了,還是在ArcGIS 8.3平臺下做的,這段時間一些朋友經常問到這個問題,現在大家早已進入ArcGIS 9.x時代,但還是可以參考一下,是否適用尚不知道,如有什么變化,歡迎大家寫在后面。  閱讀全文

    posted @ 2007-01-19 09:17 Flyingis 閱讀(4606) | 評論 (2)編輯 收藏

    全套 ArcGIS 軟件安裝(Windows 平臺)

         摘要: 雖然是Windows平臺下的安裝,但有時也經常碰到棘手的問題,文章記錄的過程比較簡單,如果大家有什么疑問可以在后面留言。
    關于ESRI產品的安裝,以后還會寫,包括各種平臺下的,各種軟件搭配環境下的,有些我自己也是在學習的過程中,歡迎大家一起討論。  閱讀全文

    posted @ 2007-01-17 15:03 Flyingis 閱讀(3574) | 評論 (0)編輯 收藏

    GeoTools 2.3.0 release available for download

    2 January 2007 - GeoTools 2.3.0 release brings together a lot of great improvements made over the last year. The main focus of this release is improving the raster story for GeoTools. While plug-ins for a variety of rasters existed previously, all of them were memory constrained and not really suitable for real software.

    GeoTools 2.3.0 is available for download at:
    http://geotools.codehaus.org/2.3.0

    2.3.0 brings solid, scalable, fast support for ArcGrid, GeoTiff, GTOPO30, World Images and Image Mosaics and Pyramids. These are already in action in GeoServer 1.5.x, and will soon work their way into uDig (http://udig.refractions.net). In addition it offers:

    - GeoAPI filter interfaces aligned with Filter 1.1 specification
    - Completed providence review
    - More relaxed PostGIS support, able to handle older varied configurations
    - Scalar Vector Graphics "Marks" can be used as part of our SLD support
    - Improved plug-in visibility
    - Maven "archtype"
    - Numerous small bug fixes and improvements

    The following organizations, have contributed to this stable release: GeoSolutions for their RnD contributions appearing in this release, and OSGeo Foundation for their support during the incubation process.

    - About GeoTools
    GeoTools is an open source java GIS toolkit. Used for OGC based projects via GeoAPI interfaces. It includes two great SLD based renderers, raster access and reprojection. Plugins for Shapefile, ArcGrid, ArcSDE, Postgis, OracleSpatial, MySQL and many more.

    For more information visit:

    - http://docs.codehaus.org/display/GEOTOOLS
    - http://docs.codehaus.org/display/GEOTOOLS/Mailing+Lists
    - http://docs.codehaus.org/display/GEOTOOLS/Module+Matrix
    - http://docs.codehaus.org/display/GEOS/GeoServer+1.5.0+beta1

    Source :
    http://sourceforge.net

    From : http://www.gisdevelopment.net/news/viewn.asp?id=GIS:N_axrmhogkef

    posted @ 2007-01-10 22:25 Flyingis 閱讀(1875) | 評論 (0)編輯 收藏

    靜態設計

         摘要: 重新看看靜態設計的優劣之處。  閱讀全文

    posted @ 2006-12-27 16:16 Flyingis 閱讀(2466) | 評論 (0)編輯 收藏

    初學 Eclipse RCP

         摘要: 以前一直做WebGIS方面的工作,對桌面關心甚少。桌面開發讓人第一個想到的是VB6的快速開發,以及VC++平臺中對效率的追求,VB.NET似乎找不到一個合適的定位。自己以后想逐步轉向桌面,畢竟桌面才是GIS的天下,在效率、可擴展性、開發速度以及平臺可持續發展中權衡,讓我選擇了Eclipse RCP。  閱讀全文

    posted @ 2006-12-13 19:22 Flyingis 閱讀(3493) | 評論 (1)編輯 收藏

    亂談 GIS 中小型應用

         摘要: 文章圍繞ESRI的產品討論。
    GIS中小型應用,是采用ArcEngine+ArcIMS+ArcSDE+Oracle等豪華配置,還是有其他方案可以選擇?  閱讀全文

    posted @ 2006-11-28 22:14 Flyingis 閱讀(4111) | 評論 (10)編輯 收藏

    ArcSDE 中空間數據的備份與恢復 [轉載]

    原文鏈接:http://www.gis8.net/Article/arcgis/200611/362.htm

    隨著GIS應用系統在復雜性、集成性、并發性等方面的要求不斷增加,系統所需的空間數據量在急劇地增長,同時用戶對空間數據并發訪問的需求也越來越突出。以傳統的文件形式存儲和表示空間數據的方法顯然已經無法滿足這些需求。由于ArcSDE本身所具有的海量數據存儲、多用戶并發訪問、版本管理、長事務處理等強大優勢,在GIS應用系統中引入ArcSDE作為空間數據存儲和管理引擎,變得越來越普遍。ArcSDE作為空間數據庫引擎,在ArcGIS 8.1系列軟件中屬于服務器端的產品,在整個產品框架中,處于數據中心的重要地位,它利用Oracle、DB2、SQL Server、Informix等關系型數據庫在數據存儲、數據完整性等方面的先進技術手段,將海量空間數據(包括矢量數據和柵格數據)有機地組織和管理起來,通過其內部異步緩沖、空間索引等先進的機制,提供對空間數據的多用戶高效并發訪問。

    除了存儲空間數據并提供訪問,對于空間數據的備份和恢復,是空間數據管理中最重要的工作環節之一,也是保障空間數據安全的重要方式。首先,空間數據本身在應用過程中不斷地被更新變動,所以經常會需要備份不同時期,不同的空間數據版本;第二,存儲介質的意外損壞會導致嚴重的空間數據丟失,因此需要定期對空間數據對象的整體進行完全備份;第三,有時出于調整的必要,需要在不同服務器、甚至不同數據庫管理系統之間進行空間數據的移植和轉換。

    在采用文件形式空間數據的時代,空間數據的備份僅僅是操作系統中的文件拷貝、備份和歸檔的過程;而空間數據的恢復也不過是復制、覆蓋的操作;在基于ArcSDE和關系型數據庫的空間數據庫時代,空間數據的備份更多的依賴于關系型數據庫的備份和恢復技術,當然也不能缺少ArcSDE所提供的備份工具。按照備份的方式和對象,ArcSDE中空間數據的備份和恢復可以分為如下兩類:指定空間數據對象的備份恢復,和整體空間數據庫的備份恢復。

    一、 指定空間數據對象的備份和恢復
    這種方式主要用于備份指定的空間數據對象,比如某個圖層和要素類、其中的某些滿足特定條件的記錄、甚至特定的版本。實現這種備份方式的方法主要是利用ArcSDE提供的管理工具:sdeexport和sdeimport命令。它們的位置在%ArcSDEHOME%\bin\中。其中,sdeexport用于將空間數據從ArcSDE Server上備份為單獨的數據文件,而sdeimport用于將經由sdeexport備份的數據文件恢復到ArcSDE Server中。

    這一方式的缺點在于不能一次備份完整的空間數據庫。但是也有個明顯的優點,在于通過sdeexport和sdeimport工具,可以將空間數據在不同的關系型數據庫管理系統(RDBMS)之間進行移植。

    1. 備份全部記錄
    使用sdeexport命令的缺省方式即可,比如:
    (1) 將指定的圖層備份到備份文件
    sdeexport -o create -l dcxq,shape -f d:\dcxq.exp -i jerry_oracle -u sde -p sde
    就是將名為jerry_oracle的sde服務(ArcSDE for Oracle8i)中的指定圖層“dcxq”按缺省方式備份到文件d:\dcxq.exp中。
    (2) 利用操作系統命令,拷貝備份文件到目標服務器上
    (3) 將備份文件恢復至目標RDBMS中
    sdeimport -o create -l newDcxq,shape -f d:\dcxq.exp -i jerry_sqlsvr -u sde -p sde
    此操作將備份文件恢復到名為jerry_sqlsvr的sde服務(ArcSDE for SQLServer)中,圖層名為:newDcxq。

    2. 備份部分記錄
    sdeexport命令中添加-w參數和一個條件選擇表達式即可,比如:
    (1) 將指定圖層中滿足條件的記錄備份到備份文件
    sdeexport -o create -l dcxq,shape -f d:\dcxq.exp -w xzqy = '徐匯區' -i jerry_oracle -u sde -p sde
    就是將名為jerry_oracle的sde服務(ArcSDE for Oracle8i)內的指定圖層“dcxq”中所有"徐匯區"的人口調查小區備份到文件d:\dcxq.exp中。
    (2) 利用操作系統命令,拷貝備份文件到目標服務器上
    (3) 將備份文件恢復至目標RDBMS中
    sdeimport -o create -l XHDcxq,shape -f d:\dcxq.exp -i jerry_sqlsvr -u sde -p sde
    此操作將備份文件恢復到名為jerry_sqlsvr的sde服務(ArcSDE for SQLServer)中,圖層名為:XHDcxq。

    3. 備份特定數據版本
    sdeexport命令中添加-v參數和一個版本名稱即可,比如:
    (1) 將指定圖層的特定版本備份到備份文件
    sdeexport -o create -l dcxq,shape -f d:\dcxq.exp -V verAPR -i jerry_oracle -u sde -p sde
    此操作將名為jerry_oracle的sde服務(ArcSDE for Oracle8i)內的指定圖層“dcxq”的verAPR版本備份到文件d:\dcxq.exp中。
    (2) 利用操作系統命令,拷貝備份文件到目標服務器上
    (3) 將備份文件恢復至目標RDBMS中
    sdeimport -o create -l APRdcxq,shape -f d:\dcxq.exp -i jerry_sqlsvr -u sde -p sde
    此操作將備份文件恢復到名為jerry_sqlsvr的sde服務(ArcSDE for SQLServer)中,圖層名為:APRDcxq。

    二、 整體空間數據庫的備份和恢復
    ArcSDE空間數據庫的整體備份和恢復,實質上很大程度上是其所在的數據庫或者數據庫對象的備份和恢復問題。當然完整的ArcSDE數據備份應當還包括dbtune.sde,giomgr.defs,dbinit.sde和services.sde等文件。

    數據庫的備份和恢復有很多種類。在不同的數據庫管理系統中,更是千差萬別。總體上,大都可以分為靜態轉儲和動態轉儲兩個類型。靜態轉儲是在系統中無事務處理時進行的轉儲操作,因而這種方式得到的一定是一個數據一致性的副本。靜態轉儲的優點是操作簡單,保證數據一致性,但是缺點也很明顯,轉儲操作必須等待用戶事務結束才能進行,而新的事務必須等待轉儲操作結束才能執行,因此會降低數據庫的可用性。動態轉儲是指轉儲操作與用戶事務并發進行,轉儲期間允許數據庫進行存取和修改操作,它不必等待所有運行的事務結束,也不會影響新事務的運行,但是無法保證副本中的數據正確、有效、完整。所以在動態轉儲期間,往往會建立日志文件。后備文件加上日志文件就可以把數據庫恢復到正確的狀態。

    1. Oracle數據庫
    (1) 兩種歸檔模式(archive mode)
    Oracle有兩中歸檔模式:NO ARCHIVELOG和ARCHIVELOG。在NO ARCHIVELOG模式(該模式為缺省模式)下的數據庫操作不歸檔在線日志重做文件。當存儲介質損壞時,NO ARCHIVELOG模式的數據庫只能恢復到上一次的備份點上。ARCHIVELOG模式的數據庫可以通過上一次的備份和歸檔日志重做文件相結合的方式,恢復到介質損壞之前的點上。
    以NO ARCHIVELOG模式創建的Oracle數據庫可以切換至ARCHIVELOG模式。
    (2) 多種備份與恢復方式
    Oracle中的數據備份和恢復方式包括:脫機備份與恢復、邏輯備份與恢復、熱備份與恢復。
    * 脫機備份與恢復:脫機備份是一種靜態轉儲技術,備份在數據庫關閉、不工作的狀態下進行。脫機備份包括兩種實現方式:第一種是使用Oracle提供的工具Backup/Recover;第二種是利用操作系統的復制功能,復制數據文件,即:冷備份。
    * 邏輯備份與恢復:邏輯備份與恢復是指將數據庫、用戶和表等對象的內容整個轉出到一個二進制文件,然后在需要的時候通過轉入恢復到原來的形式。這種方式可以備份整個數據庫,指定用戶和指定表的內容。
    * 熱備份與恢復:脫機備份和邏輯備份通常是用戶不訪問數據庫時的靜態備份操作。這些備份只保證數據備份前的一致性和完整性,不保證備份期間的數據一致性。為了保證數據的即時一致性,在備份數據的同時還需要備份日志文件。數據庫運行在ARCHIVELOG方式下,同時作數據和日志文件的備份稱為熱備份。
    (3) 實現步驟
    選擇使用何種備份方式,由具體的數據備份需求所決定。具體的Oracle數據庫備份實現步驟需要參考Oracle相關文檔,比如《Oracle8 Backup and Recovery Guide》。本實例采用Oracle中的邏輯備份,使用了exp和imp工具,以sde用戶方式備份和恢復整體空間數據。
    * 備份數據庫:使用Oracle中的exp命令,以sde用戶方式備份所有相關數據。
    * 恢復數據庫:使用Oracle中的imp命令,以sde用戶方式恢復后備數據文件。
    * 恢復ArcSDE系統文件:如果有必要,在恢復oracle數據之后,需要恢復安裝ArcSDE的程序文件;另外還需要從備份機器上恢復dbtune,giomgr.defs,dbinit.sde,和services.sde文件。

    2. SQLServer數據庫
    (1)備份和恢復方式
    在MS SQL Server中,ArcSDE利用單獨的用戶數據庫SDE(缺省名)來管理和組織空間數據。
    SQLServer不僅可以在同一臺服務器上備份和恢復數據庫,還允許通過備份和恢復的方式在不同服務器之間很輕松地移動數據庫。MS SQL Server也允許將一個服務器上的數據庫備份恢復到另外一臺服務器上。
    如果要將數據庫備份恢復到另外一臺服務器上,兩臺服務器上的code page和排序方式必須相同。比如,不能把用二進制排序方式(Binary Sort Order,BSO)建立的數據庫恢復到一個配置為缺省排序方式(字典順序,dictionary)的服務器上。當然,可以通過在master數據庫中運行'sp_helpsort'存儲過程設定服務器的排序方式。
    數據庫的備份操作同時備份了數據庫的系統表,包括sysusers。當在不同的服務器上執行備份和恢復操作時,備份數據庫中所包含的用戶可能會和新的服務器上master數據庫中sysxlogins表中包含的用戶不同。這樣的話,就無法登錄到恢復后的數據庫,知道更正并統一master數據庫中sysxlogins表和恢復數據庫中sysusers表的登錄映射。要使上述兩個表同步,需要運行"sp_change_users_login"存儲過程。
    (2)實現步驟
    * 備份SDE數據庫到備份文件:既可以使用T-SQL中的BACKUP語句,也可以使用企業管理器中的備份工具向導來完成SDE和其他空間數據庫的備份。
    * 將備份文件復制到目標服務器
    * 將備份文件恢復到目標服務器:可以使用企業管理器中的恢復還原工具向導來完成SDE和其他空間數據庫的恢復。
    * 統一SDE用戶登錄映射
    A. 兩個服務器上都有SDE用戶,但是兩者的SDE用戶具有不同的標識
    當恢復SDE數據庫至新的服務器后,sde數據庫中的sde用戶的SID與master數據庫中dbo.sysxlogins表中的sde登錄名的SID不同,比如:
    Use sde
    go
    Select SID from sysusers where name = 'sde'
    Use master
    go
    select SID from sysxlogins where name = 'sde'

    SID
    -----------------------------------------------------------
    0x76695419BFAED41184FD00C04F8D0451
    (1 row(s) affected)

    SID
    -----------------------------------------------------------
    0xEDDFCA8E56B0D411850000C04F8D0451
    (1 row(s) affected)
    此時必須統一兩個表中sde用戶的SID標識,運行"sp_change_users_login" 存儲過程,示例如下:
        Use sde
    go
    sp_change_users_login 'update_one','sde','sde'
    運行上述的SID查詢來驗證修改結果:
    0xEDDFCA8E56B0D411850000C04F8D0451
    0xEDDFCA8E56B0D411850000C04F8D0451
    可以看出修改后兩個表中sde用戶的SID標識完全一致,此時就可以啟動ArcSDE for SQLServer的服務來使用了。
    B. 目標服務器上還沒有SDE用戶
    這種情形是指目標服務器上還沒有sde登錄用戶,此時執行上述的SID查詢,結果如下:
    Use sde
    go
    Select SID from sysusers where name = 'sde'
    Use master
    go
    select SID from sysxlogins where name = 'sde'
    SID
    -----------------------------------------------------------
    0x76695419BFAED41184FD00C04F8D0451
    (1 row(s) affected)
    SID
    -----------------------------------------------------------
    (0 row(s) affected)
    要矯正這種情況,需要首先到目標服務器中添加sde登錄用戶,但是不要將sde數據庫的權限授予sde用戶。添加登錄用戶,使用"sp_addlogin"存儲過程和在企業管理器中使用登錄管理工具。比如:
    sp_addlogin 'sde','go','sde'
    然后需要運行 "sp_change_users_login" 存儲過程來統一master內dbo.sysxlogins表和恢復后用戶數據庫內sysusers表中的sde用戶SID標識。
    use sde
    go
    sp_change_users_login 'update_one','sde','sde'
    最后,可以執行SID查詢來驗證SID的一致性:
    Use sde
    Go
    Select SID from sysusers where name = 'sde'
    Use master
    Go
    select SID from sysxlogins where name = 'sde'
    SID
    -----------------------------------------------------------
    0xF6DFCA8E56B0D411850000C04F8D0451
    (1 row(s) affected)
    SID
    -----------------------------------------------------------
    0xF6DFCA8E56B0D411850000C04F8D0451
    (1 row(s) affected)
    經過SDE用戶的SID的統一之后,就可以啟動ArcSDE服務或者使用直接連接(direct connection)方式使用恢復后的空間數據了。

    posted @ 2006-11-28 20:13 Flyingis 閱讀(2715) | 評論 (1)編輯 收藏

    [DWR文檔] WEB-INF 參考

         摘要: DWR中文文檔--WEB-INF 參考

    翻譯的方式采用中英文對照,翻譯的文字不會完全和英文一一對照,主要是為了在不失原意的情況下保證中文的閱讀理解習慣,當然,翻譯的過程需要大家的支持,翻譯不妥的地方盡請拍磚、指正。  閱讀全文

    posted @ 2006-11-18 09:34 Flyingis 閱讀(5295) | 評論 (0)編輯 收藏

    DWR 中文文檔

         摘要: 我是DWR初學者,雖然DWR入門簡單,但還是想嘗試翻譯一下DWR的部分文檔,翻譯過程中自己會有更多的思考,翻譯的方式采用中英文對照,翻譯的文字不會完全和英文一一對照,主要是為了在不失原意的情況下保證中文的閱讀理解習慣,當然,翻譯的過程需要大家的支持,翻譯不妥的地方盡請拍磚、指正。

    Jet Mah已經開始翻譯DWR文檔,我將在他未翻譯的文檔中摘取比較重要的章節進行翻譯,也算是對開源盡一點綿薄之力。我已翻譯的部分在Java Tang中也會留言給出鏈接。  閱讀全文

    posted @ 2006-11-18 09:15 Flyingis 閱讀(8353) | 評論 (2)編輯 收藏

    中國計劃建設自己的衛星導航系統

    ??? 2006年11月3日,中國在北京宣布計劃建立一套自己的衛星導航系統,整個系統包含35顆衛星,并于2008年在亞洲區域投入運行。該系統名稱為“Beidou”,將包括五顆對地靜止軌道衛星和三十顆中距離地球軌道衛星,新華社通訊員11月2日。

    ??? 據報道,整個衛星導航系統將提供兩套服務,其中免費服務面向大眾,許可認證服務面向軍事方面。面向商業客戶的衛星系統服務將提供10米的定位精度,速度分辨率為0.2米/秒,而時間分辨率在50*十億分之一秒以內。關于整套系統的費用沒有詳細的報道。

    ??? 在此之前,中國已經加入了歐空局35億歐元伽利略計劃研發衛星導航系統,以擺脫美國軍用全球衛星導航系統的壟斷。

    ??? 詳細信息可以訪問(英文):
    ??? http://www.chinadaily.com.cn/china/2006-11/03/content_723687.htm

    posted @ 2006-11-14 22:26 Flyingis 閱讀(1326) | 評論 (2)編輯 收藏

    用 JavaScript 玩轉 DOM Level 1

         摘要: DOM(The Document Object Model)將HTML轉換為XML文檔格式來表達,為動態HTML編程提供了一種優雅的解決方案。DOM編程可以使用多種語言(Java中可以使用SAX進行XML編程),不論大家使用何種服務器端技術,JavaScript的DOM基礎編程還是需要掌握的,最常見的莫過于getElementById(),引用Prototype.js使用最多的也是$(""),但是要做好Web客戶端設計,我們需要了解更多更細。

    當前各種主流瀏覽器對DOM Level 1標準支持的相對較好,我們就來看看在JavaScript中如何玩轉DOM Level 1。  閱讀全文

    posted @ 2006-11-07 22:14 Flyingis 閱讀(5356) | 評論 (6)編輯 收藏

    [Design Pattern] The Decorator Pattern

         摘要: Decorator Pattern,看看魔獸中的山丘是怎么應用這種模式的(個人設想)。  閱讀全文

    posted @ 2006-11-07 11:04 Flyingis 閱讀(3124) | 評論 (3)編輯 收藏

    清除 Trojan [轉載]

         摘要: 在網上找到的Trojan-Downloader.Win32.QQHelper.mo查殺過程,經驗證方法有效,特轉貼與大家分享。  閱讀全文

    posted @ 2006-10-24 16:38 Flyingis 閱讀(1624) | 評論 (0)編輯 收藏

    Firefox 2.0 正式提供下載,JavaScript 1.7 獲得支持

    ??? 現在 Mozilla官方網站 還沒有Firefox 2.0正式版的下載鏈接,但驅動之家已經開始提供下載鏈接,包括 Mozilla官方FTP ,和 mydrivers網站上本地下載 ,迫不及待的朋友可以立即開始體驗Firefox 2.0。

    ??? 我用Firefox除了支持開源軟件外,還有一個重要用途就是調試JavaScript,我之前的一篇隨筆《
    JavaScript 調試工具 》簡單介紹了JavaScript的調試利器。隨著Firefox 2.0正式發布,JavaScript 1.7也開始在最新版的Firefox中正式獲得支持,雖然正式項目中還不大可能用到JavaScript 1.7,但做JavaScript開發的朋友肯定會給予JavaScript更多的關注。

    ??? JavaScript 1.7在1.6的基礎上加入了新的特性,具體大家可以參照這里:

    ??? --
    New in JavaScript 1.6 --

    ??? --
    New in JavaScript 1.7 --

    posted @ 2006-10-24 14:57 Flyingis 閱讀(1325) | 評論 (0)編輯 收藏

    IE7 正式版推出

         摘要: IE7 官方正式版已經推出,看看它為我們帶來了什么……  閱讀全文

    posted @ 2006-10-19 09:25 Flyingis 閱讀(2782) | 評論 (7)編輯 收藏

    [翻譯] 如何在 JavaScript 中實現拖放(下)

         摘要: 終于完成了全文的翻譯,由于時間比較參促,文章沒有過多的校正與潤色,閱讀過程中難免會有些許生硬或不準確的感覺,請大家見量并指出,方便他人閱讀。

    原文作者將拖放功能的實現分步講解,其核心的地方在于移動和放置元素時,鼠標、移動元素、目標元素關系的處理,只要這個問題處理好了,代碼就很容易理解,譯文僅供輔助參考之用,demo可以參考原文鏈接。  閱讀全文

    posted @ 2006-10-15 17:03 Flyingis 閱讀(6673) | 評論 (19)編輯 收藏

    [翻譯] 如何在 JavaScript 中實現拖放(中)

         摘要: 上一篇文章介紹了移動頁面元素所涉及到的捕獲鼠標移動和鼠標點擊的相關問題,本段文章將介紹如何移動和放置頁面元素。  閱讀全文

    posted @ 2006-10-13 14:53 Flyingis 閱讀(5302) | 評論 (2)編輯 收藏

    [翻譯] 如何在 JavaScript 中實現拖放(上)

         摘要: JavaScript擅長于修改頁面中的DOM元素,但是我們使用JavaScript通常只是實現一些簡單功能,例如實現圖片的翻轉,網頁中的標簽頁,等等。這篇文章將向你展示如何在頁面中,對創建的元素實現拖放。
    (譯者注:原文發布已有一段時間,但感覺作者思路清晰明了,值得一讀。文章一次看完比較好,但時間有限,我會盡快將剩下部分補上)  閱讀全文

    posted @ 2006-10-11 16:20 Flyingis 閱讀(7412) | 評論 (2)編輯 收藏

    [Design Pattern] The Observer Pattern

         摘要: 在討論設計模式時,我喜歡用英文名來稱呼各種模式,覺得這樣會更為準確一些。設計模式在Java開發領域已經是炙手可熱的山芋,披上了這件戰袍,似乎就可以在程序設計中立于不敗之地,不僅可以規范自己的武功招式,還能夠看清其他高手的武功套路。在接下來[Design Pattern]一系列的隨筆中,我將系統的研究各種常用的設計模式,主要的參考資料是《Head First Design Patterns》,主要的思路是,介紹基本概念(雖然做Java開發的熟手已經對此熟悉的不得了),將思維轉換為代碼設計,談談在實際中開發的應用,也許還會有各種模式的弊端。  閱讀全文

    posted @ 2006-09-30 16:40 Flyingis 閱讀(3019) | 評論 (1)編輯 收藏

    GeoRSS 應用方案

    ????作者:Flyingis

    ??? GeoRSS提供了一種地理位置搜索與聚合的方案,并且可以用于地理分析,例如在指定地點10公里范圍內,所有可能受地震影響的地物的信息,在自己出行道路中出現交通事故的位置點,等等。只要RSS包含了地理位置信息,就可以將應用進行擴展。

    ??? 那么哪些技術方案可以支持GeoRSS呢?目前ESRI已經支持通過JavaScript API來使用GeoRSS,我們可以不用將GeoRSS導入到ArcWeb Explorer中,僅僅將GeoRSS URL鏈接輸入到搜索框即可。如下圖所示(圖片來自于James Fee的博客)。


    ??? 遺憾的是,ESRI目前僅支持點的聚合查詢,并且使用GeoRSS Feeds還存在一些bug。

    ??? 另外一種方案,就是結合Microsoft Virtual Earth API來使用GeoRSS,這是Virtual Earth API 3.0中新增的一項強大的功能。GeoRSS層可以很容易的使用基于WGS84 lat/long坐標系,或GeoRSS Simple語法的GeoRSS XML文件,加入一組點到地圖上,具體的方法可以參考這兩篇文章:

    ??? http://blogs.msdn.com/keithkin/archive/2006/09/19/761333.aspx
    ??? http://blogs.msdn.com/keithkin/archive/2006/09/19/761573.aspx

    ????在Keith的demo中,他實現了將鼠標停留在地圖上某標注點,其相關信息就會反應出來,示例如下:

    ??? http://krkinnan.members.winisp.net/samples/georss/hurricaneivan.html

    ??? 關于GeoRSS:http://www.tkk7.com/flyingis/archive/2006/09/25/71823.html

    posted @ 2006-09-28 11:15 Flyingis 閱讀(1982) | 評論 (0)編輯 收藏

    GeoRSS

    ??? 作者:Flyingis

    ??? RSS已經成為互聯網上共享知識、分享信息的最為主要手段之一,通過訂閱RSS,我們可以從網絡的海量信息中獲取我們所關心的數據,包括文字、圖片等。將地址信息通過一種交互的方式,使得應用可以請求、聚合、分享、發布Feeds,成為地理信息在未來一段時間的一個熱點。

    ??? GeoRSS成為了地理信息數據Feed資源化的先鋒隊員,GeoRSS存在兩種編碼方式,分別是GeoRSS GML和GeoRSS Simple。前者是標準的GML應用,相比后者支持更為廣泛的特性,可以和Atom 1.0、RSS 2.0、RSS 1.0一起使用,并且它還可以在非RSS XML編碼的環境中使用。GeoRSS Simple顯得更為輕便,當然在擴展性能上就會有所限制。

    ??? 舉個例子說明這兩者的區別,例如我們需要將一個點進行XML編碼,使用GML和Simple兩種方式的格式分別如下:

    ??? Simple
    <georss:point>45.256?-71.92</georss:point>

    ??? GML
    <georss:where>
    ??
    <gml:Point>
    ????
    <gml:pos>45.256?-71.92</gml:pos>
    ??
    </gml:Point>
    </georss:where>

    ??? 具體的介紹,可以參考GeoRSS官方網站:http://www.georss.org/。有時間我會對GeoRSS模型與使用方法進行分析。

    posted @ 2006-09-25 20:58 Flyingis 閱讀(2573) | 評論 (0)編輯 收藏

    Firefox 2.0 rc1

    ??? Mozilla Firefox 2.0 rc1已經可以下載測試了,它包含了許多新的變化,具體的參考這篇文章:
    http://tech.cybernetnews.com/2006/09/12/another-round-of-theme-updates-for-firefox-2/

    ??? 從這個鏈接可以下載到最新的版本:
    http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/2.0rc1-candidates/rc1/?

    ??? 據Jithen Singh介紹,Mozilla Firefox 2.0 rc1對
    ArcGIS Server 9.2 rc1似乎提供了更好的支持。

    ??? 更新:剛在mydrivers.com上面看到了一篇文章:《IE7 RC1 VS Firefox2 RC1》。比較有意思的對比測試。(2006-9-29)

    posted @ 2006-09-25 09:25 Flyingis 閱讀(1180) | 評論 (1)編輯 收藏

    JavaScript 隨筆匯集

         摘要: 更新日期:2006-11-18  閱讀全文

    posted @ 2006-09-18 15:31 Flyingis 閱讀(4095) | 評論 (9)編輯 收藏

    [翻譯] "this" of JavaScript

         摘要: this是JavaScript中功能最強大的關鍵字之一。不幸的是,如果你不知道它具體怎么工作,你將很難正確使用它。原文的題目是《The this keyword》。
    翻譯不恰當的地方請大家指出。  閱讀全文

    posted @ 2006-09-15 15:02 Flyingis 閱讀(3526) | 評論 (3)編輯 收藏

    JavaScript 對象的反射及應用

         摘要: Java和.NET都有著比較完善的反射機制,用來處理未知的對象并獲取它們的屬性和方法。JavaScript雖然沒有完善的反射體系,但在編程的時候還是可以通過代碼設計來實現類似反射的基本功能。  閱讀全文

    posted @ 2006-09-12 18:50 Flyingis 閱讀(5853) | 評論 (5)編輯 收藏

    使用 JSON 創建對象

    ??? 作者:Flyingis

    ??? 一般在JavaScript中可以調用Object類的構造函數來創建對象:

    var?obj?=?new?Object();

    ??? 并且可以將對象附加到其他對象上,類似于C++中的對象數組,例如,某大學里擁有多個專業,每個專業都有一位主任和多名講師組成,在JavaScript中可以這樣來描述:

    var?university?=?new?Object();
    university.specialty?
    =?new?Array();
    university.specialty[
    0]?=?new?Object();

    //該專業的主任是Sam
    university.specialty[0].director.name?=?"Sam";
    university.specialty[
    0].director.age?=?40;

    //該專業的兩位講師分別是Tom和Jerry
    university.specialty[0].instructor?=?new?Array();

    var?tom?=?new?Object();
    tom.name?
    =?"Tom";
    tom.age?
    =?32;
    university.specialty[
    0].instructor[0]?=?tom;

    var?jerry?=?new?Object();
    jerry.name?
    =?"Jerry";
    jerry.age?
    =?"35";
    university.specialty[
    0].instructor[1]?=?jerry;

    ??? 可以看出,當對主任和講師有更詳細的描述時,這樣一層層的代碼給人感覺非常繁瑣,許多代碼都是重復編寫,不但增加了代碼量,并且還很枯燥。

    ??? JSON是一種輕量級的數據交換格式,它的優點就是便于讀寫,可以將JavaScript中的對象及其賦值寫成鍵值對的形式,例如上面代碼通過JSON來描述可以寫成:

    var?university?=?{
    ??specialty?:?[
    ??
    {
    ????director?:?[
    ??????name?:?
    "Sam",
    ??????age?:?
    40
    ????],
    ????instructor?:?[
    ??????
    {name?:?"Tom",?age?:?32}
    ??????
    {name?:?"Jerry",?age?:?35}
    ????]
    ??}

    ??]
    }

    ??? 這樣來描述整個對象的內部結構顯得更為簡潔、清晰,除了聲明屬性和對象外,還可以使用JSON創建的對象定義成員函數。當然,不論采用何種方法來描述,目的都是為了更高效直觀的編寫JavaScript代碼,我們可以使用JSON定義一個對象,然后使用JavaScript添加屬性,也可以使用JSON來擴展JavaScript所定義的對象,創建任意復雜的對象層次。

    posted @ 2006-09-11 19:33 Flyingis 閱讀(3929) | 評論 (1)編輯 收藏

    博客顯示的問題(BlogJava 系統 bug)

    ??? 我的博客里全是江南白衣的隨筆。

    ??? 今天已經是第二次出現這種情況,進入我的博客隨筆全部重復為江南白衣的一篇隨筆,但博客上面的標題和右邊的日期、公告、鏈接、回復等等都還是我自己的,今天上午11:32出現第一次的時候感覺是緩存的問題,偶爾一次沒怎么在意,現在下午14:30又出現了一次,dudu看看有沒有問題。

    ??? 出現問題時的截圖:http://www.tkk7.com/images/blogjava_net/flyingis/question2.gif

    posted @ 2006-09-05 14:47 Flyingis 閱讀(1056) | 評論 (2)編輯 收藏

    BlueViewer 地圖加載分析(C#)

         摘要: BlueViewer是基于.NET Link進行ArcIMS二次開發的一個實例,里面包含了WebGIS最基本的一些功能。全文對BlueViewer程序啟動地圖加載的整個過程進行了分析,可以作為.NET Link初學參考。  閱讀全文

    posted @ 2006-09-03 23:14 Flyingis 閱讀(2714) | 評論 (5)編輯 收藏

    關于 BOM

    ??? 作者:Flyingis

    ??? BOM全稱是Browser Object Model,在不依賴于網頁內容的情況下提供和瀏覽器視窗交互的對象,下圖顯示了BOM的組成結構。

    BOM-Structure.gif


    ??? 可以看出,window是BOM的核心對象,在使用window中所有對象時,可以省去window,例如window.document可以寫成document,window.frames[0]可以寫成frame[0]。為了對視窗進行操作,BOM提供了四種方法:moveBy(dx,dy)、moveTo(x,y)、resizeBy(dw,dh)、resizeTo(w,h),這四種方法比較簡單,具體使用可以參考相關資料。

    ??? BOM中沒有特別復雜的概念,但需要注意的是,現在BOM還沒有一個統一的標準,各種瀏覽器對BOM的支持程度也不一,相同的功能也許其對象描述并不相同,即使是BOM結構本身也存在問題,如location既存在于window下的第二級結構中,也存在于window.document下的第三級結構中,但它們的功能描述是相同的。在目前情況下,只有針對用戶所使用的瀏覽器來定制代碼,或為不同的瀏覽器分別進行代碼描述。

    posted @ 2006-09-01 17:22 Flyingis 閱讀(1900) | 評論 (0)編輯 收藏

    SVG 中使用 JavaScript

    ??? 作者:Flyingis

    ??? SVG(Scalable Vector Graphics)是一種基于XML的語言,用來在Web中繪制矢量圖形。當前,除了Mozilla 2.0外,沒有一款瀏覽器在本質上支持SVG,都需要插件來顯示SVG圖形,著名的有Adobe公司和Corel公司的SVG插件。

    ??? 一個簡單的SVG

    <?xml?version="1.0"?>
    <!DOCTYPE?svg?PUBLIC?"-//W3C//DTD?SVG?1.0//EN"
    "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"
    >
    <svg?xmlns="http://www.w3.org/2000/svg"?xmlns:xlink=http://www.w3.org/1999/xlink?width="100%"?height="100%">
    <desc>
    顯示一個正方形和一個圓形
    </desc>
    <defs>
    <rect?id="myrect"?width="150"?height="150"?fill="red"?x="15"?y="15"?stroke="black"/>
    <circle?id="mycircle"?r="75"?fill="white"?stroke="black"?cx="150"?cy="150"/>
    </defs>
    <use?xlink:href="#myrect"?/>
    <use?xlink:href="#mycircle"?/>
    </svg>

    ??? 為了更好的理解SVG中的標簽,可以和HTML標簽作個簡單的比較,SVG中的<svg/>和HTML中的<html/>類似,<desc/>和<title/>類似,<g/>和<div/>類似。

    ??? 在SVG中可以使用JavaScript,當需要遵循一些規則:必須使用type屬性;language屬性是非法的;使用特殊XML字符時可以使用CDATA(SVG和CDATA都遵循XML規范);xlink:href替換src。

    <?xml?version="1.0"?>
    <!DOCTYPE?svg?PUBLIC?"-//W3C//DTD?SVG?1.0//EN"
    "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"
    >
    <svg?xmlns="http://www.w3.org/2000/svg"?xmlns:xlink=http://www.w3.org/1999/xlink?width="100%"?height="100%">
    <desc>
    顯示一個正方形和一個圓形
    </desc>
    <![CDATA[
    ??function?comp(a,?b)?{
    ????if?(a?>?b)
    ??????alert("a?is?bigger?than?b");
    ????else
    ??????alert("a?is?not?bigger?than?b");
    ??}
    ]]>
    <defs>
    <rect?id="myrect"?width="150"?height="150"?fill="red"?x="15"?y="15"?stroke="black"/>
    <circle?id="mycircle"?r="75"?fill="white"?stroke="black"?cx="150"?cy="150"/>
    </defs>
    <use?xlink:href="#myrect"?/>
    <use?xlink:href="#mycircle"?/>
    </svg>

    ??? 在SVG中使用JavaScript可以寫在如下幾個位置:<desc/>標簽之后;在<defs/>中;在<g/>標簽之前。

    posted @ 2006-08-31 20:06 Flyingis 閱讀(4048) | 評論 (0)編輯 收藏

    瀏覽器中的 JavaScript

    ??? 作者:Flyingis

    ??? 之前寫過不少JavaScript基礎的隨筆,基本上都是針對其語法、語言結構來論述的。但是,現在使用JavaScript最多的地方是在瀏覽器中,這里就簡單談談瀏覽器中使用JavaScript。

    ??? 在瀏覽器中使用JavaScript分為內聯和外聯兩種方法,和CSS比較相似。

    ??? 內聯

    <html>
    <head>
    <title>內聯</title>
    <script?language="JavaScript">
    ??
    function?message()?{
    ????alert(
    "Good?Day?!");
    ??}

    </script>
    </head>
    <body></body>
    </html>

    ??? 外聯

    <html>
    <head>
    <title>外聯</title>
    <script?language="JavaScript"?src="../path/external.js"></script>
    </head>
    <body></body>
    </html>

    ??? 在external.js中,可以包含任何js代碼,例如類的定義、方法函數等。相比之下,使用外聯方法引用js文件可以做到更安全、代碼更容易管理、節省資源開銷。之所以能節省資源開銷,是因為當兩個頁面同時使用一個js文件時,該js文件只會被下載一次,避免的相同代碼重復下載增加頁面的代碼量。

    ??? 網頁中的JavaScript源代碼一般放置在<head></head>區域,當寫在<body></body>中時,一旦頁面加載就會執行body中的JavaScript代碼,無法人工控制代碼的執行。如果需要頁面加載時同時執行JavaScript方法,則需要在head中定義該方法,否則系統會報錯。

    ??? JavaScript最初只有一種瀏覽器的支持,因此,需要一種方法將JavaScript代碼隱藏在老的瀏覽器中,避免對JavaScript解析產生錯誤,這就是我們過去經??梢钥吹降模诖a前后加上<!--><//-->,在現在看來,這種方法已經沒有必要了,一是因為使用外聯方式引用JavaScript代碼更加合適,二是當前主流瀏覽器對JavaScript的支持已經越來越多,當然也就能正確識別JavaScript代碼。

    ??? 在瀏覽網頁時,當某張圖片無法顯示時,可以通過文字來替換它,當網頁不支持某段JavaScript代碼時,我們也能通過一種替代的方式來提醒用戶自己的瀏覽器不支持JavaScript或禁止了JavaScript,即使用<noscript></noscript>,放置在body區域中。

    ??? 隨著XHTML(eXtensible HTML)標準的出現,<script>標簽也出現了一些變化,過去我看到有的頁面在<script>標簽中使用languange屬性,有的使用type屬性,當時沒怎么注意,其實后者正是XHTML出現后所定義的,可以為JavaScript設置mime類型為"text/javascript"。

    ??? XHTML帶來的另外一個變化就是使用CDATA,使用CDATA可以在表達式中使用一些特殊字符,增強代碼的可讀性,避免使用"&lt"、"&gt"來分別表示小于和大于。

    <script?type="text/javascript">
    <![CDATA[
    ??
    function?comp(a,?b)?{
    ????
    if?(a?>?b)
    ??????alert(
    "a?is?bigger?than?b");
    ????
    else
    ??????alert(
    "a?is?not?bigger?than?b");
    ??}

    ]]
    >
    </script>

    ??? 代碼中大于和引號均使用了我們常見的書寫形式,避免了使用XML實體所帶來的閱讀上的困難。當然,這也存在舊的瀏覽器無法識別CDATA的問題,需要我們加入注釋來隱藏CDATA標簽。大家可以想到,最好的辦法還是使用外聯的方法使用JavaScript。

    <script?type="text/javascript">
    //<![CDATA[
    ??function?comp(a,?b)?{
    ????
    if?(a?>?b)
    ??????alert(
    "a?is?bigger?than?b");
    ????
    else
    ??????alert(
    "a?is?not?bigger?than?b");
    ??}

    //]]>
    </script>

    ??? 雖然部分瀏覽器還不完全支持XHTML,但我們應該盡量按照XHTML標準來書寫代碼,使得該標準能夠獲得更大更廣泛的支持。

    posted @ 2006-08-31 20:01 Flyingis 閱讀(2738) | 評論 (0)編輯 收藏

    主站蜘蛛池模板: 中文字幕乱码免费看电影| 国产男女爽爽爽免费视频| 精品免费AV一区二区三区| 一区二区免费国产在线观看 | 亚洲免费无码在线| 成全在线观看免费观看大全 | 国产精品69白浆在线观看免费| 成年大片免费视频| 亚洲成a人片在线观看久| 国产亚洲精品va在线| 亚洲国产成人精品无码区在线秒播| 亚洲色丰满少妇高潮18p| 九九九精品视频免费| 99久热只有精品视频免费观看17| 少妇高潮太爽了在线观看免费| 国产一区二区三区在线观看免费 | 免费一级一片一毛片| 亚洲av无码专区国产乱码在线观看 | 日韩精品亚洲人成在线观看| 精品亚洲AV无码一区二区| 国产青草亚洲香蕉精品久久| 久久精品中文字幕免费| 毛片免费在线播放| 久久亚洲AV无码西西人体| 亚洲精品白色在线发布| 国产亚洲视频在线观看网址| 日本不卡免费新一区二区三区| 在线播放高清国语自产拍免费| 国产av无码专区亚洲av果冻传媒| 亚洲三级视频在线| 一级做a爱过程免费视| 99无码人妻一区二区三区免费| 亚洲精品黄色视频在线观看免费资源| 中文字幕亚洲精品| 美女裸免费观看网站| 毛片免费全部播放无码| 亚洲中文无韩国r级电影| 亚洲综合校园春色| 99久久成人国产精品免费 | 四虎永久在线观看免费网站网址 | 亚洲中文字幕一二三四区|