基于Mapserver的WebGIS下Java环境的配置与Mapserver的JSP例子
来源:互联网 发布:中信证券软件手机版 编辑:程序博客网 时间:2024/05/29 19:34
基于Mapserver的WebGIS下Java环境配置与JSP例子
棒棒唐 2006-06-05
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>
放缩因子:
<INPUT TYPE="text" NAME="rodio" value="<%=rodio%>" id="rodio" >
</td>
<td>
<INPUT TYPE="submit" value="提交">
</td>
<tr><td width=80 >
比例尺:
<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>
图例:
<INPUT NAME="imgLengd" TYPE="image" SRC="<%=vLengdBarFile%>" border=0>
</td>
<td>
鹰眼:
<INPUT NAME="vReferenceF" TYPE="image" SRC="<%=vReferenceFile%>" border=0>
</td>
</tr>
</table>
</FORM>
</BODY>
</HTML>
- 基于Mapserver的WebGIS下Java环境的配置与Mapserver的JSP例子
- 基于MapServer的WebGIS开发
- 基于Mapserver的WebGIS设计
- 基于MapServer的WebGIS开发
- 基于MapServer的WebGIS开发
- 基于MapServer的WebGIS开发(转)
- 基于postgresql+postGIS+QGIS+MapServer的WebGIS部署
- 开源WebGIS-Mapserver在windows下的安装
- MapServer地图服务的配置
- PostGIS,Postgre DBMS,Mapserver构建免费的WebGIS应用
- C++语言的开源WebGIS解决方案:PostGIS+Mapserver+OpenLayers
- 基于MapServer的在线地图实现
- MapServer应用的结构
- MapServer的安装和使用
- GeoServer和MapServer的对比
- MapServer的安装和使用
- mapserver 和 .net结合的怪事情
- OSGeo.MapServer.mapscriptPINVOKE错误的解决
- EJB3.0新规范概览及其未来发展
- 软件开发需求分析五个常见错误及应对措施
- 第一个EJB3.0范例
- SQLServer如何启用大内存
- 2006:大学生自杀年
- 基于Mapserver的WebGIS下Java环境的配置与Mapserver的JSP例子
- 类似MSN提示的页面效果
- Chinasec专家谈内网安全产品选型三要素
- 走不出的“通用”怪圈--coding or configing
- 讨厌的0xc0150002 MS has not give friendly notify for Vista with VS2005
- 武汉大学17舍女生跳楼事件
- iBATIS实现的一个例子
- 新生活,新风格
- 通过蓝牙技术访问 IBM Lotus Sametime V7.5 的语音聊天功能