zhyiwww
          用平實的筆,記錄編程路上的點點滴滴………
          posts - 536,comments - 394,trackbacks - 0
          <2006年7月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          -------------------------------------------
          崇尚原創精神,
          文章歡迎轉載,
          請您注明出處,
          在此特別聲明。
          版權所有@zhyiwww
          引用鏈接
          http://www.aygfsteel.com/zhyiwww

          --------------------------------------------

          常用鏈接

          留言簿(33)

          隨筆分類(626)

          朋友的博客

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 1559904
          • 排名 - 11

          最新評論

          閱讀排行榜

          評論排行榜

          基于Mapserver的WebGIS下Java環境配置與JSP例子
          ????????
          ?????? mapserver通過Mapscript支持各種解釋型語言,像C#,java、TCL、 PHP,完成這項工作是通過
          swig這個開源工具進行的,swig可以對c/c++代碼打包成各種腳本語言可以的代碼庫。swig這個偉大
          的工具對mapserver的c代碼進行了打包。俺太喜歡這個swig了,網上這么的c/c++開源庫,要是咱們
          用到某方面的功能,下一個,然后用swig打包,這樣我們就看在java或者c#里用了,節約好多勞力哦。
          用c/c++寫底層的核心功能了,即有利于提高運行速度又能保護好源碼又能利用開源的c/c++類庫,再用
          swig為各種語言打包,可以直接享受到C#、java、TCL之類的解釋型強大功能,哈哈……

          ?? 我們可以下載現成的mapscript.jar包,其實下載的ms4w_1.5.3.zip已經包含這個東西啦。有了這個jar
          包我們就可以在java里頭調用mapserver咯。
          ?? 步驟是這樣的:
          1、設置環境變量PATH,以便JVM定位到mapscript.dll或mapscript.so,下面以windows為例
          ?? set PATH=D:\ms4w\Apache\cgi-bin;%PATH% #這個是定位dll的,
          ?? set PROJ_LIB=D:\ms4w\proj\nad? #這個是為方便投影
          ?? set CLASSPATH=D:\ms4w\Apache\cgi-bin\mapscript\java\mapscript.jar;%CLASSPATH% #java的,不多說了

          ?? 最好是把這幾個環境變量設置為system環境變量,不能是user環境變量(切記哦,否則定位不到dll)。
          2、在tomcat中如果,先前沒有設置PATH,也可這么搞。由于tomcat是運行在JVM上的,在tomcat的起來腳本增加
          ?? 選項-Djava.library.path=D:\ms4w\Apache\cgi-bin 也可以!

          ?? 經過上面兩步咱們已經配置好java環境了,接下來我們看個小例子。
          ?? 這是一個可以運行的JSP代碼。主要實現了這幾個功能
          ? 1、地圖放縮
          ? 2、鷹眼圖
          ? 3、圖例
          ? 4、比例尺
          ? 由于代碼非常簡單,棒棒唐就不多說了,自己看吧!當然Mapserver的功能比這強大得多,俺越來越喜歡mapserver了。
          在mapserver的mailllist中說到了Mapserver與ArcIMS的比較,其中有幾點值得關注。Mapsever速度比ArcIMS快,并發量
          比ArcIMS強,支持的webgis協議比ArcIMS多,二者的GIS功能也差不多。一個是商用的一個是開源的。對于俺們這些窮人來說
          玩玩Mapserver也不錯。想自己創業的朋友可以從Mapserver起步哦。
          ? 以后咱們用Servlet+Ajax來做Mapserver的webgis開發哈!切看下回分解。

          結果圖如下:

          <%@page contentType="text/html; charset=GB2312" language="java" %>
          <%@page import="edu.umn.gis.mapscript.*" %>
          <%@page import="java.util.Iterator, java.util.ArrayList"%>
          <%@page import="java.util.Date"%>
          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
          <HTML>
          <HEAD>
          <TITLE> my first mapserver-webgis Good-luck </TITLE>
          </HEAD>
          <BODY>
          <FORM METHOD=POST ACTION="index.jsp">

          <%!
          ?static int i=0;
          %>

          <%

          ?mapObj map;
          ?String vMapFile="";
          ?String vScaleBarFile="";
          ?String vLengdBarFile="";
          ?String vReferenceFile="";
          ?double rodio=1;
          ?map = new mapObj ("D:/SuperMap/SuperMapISJava/thirdparty/tomcat/webapps/mapserver/tutorial.map");
          ?if(map==null)
          ?{
          ? System.out.println("!ok");
          ?
          ?}
          ?else
          ?{??
          ?if(request.getParameter("rodio")!=null)
          ?{
          ??if(request.getParameter("rodio")!="")
          ??{
          ???rodio=Double.parseDouble(request.getParameter("rodio"));
          ??}
          ?}
          ?rectObj ro=map.getExtent();
          ?double xw=ro.getMaxx()-ro.getMinx();
          ?double yw=ro.getMaxy()-ro.getMiny();
          ?double cx=(ro.getMaxx()+ro.getMinx())/2;
          ?double cy=(ro.getMaxy()+ro.getMiny())/2;
          ?double newxw=xw*rodio;
          ?double newyw=yw*rodio;
          ?double maxx=cx+newxw/2;
          ?double minx=cx-newxw/2;
          ?double maxy=cy+newyw/2;
          ?double miny=cy-newyw/2;
          ?map.setExtent( minx,? miny,? maxx,? maxy);
          ?System.out.println("minx:"+minx);
          ?System.out.println("miny:"+miny);
          ?System.out.println("maxx:"+maxx);
          ?System.out.println("maxy:"+maxy);
          ?? map.setImagecolor(new colorObj(10,128,98,13));
          ?? imageObj imagen=map.draw();
          ?? //imagen.setImageDir("/tmp");
          ?? Date dt=new Date();
          ?? vMapFile="output/tangnf"+(dt.getTime())+".png";
          ? // map.embedScalebar(imagen);
          ?? imagen.save(vMapFile,map);
          ??
          ?? scalebarObj? scalebar=map.getScalebar();
          ?? scalebar.setHeight(10);
          ?? scalebar.setWidth(200);
          ?? scalebar.setBackgroundcolor(new colorObj(0,255,0,13));
          ?? scalebar.setColor(new colorObj(230,0,0,13));
          ?? scalebar.setImagecolor(new colorObj(255,255,255,13));
          ?? scalebar.setOutlinecolor(new colorObj(0,230,255,13));
          ?? //scalebar.setStyle(3);
          ?? scalebar.setUnits(3);
          ?? scalebar.setIntervals(3);
          ?? //scalebar.setLabel(new labelObj
          ????? imageObj Scalebarimage=map.drawScalebar();
          ?? vScaleBarFile="output/scalebar"+(dt.getTime())+".jpg";
          ?? Scalebarimage.save(vScaleBarFile,map);
          ?
          ??? legendObj legend=map.getLegend();
          ??? legend.setHeight(200);
          ??? legend.setWidth(100);
          ??? System.out.println(legend.getLabel().getEncoding());
          ?? imageObj Legendimage=map.drawLegend();
          ?? vLengdBarFile="output/Legend"+(dt.getTime())+".png";
          ?? Legendimage.save(vLengdBarFile,map);
          ?? int layerCount=map.getNumlayers();
          ?? for(int i=0;i<layerCount;i++)
          ??{
          ??? layerObj layer=map.getLayer(i);
          ??? System.out.println("layer"+(i)+":"+layer.getName());
          ??}
          ?????? System.out.println("layerCount:"+layerCount);
          ?
          ????? referenceMapObj referenceMap=map.getReference();
          ?? referenceMap.setHeight(200);
          ?? referenceMap.setWidth(200);

          ?? imageObj ReferenceImg=map.drawReferenceMap();
          ?? vReferenceFile="output/Reference"+(dt.getTime())+".png";
          ?? ReferenceImg.save(vReferenceFile,map);
          ? System.out.println("我成功啦");
          ?}

          %>
          <table border=1>
          <tr><td>
          放縮因子:&nbsp;&nbsp;
          <INPUT TYPE="text" NAME="rodio" value="<%=rodio%>" id="rodio" >
          </td>
          <td>
          <INPUT TYPE="submit" value="提交">
          </td>
          <tr><td width=80 >
          比例尺:&nbsp;&nbsp;
          <INPUT NAME="ScaleBar" TYPE="image" SRC="<%=vScaleBarFile%>"? border=1>
          <!--? <img SRC="<%=vScaleBarFile%>"? border=0 width=100 height=17></img> -->
          ?</td>
          ?</tr>
          ?<tr><td>
          ?<INPUT NAME="imgMap" TYPE="image" SRC="<%=vMapFile%>"? width=600 height=400 border=0>
          ?</td>
          ?</tr>
          ?<tr><td>
          ?圖例:&nbsp;&nbsp;
          ?<INPUT NAME="imgLengd" TYPE="image" SRC="<%=vLengdBarFile%>"?? border=0>
          ?</td>
          ?<td>
          ?鷹眼:&nbsp;&nbsp;
          ?<INPUT NAME="vReferenceF" TYPE="image" SRC="<%=vReferenceFile%>"?? border=0>
          ?</td>
          ?</tr>
          ?</table>
          </FORM>
          </BODY>
          </HTML>



          |----------------------------------------------------------------------------------------|
                                     版權聲明  版權所有 @zhyiwww
                      引用請注明來源 http://www.aygfsteel.com/zhyiwww   
          |----------------------------------------------------------------------------------------|
          posted on 2006-07-03 16:18 zhyiwww 閱讀(2313) 評論(1)  編輯  收藏 所屬分類: gis

          FeedBack:
          # re: 基于Mapserver的WebGIS下Java環境配置與JSP例子(轉載)
          2007-08-24 22:13 | giggs
          請問樓主在做MapServer的開發馬,我有些問題想請教,不知道怎么才能和你聯系?  回復  更多評論
            
          主站蜘蛛池模板: 仙游县| 邢台县| 宁武县| 中山市| 秀山| 积石山| 太仓市| 阿克| 颍上县| 龙里县| 南通市| 灌南县| 金山区| 孙吴县| 辉南县| 洛宁县| 雅安市| 太康县| 监利县| 万盛区| 巨野县| 海门市| 图木舒克市| 奉贤区| 汽车| 和政县| 长岛县| 丰台区| 拉萨市| 石楼县| 贵州省| 肃宁县| 远安县| 富平县| 晋江市| 惠来县| 钟山县| 若尔盖县| 梁河县| 兴安盟| 抚宁县|