發表于 2004年11月26日 5:49 PM,當然現在感受不一樣了,但還是保持原味吧.
客戶端選擇。
?? 就IMS來說提供了 HTML Viewer ,Java Standard Viewer Java Custom Viewer
?
?? Java Standard Viewer,Java Custom Viewer功能差不多。 對于程序員、中國客戶來說。Java???
Standard
Viewer基本不用。典型的胖客戶端,Image 和Feature MapServices
都要下載APPLET,客戶端還要裝jre。隨著微軟IE對applet的抵制 和 Arcgis Server(遠程數據分析,Feature
MapServices的替代)成熟,估計這種胖客戶端沒什么大用了,至少我覺得在中國是這樣的。就我接觸的webgis項目中,applet的應用不是
很多,政府部門更是因為安全性,很少用。(http://www.668map.com/)用applet,但是假如我們對于大數據量的gis應用,有還多業務查詢、分析。估計把數據放到緩沖中的做法就懸了。還有假如我要加遙感應用,數據量大的更是可怕。 我個人對Java Viewer前景不是看好。另外AJAX技術的成熟,applet基本沒什么地位了。
??
HTML
Viewer:AJAX的成熟。隨著web程序的流行,xhtml,javascript,css的成熟(對不同瀏覽器有統一標準就完美了,不過客戶端
IE就現在還是老大)。arcgis server的客戶端也是html
view(沒辦法.net,j2ee還是以瀏覽器為主要客戶端的)。另外html,xhtml是如此的輕便,頁面是可以如此的漂亮,擴展,維護也不用編譯
什么的。雖然不支持Feature MapService,但Feature MapService的應用可以由arcgis server實現。http://maps.google.com
連接器選擇。
.NET Link 、ActiveX 、AppServerLink 、ColdFusion 、General、Java 、Servlet 、WMS
思想就是把ArcXML封裝了,再向ArcIMS發送請求,客戶端展示。
下面以arcIMS提供了例子探討一下Servlet Connector ,javaconnector。請自行配置htmlview和javasconnector的例子。
Servlet Connector:修改viewer.htm,使jsForm.htm 可以在頁面中看到。(<FRAMESET ROWS="30,*,30,50"—)
jsForm.htm加載地圖前代碼
......
function passXML() {
}
......??
加載地圖后代碼
......
function passXML() {
var XMLResponse='<?xml version="1.0" encoding="UTF-8"?><ARCXML
version="1.1"><RESPONSE><IMAGE><ENVELOPE minx="116.325273231549" miny="39.9126536248245"
maxx="116.741417757427" maxy="40.08" /><OUTPUT url="http://zhangkj:8080/Output/txzy_ZHANGKJ188425841.jpg" /></IMAGE></RESPONSE></ARCXML>';
parent.MapFrame.processXML(XMLResponse);
}
........
在aimsXML.js中看函數function htmlSendToServer(URLString,XMLRequest,theType)和function
processXML(theReplyIn) 一目了然了,htmlSendToServer把我們組合的arcXML發送到com.esri.esrimap.Esrimap?ServiceName,返回的XMLResponse由processXML顯示出來。
核
心代碼就這些,你在javascript文件夾中的大部分js文件是 組合請求的arcXML字符串 和
解析從arcIMS返回的arcXML字符串。其他js文件是DHTML,參數,公有函數等。看上去挺嚇人的。我個人覺得htmlview例子里的js代
碼可重用性很高。但必須很熟悉這些代碼,函數。和其他連接器比較,htmlview可以說是最簡單的了。
熟悉html,熟悉javascript,有arcXML文檔,這就夠了。
剩下的是用 javascript構造不同的arcXML,請求arcIms, 用dhtml,javascript顯示返回arcXML.
(大家可以看一下jspForm.jsp,用com.esri.aims.mtier.io.ConnectionProxy類來請求IMS服務。和上面的流程差不多。http://support.esri.com/index.cfm?fa=knowledgebase.techarticles.gateway&p=16&pf=217上面講的都不錯,從更深的角度講了各個連接)
javaconnector:把arcXML文檔用java對象封裝起來。組合arcXML的工作由純面向對象的java語言來做,
com.esri.aims.mtier.io.ConnectionProxy
對象請求ims服務器,返回java對象的響應。servlet connector 是字符串,而java
connector是java對象。這樣java語言的優勢,java對象的可操作性,易用性,方便性就顯露出來拉。javaconnector對
arcIMS服務動態增加等。
Map map=new Map();
map.initMap(mapCon,750,false,false,false,false);
map.setHeight(500);
map.setWidth(400);
map.refresh();??
String url=map.getMapOutput().getURL();
Map對象封裝ArcXML,map.refresh() 請求IMS服務。 請求完了Map對象包括響應的內容。(其實map.initMap也觸發了一次請求 GET_SERVERINFO。javaconnector的類庫設計的有問題。)
servlet connector 和 javaconnector比較
一、性能
?? servlet connector: 用戶下載javascript文件。組合arcXML在客戶端執行。如果用戶機器不是太慢的話,性能應該是最好的,服務器壓力也小。據說ims 群集安裝,系統配置的好的話,可以支持幾百萬用戶。
??
javaconnector:比不上servlet
connector。1、java對象的封裝,在服務器端運行。(不過可忽略)2、Map對象建立的性能損耗。map.initMap(),
map.refresh()都要觸發請求ims。操作一次地圖 新建一個map對象的做法是不可能的。有兩個解決 把map對象放到Session中
和 map對象池。 把map對象放到Session,用戶多的時候,web服務器壓力很大,多用戶時不可行。 map對象池 ,map對象的
鈍化,激活(EJB的提法)操作復雜。因為不同用戶當前操作狀態不一樣(在arcgis9 server中,狀態保存是個值得研究的地方)。
運用javaconnector 性能問題得考慮。
(個人覺得javaconnector類庫建立的有問題,用反編譯工具看,代碼設計有改進的地方,可以解決map對象初始化問題)。
二、功能:
??
servlet connector: arcXML的所有功能。 問題在 組合arcXML和顯示響應的arcXML的環節上。
因為這些用javascript實現。有一定局限性。 比如,我要把 響應arcXML
的查詢結果排序。實現起來費事。(arcXML查詢不支持order by ).不可以對ims服務操作。
?? javaconnector:arcXML的所有功能。可以用java語言的優勢處理很多問題。比如前面排序。動態圖層、與遙感影象圖的疊加實現起來都比較方便。還可以結合arcSDE的java接口處理元數據。
待續.....
北京最多
上海也有.
其他地方好象不多.
另外,若用java viewer客戶端,則在internet網上訪問站點時?要下載插件和arc viewer怎么要進入好幾個頁面手動下載,那么麻煩。 請問有什么解決方法么? 或說說流程的機理。謝謝
請問一下,用arcxml請求 ,是把請求的內容寫在哪個文件里? 是新建個.js文件,還是.axl文件 ,寫arcxml請求?
在js文件中構造arcxml請求字符串,是動態構造的。
若用java viewer客戶端,則在internet網上訪問站點時?要下載插件和arc viewer怎么要進入好幾個頁面手動下載,那么麻煩。 請問有什么解決方法么? 或說說流程的機理。
要下載jrejava運行環境。你安裝就可以了吧。另外還要安裝java viewer客戶端,你可以在安裝文件夾中找到(website里面)。
在js文件中構造arcxml請求字符串,是動態構造的。
若用java viewer客戶端,則在internet網上訪問站點時?要下載插件和arc viewer怎么要進入好幾個頁面手動下載,那么麻煩。 請問有什么解決方法么? 或說說流程的機理。
要下載jrejava運行環境。你安裝就可以了吧。另外還要安裝java viewer客戶端,你可以在安裝文件夾中找到(website里面)。
現在的問題是 我在一臺什么arc ims軟件都沒有安裝的機器上,按照提示安裝了jre 1.3 還下載了aejava.exe文件,安裝了,但是還是顯示不了地圖,而在我自己的安裝有arcims的機器上卻能顯示地圖,這是什么原因?謝謝!
另外,arcxml的請求,是怎么動態生成的?我用的是feather service ,沒有生成javascript這個文件夾,也沒有幾個.js文件。這個arcxml 具體點改怎么寫? 非常感謝。
如果要定制開發javaviewer,定制不了太多東西,因為你無法反編譯.class文件。
可能你用的是機器名,你改成ip試試
用的是arcims 地圖服務和jsp及servlet建立webgis服務 ,
arcgis地圖工具也用來制作和修改地圖。
我們是買別人的一套系統,然后再做開發。
關于arcgis,特別是arcims的幫助(中文)的很少。
本人英文水平很一般,
希望能和您多多的交流。
關于其他gis以外的java我不怕,但是我剛接觸webgis確實有點
力不從心,希望我們能共同進步,互相學習。
謝謝。
我的qq:316451618
郵箱:zhoubing5181@yahoo.com.cn
界面中有'>','<'這類的符號,填寫后得到get querystring,到底這些查詢由
哪個js文件來處理,我應該修改哪些js文件?數據庫表中怎么設計?比如查圖層
, 再查某個地點,怎么設計數據庫啊?求哪位大俠幫個忙,指點下,我是初學者,
做個查詢弄了好久.
郵箱francesses-45@163.com
界面中有'>','<'這類的符號,填寫后得到get querystring,到底這些查詢由
哪個js文件來處理,我應該修改哪些js文件?數據庫表中怎么設計?比如查圖層
, 再查某個地點,怎么設計數據庫啊?求大俠幫個忙,指點下,我是初學者,
做個查詢弄了好久.
界面中有'>','<'這類的符號,填寫后得到get querystring,到底這些查詢由
哪個js文件來處理,我應該修改哪些js文件?數據庫表中怎么設計?比如查圖層
, 再查某個地點,怎么設計數據庫啊?求大俠幫個忙,指點下,我是初學者,
做個查詢弄了好久.
我的郵箱francesses-45@163.com
qq:125050910
http://bbs.esrichina-bj.cn/ESRI/viewthread.php?tid=8967&extra=page%3D1
coderchang@yahoo.com.cn