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