MapXtreme for java 基本概念

一、MapXtreme for java 主要构成部分:
a、MapXtremeServlet
(1) 提供栅格地图服务 
(2)提供矢量地图服务
(3) 提供图元文件数据服务(tab 的属性数据)

b、MapJ Object
(1) 管理地图集的各种状态(地图中心位置,地图视野,地图坐标系)
(2) MapJ 通过向MapXtremeServlet 服务实例转发客户请求

c、Renderers
用来生成返回客户端地图数据的组件.有四种:LocalRenderer、MapXtremeImageRenderer、Intra-Servlet Container Renderer、Composite Renderer。
MapXtremeImageRender可以在远程产生地图图像,包含MapJ的应用程序和远程一个MapXtremeServlet实例通讯,产生地图图像;
LocalRender将地图输出为Java2D Graphics2D对象,所有的Render在客户端产生,也即所谓地图的矢量传输方式;
IntraServletContainerRenderer不需socket connection,从而MapXtremeSevlet将地图直接传回给客户端;
Composite Renderer将地图分为动态与静态图层,当需要更新地图时,可只更新动态图层,而静态图层仅生成一次。

d、Data Providers
Data Providers 在MapJ对象访问地图数据,提供多种数据源,
比如mapinfo 的.tab,ESRI的Shapefiles,Oracle spatial

二、基本架构图

三、安装地理服务器

1、下载地址:http://www.pbinsight.com/support/product-downloads/item/mapxtreme-java-edition-trial-version/KVQDMVY6IY
2、运行install.exe文件,跟普通的windows下安装软件一样安装。
安装成功后,在安装目录下会有如下文件
apache-tomcat-5.5  自带tomcat
bin                            
docs
examples               一些列子
lib                            用到的jar包
logs
3、MapXtreme Java工具的使用
MapXtreme ServerMapXtreme Server是用于生成地图的web服务器,也即是地图服务器。
通过菜单栏中的“Start MapXtreme Server”启动地图服务器。
然后,我们可以打开IE在地址栏中输入http://127.0.0.1:8080/进行访问
我们可以看到左边的导航条中有很多有用的链接信息。主要包括对tomcat的管理、API文档的说明、地图应用的sample。
MapXtreme Java Manager通过点击菜单栏中的“MapXtreme Java Manager-WebServer”启动MapXtreme Java Manager。注意:必须在地图服务器启动以后,MapXtreme Java Manager-WebServer才能正常启动。
MapXtreme Java Manager启动成功以后,会弹出一个管理界面


四,构建自己的webGIS 应用

(1)标准格式的地图图片(*.gst,或者*.mdf)。

(2)编写一个简单的servlet首先编写一个简单的servlet,后面我们将重写其doGet方法来生成地图。
将安装目录中/MapXtreme-4.8.2/lib/common中的文件和/MapXtreme-4.8.2/lib/server中的文件复制到自己的web应用中的/WEB-INF/lib目录下。
,然后启动web服务器,通过浏览器访问servlet看是否运行正常。

(3)编写生成地图的服务端代码这里所指的生成地图的服务端代码是指web服务器中servlet响应客户端请求生成图片信息的代码,
具体讲就是指servlet中重写的doGet( )方法中的代码。特别注意的是,这里所指的生成地图的代码是我们通过调用MapJ的API向地图服务器发送生成地图请求的代码;
相对地图服务器而言,我们这里编写的又是地图服务的客户端代码;相当于web应用而言,我们这里编写的却又是服务端代码。

MyMapServlet.java

package com.mapbar.gis.mapxtreme;

import java.awt.Color;
import java.io.IOException;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.mapinfo.mapj.MapJ;
import com.mapinfo.mapxtreme.client.MapXtremeImageRenderer;
import com.mapinfo.util.DoubleRect;
import com.mapinfo.xmlprot.mxtj.ImageRequestComposer;

public class MyMapServlet extends HttpServlet {

	private String geoSetFile = "";

	private String dataDir = "";

