Time of Update: 2018-12-03
Android文檔裡對Math.atan2這樣解釋的:double java.lang.Math.atan2(double x, double y)public static double atan2 (double x, double y) Since: API Level 1 Returns the closest double approximation of the arc tangent of y/x within the range [-pi..pi]. This is the
Time of Update: 2018-12-03
數組有沒有length()這個方法? String有沒有length()這個方法?答案:數組有length屬性,而String有length()方法。以下是執行個體代碼:public class test { public static void main(String[] args) { // TODO Auto-generated method stub String st1 = new String("aaa");
Time of Update: 2018-12-03
當提到Decorator(裝飾者)模式的時候,都經常會提到java.io的設計模式。作為一個靈活的,可擴充的類庫,JDK中使用了大量的設計模式,對JDK中模式的研究不僅能增加對模式的理解,而且還有利於更透徹的瞭解類庫的結構和組成。在java.io包中,OutputStream,InputStream,Reader,Writer等都用到了Decorator模式。Decorator模式簡介:Decorator模式又稱Wrapper(封裝器)模式,它用於給一個對象動態添加一些額外的職責。
Time of Update: 2018-12-03
二 兩種方式自訂Web Service在IDE裡建立一個Web Service工程是很容易的,只要找到【File】-【New】-【Web Service】菜單就可以了,點擊這個菜單將會彈出下面的對話方塊: 這裡的Web service type有兩種選擇:一種是Bottom up、另外一種是Top down。這兩種方式分別對應了自下而上和自上而下兩種建立Web Service的模式。如果你已經有了實現的功能類,現在想要把它封裝成Web Service,那麼你應當選擇Bottom
Time of Update: 2018-12-03
監聽AJAX請求並響應當從頁面使用JavaScript發送了一個AJAX請求到伺服器,伺服器就需要對這個請求進行處理,因此這一小節的內容主要就是在伺服器端。首先,讓我們來瞭解一些JSF的內容——有關PhaseListener 。所謂的Phase就是JSF請求的階段,一個JSF請求的生命週期中存在不同的階段,當使用者從頁面向伺服器發送一個請求的時候,JSF請求的生命週期就開始了。以下就是著名的JSF請求生命週期中6個階段: 圖 23 JSF請求的生命週期
Time of Update: 2018-12-03
三 WebContext的refresh方法提示:本小節內容是ADF內部實現機制,對ADF的使用沒有影響,如沒有興趣可以跳過。當調用WebContext的refresh方法的時候,
Time of Update: 2018-12-03
第一章 擴充ArcGIS Server這一章其實和ADF已經沒有太大關係了,在ArcGIS的協助裡也是在ArcGIS Server開發章節裡。考慮到使用ADF開發的一般對功能要求比較多一點,所以對於怎麼擴充ArcGIS Server可能比較關心,反正ADF差不多也講完了,這一章就算是一個結束吧。 從9.3.1開始,ArcGIS Server提供了Java開發人員更多的可擴充性。通過擴充ArcGIS Server可以使某些自訂的功能更加完善和強大、使你的某些工作可以更加模組化並和ArcGIS
Time of Update: 2018-12-03
二 自訂一個地圖放大5倍的Functionality【案例】在這個小節,我們去實現一個GISFunctionality去封裝前面實現過的使地圖放大5倍的功能。首先,當然是建立一個Functionality類並添加到ADF應用中去。前面我們經常通過直接編輯代碼的方式去定義類和設定檔,這主要是為了協助你理解ADF應用的配置和各個元素的相互關係。現在估計你也有一定瞭解了,我們也就盡量省事些,多使用ArcGIS的eclipse外掛程式去完成這些工作吧。讓我們開啟eclipse的菜單【ArcGIS】
Time of Update: 2018-12-03
【案例】給地圖加上彈出氣泡在這一小節裡,我們將會在地圖上加一個氣泡,很多時候你需要彈出一些簡短的資訊到地圖上,氣泡就是為了滿足這樣的要求的。首先讓我們回憶下這一章的主要內容,前面講了ADF一些常用的地圖組件,然後從Map組件入手詳細分析了它在伺服器端和瀏覽器端的具體實現。現在我們的氣泡功能主要是對瀏覽器端的Map進行功能擴充,那麼首先應該想到的就是EsriMap這個JavaScript類,我們在EsriMap中彈出一個div,再放上我需要的資訊不就可以了嗎?等等,在頁面上彈出一個div是很簡單,
Time of Update: 2018-12-03
EsriMap詳解提示:本小節所涉及內容主要由ADF自己完成,分析只是為了更好地瞭解原理,為將來有可能做的擴充進行準備。EsriMap在“/WebContent/js/esri_map.js”中定義,讓我們從Map組件輸出的JavaScript代碼開始去瞭解ADF在瀏覽器中所做的工作。下面的代碼是一個簡單地圖輸出的JavaScript代碼(為了便於閱讀,我對某些代碼作了等價的修改),其中“AgsTest”是我的項目名稱:現在讓我們開始看瀏覽器一步一步執行的JavaScript代碼。除了引入一些A
Time of Update: 2018-12-03
二 使用Utility Objects提高查詢效能【案例】這是我的同事使用Utility Objects解決某個使用者的一個實際問題。這個使用者通過調用AO進行空間查詢,然後在此基礎上進行分頁,分頁的時候遍曆該頁所有的IFeature,提取屬性資訊,構造成自己的結果返回——結果,遇到了嚴重的效能問題,在上萬條記錄中查詢一般兩三分鐘才可以出結果,這在一個國家級項目中是難以忍受的。 經過添加日誌分析,發現AO查詢的速度非常快,問題就是出在遍曆IFeature這個操作上,是不停地進行跨進程調用產生的。
Time of Update: 2018-12-03
二 【案例】自訂Command使地圖等比放大在這一小節,我們通過自訂Command定製一個按鈕,這個按鈕每點擊一次,地圖會放大1倍。通過這個簡單案例,讓我們來熟悉一下Command的用法。實現這個功能的主要環節是實現自己的監聽器類,以下是這個類的定義:import com.esri.adf.web.data.WebContext;import com.esri.adf.web.util.WebUtil;import
Time of Update: 2018-12-03
Command、Tool和Button這一章我們將討論的主要對象是Toolbar的孩子們和親戚,涉及到兩個孩子:Command和Tool,還有一個親戚:Button。它們是基於ADF對WebGIS功能進行擴充的第一步,它可以讓你在地圖工具條中加入若干自訂的按鈕來執行特定的功能。在第三章中我們把Toolbar列為ADF常用組件之一,但是它和Map、TOC、Overview等其它組件是有區別的,我們開啟“context-attributes.xml”設定檔可以發現,Map、TOC、Overview等
Time of Update: 2018-12-03
· SeLayer1. 建立圖層建立圖層需要首先建立普通表,然後通過SeLayer的一系列方法給普通表添加幾何欄位,再註冊成Layer。但是,這個方法大多數情況不應該被使用,因為註冊完的Layer並沒有Geodatabase資訊,因此不能直接通過ArcGIS其他產品訪問。 下面基於上面建立的CREATE_TEST表建立了一個ArcSDE的圖層: SeConnection conn = getConn(); if (conn != null) { try { SeLayer layer =
Time of Update: 2018-12-03
I. 資料操作· 添加添加資料操作封裝在SeInsert類中,如下的代碼展示了如何在一個名為“PT”的點圖層中添加資料: SeConnection conn = getConn(); if (conn != null) { try { SeInsert insert = new SeInsert(conn); insert.intoTable("PT", new String[] { "SHAPE", "NAME" }); insert.setWriteMode(true);//
Time of Update: 2018-12-03
一 Server Object ExtensionsServer Object Extensions(以下簡稱SOE)是Server Object的擴充,比如MapServer、GPServer等等。和Utility Objects不同,SOE只在Server Object被建立的時候被初始化,它的生命週期和Server Object是相同的。相比Utility Objects,SOE有以下的一些特點: Ø 開發人員不需要手動執行個體化SOE,SOE是在Server
Time of Update: 2018-12-03
聽不少人反映過有這個問題,以前一直沒怎麼遇到過也沒放在心上。今天我也遇到了,雖然重啟“ArcGIS Server Manager Service”這個服務就可以解決,但是總歸有點不舒服。於是,就去查看了一下manager日誌,其中記錄了幾個rest handler的錯誤,大意是SOM主機訪問不到。所以,我猜測應該是“ArcGIS Server Manager Service”這個服務啟動的時候,“ArcGIS Server Object
Time of Update: 2018-12-03
I. 幾何對象ArcSDE SDK中的幾何對象定義分布在很多地方,他們各自有不同的用途。其中一部分幾何物件類型組織在com.esri.sde.sdk.geom包中、在com.esri.sde.sdk.client包中包含有SeShape和SDEPoint等類型。 com.esri.sde.sdk.geom包中組織的是符合OGC規範的簡單對象,它們之間的關係如: 圖 1 com.esri.sde.sdk.geom包的類別關係圖
Time of Update: 2018-12-03
I. 串連和流· ArcSDE串連SeConnection通過ArcSDE SDK可以通過服務串連和直連兩種方式進行串連。如果要進行直連可以參考這裡: http://edndoc.esri.com/arcsde/9.3/api/japi/japi.htm 不過直連的配置比較複雜,一般盡量通過服務方式串連到ArcSDE伺服器,以下的代碼可以通過服務串連到ArcSDE,然後返回一個SeConnection對象: private SeConnection conn = null; private
Time of Update: 2018-12-03
I. 表和圖層在ArcSDE中的“表”(Table)指的就是所有的資料庫表對象,而“圖層”(Layer)指的是在ArcSDE中註冊過的空間表。 · SeTable1. 建立表通過SeTable的create方法可以建立一個表,一下代碼展示了如何建立一個名為“CREATE_TEST”的表: SeConnection conn = getConn(); if(conn !=null){ try { SeTable table = new SeTable(conn, "CREATE_TEST");