	private String CONTENT_TYPE = "text/html; charset=GBK";

	private String mimetype = "image/gif";

	private String mapxtremeurl = "";

	private Color imageColor = Color.blue;

	public MyMapServlet() {
		super();
	}

	public void destroy() {
		super.destroy();
	}

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doAny(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doAny(request, response);
	}

	public void doAny(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		try {
			response.setContentType("text/html; charset=GBK");
			response.setContentType(mimetype);

			ServletOutputStream so = response.getOutputStream();
			// 加载地图
			MapJ mapj = initMapJ();
			// 创建ImageRequestComposer (图片底色,低位,格式信息)
			ImageRequestComposer imageRC = ImageRequestComposer.create(mapj,
					256, imageColor, mimetype);
			// 创建ImageRender
			MapXtremeImageRenderer renderer = new MapXtremeImageRenderer(
					mapxtremeurl);
			// 生成图片 Render对象返回图像.
			renderer.render(imageRC);
			renderer.toStream(so);
			renderer.dispose();
			so.flush();
			// 关闭输出流
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}

	public void init(ServletConfig config) throws ServletException {
		super.init(config);
		geoSetFile = config.getInitParameter("geoSetFile");
		dataDir = config.getInitParameter("dataDir");
		mapxtremeurl = config.getInitParameter("mapxtremeurl");
	}

	/**
	 * *@加载地图
	 */
	public MapJ initMapJ() {
		MapJ myMap = new MapJ();
		try {
			// 加载数据, 可以加载Gst,Mdf。geoSetFile:.gst文件路径,dataDir:.tab文件所在目录
			myMap.loadGeoset(geoSetFile, dataDir, null);
			// 生成图片尺寸
			myMap.setDeviceBounds(new DoubleRect(0, 0, 800, 600));
		} catch (Exception e) {
			e.printStackTrace();
		}
		return myMap;
	}

}

web.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	<!--mapxtreme地图服务器的servlet的配置-->
	<servlet>
		<servlet-name>mapxtreme</servlet-name>
		<servlet-class>
			com.mapinfo.mapxtreme.MapXtremeServlet
		</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet>
		<servlet-name>mxtj_image</servlet-name>
		<servlet-class>
			com.mapinfo.mapxtreme.ImageHandlerServlet
		</servlet-class>
		<load-on-startup>2</load-on-startup>
	</servlet>
	<servlet>
		<servlet-name>mxtj_metadata</servlet-name>
		<servlet-class>
			com.mapinfo.mapxtreme.MetadataHandlerServlet
		</servlet-class>
		<load-on-startup>3</load-on-startup>
	</servlet>
	<servlet>
		<servlet-name>mxtj_vector</servlet-name>
		<servlet-class>
			com.mapinfo.mapxtreme.VectorHandlerServlet
		</servlet-class>
		<load-on-startup>4</load-on-startup>
	</servlet>


	<servlet>
		<servlet-name>MyMapServlet</servlet-name>
		<servlet-class>
			com.mapbar.gis.mapxtreme.MyMapServlet
		</servlet-class>
		<init-param>
			<param-name>geoSetFile</param-name>
			<param-value>
				D:\workspace\MapXtreme\data\hunan.gst
			</param-value>
		</init-param>
		<init-param>
			<param-name>dataDir</param-name>
			<param-value>D:\workspace\MapXtreme\data</param-value>
		</init-param>
		<init-param>
			<param-name>mapxtremeurl</param-name>
			<param-value>
				http://localhost:8090/MapXtreme/servlet/mapxtreme
			</param-value>
		</init-param>

	</servlet>

	<servlet-mapping>
		<servlet-name>mapxtreme</servlet-name>
		<url-pattern>/servlet/mapxtreme</url-pattern>
	</servlet-mapping>


	<servlet-mapping>
		<servlet-name>MyMapServlet</servlet-name>
		<url-pattern>/servlet/MyMapServlet</url-pattern>
	</servlet-mapping>

	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值