mapxtreme 高级教程 ————利用 mapxtreme 构建企业级的 webgis

53
MapXtreme MapXtreme 高高高高 高高高高 ———— ———— 高高 高高 MapXtreme MapXtreme 高高高高高高 高高高高高高 WebGIS WebGIS 版版版版Mapinfo China 版版版 版版版 2001 版 2 版

Upload: zizi

Post on 27-Jan-2016

134 views

Category:

Documents


0 download

DESCRIPTION

MapXtreme 高级教程 ————利用 MapXtreme 构建企业级的 WebGIS. 版权所有: Mapinfo China 技术部 邹德禹 2001 年 2 月. 主要内容. ◆ 基于 MapXtreme 的 WebGIS 开发 ◆ WebGIS 开发案例分析. 基于 MapXtreme 的 WebGIS 体系结构. 在构建 MapXtreme 应用之前,应考虑的一个问题. 在构建 MapXtreme 应用之前,应当事先考虑到网站的扩展问题。 对于大访问量的网站,可以有两种扩展方式来支持多用户访问。 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

MapXtreme MapXtreme 高级教程高级教程———————— 利用利用 MapXtremeMapXtreme 构建企业级的构建企业级的 WebGISWebGIS

版权所有: Mapinfo China 技术部

邹德禹 2001 年 2 月

Page 2: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

主要内容

◆ 基于 MapXtreme 的 WebGIS 开发

◆WebGIS 开发案例分析

Page 3: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

基于 MapXtreme 的 WebGIS 体系结构

Page 4: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

在构建 MapXtreme 应用之前,应考虑的一个问题

在构建 MapXtreme 应用之前,应当事先考虑到网站的扩展问题。 对于大访问量的网站,可以有两种扩展方式来支持多用户访问。

Vertical Scalability: 这种扩展方式,主要是通过增加单个服务器的物理性能,如增加内存, CPU 等来实现的。在构建 这种类型的网站时,会用到 MapXBroker 对象。

Horizontal Scalability: 这种扩展方式,是通过增加服务器来分担单台服务器的过重负载的。这时,需要在每台服务上安装 MapXtreme.

一般采用 Vertical Scalability 方式。 Horizontal Scalability 方式的成本很高。

培训中的所有示例都适用于以 Vertical Scalability 方式构建的应用。

Page 5: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

MapXtreme

RDBMS

Thin

MapXtreme

GIF & JavaApplet

RDBMS

MapXtreme

MapJ &Vectors

RDBMS

FatMedium

GIFImage

Internet

WebGIS 的三种架构

Page 6: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

MapXtreme 的系统的连网工作方式

Client PCClient PCUI in WebBrowser

Web 主机

HTTPServer

ASP 应用服务器

UI 接口 /State 管理UI 接口 /State 管理

HTML/Map

HTML/HTML/MapMap

服务器端应用

服务器端应用

返回

请求

MapX

Server

Page 7: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

利用 MapXtrem 构建的三层系统结构

Internet

地图可以存放在 RDBMS上

关系数据库

Web服务器文件服务器 (TAB)

Page 8: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

构建 MapXtreme 分布式服务体系结构

支持分布式服务体系结构是 MapXtreme 的一个重要的特性。 MapXtreme 支持分布式结构的重要因素在于它的良好的开放性。因为它能与任何标准的 Web Server 相连,MapXtreme 与 WebServer 的连接是通过应用服务器完成的,如 Microsoft 的 ASP, 或者国外流行的 Haht hahtsite(MapXtreme 自带 Haht hahtsite 开发环境 , 用户无须另外单独购买网络应用开发工具 ) 。一个 Web Server 可以任意挂接多个 MapXtreme 地图应用服务器。 MapXtreme的 Server 可以自动维护和协调 WebServer 和多个 MapXtreme 之间的请求响应关系。无须用户编程解决。

Page 9: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

基于 MapXtreme 的 WebGIS 应用开发

Page 10: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

MapXtreme 应用的开发方式 MapXtreme 提供了 Development Tools

Development Tools 包括 MapXtreme Sample Applications 及 MapXtreme Code Libs, 它们可以从光盘上直接安装。

开发方式程序员可以使用自己的机器开发,等应用完成后,再通过文件 copy 或是 FTP 将文件传

送到服务器上的 WEB 站点主目录所对应的物理路径下。如果是采用 Visual interDev 开发环境的话,则此开发环境还支持远程程序调试,则只需

要在一台服务器上安装 MapXtreme ,程序员便可以在多台机器上同时进行开发。程序员也可以直接在服务器上进行开发。

开 发 环 境

Internet Development(e.g. HAHT site,Microsoft InterDevSample Applications

Web 服务器

MapXtreme ServerToolsMap DataApplication Server

PublishApplication Via file copy or FTP

Page 11: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

软件开发环境软件开发环境

Microsoft ASP(InterDev)在 ASP ( Active Server Page )方式下, MapXtreme 在Server 端的开发语言为 VBScript 或者 JavaScript 。开发环境为 Visual InterDev 。 MapXtreme 还向用户提供了 Java Applet 的源码,便于用户添加和维护自己的应用。

Hahtsite 集成开发环境 其它集成开发环境

Page 12: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

MapXtreme 的技术核心是 MapX, 针对 MapX 产品的编程知识和经验都可以适用于 MapXtreme 应用的开发。

MapXtreme 可以实现 MapX 的全部功能

MapXtreme 本身又是一个 Server, 它能在多用户访问时自动进行平衡负载,协调 MapX 的工作

用户不需要进行任何多用户访问平衡负载的编程工作,这一切由 MapXtreme 的 Server 和 Application Server 自动完成

MapXtremeMapXtreme 与与 MapXMapX 的关系的关系

Page 13: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

如何写一个最简单的 MapXtreme ASP 程序 1. 建立一个存放页面文件的目录 C:\maptest\Hello Tute

2. 在 IIS 管理器中为 C:\maptest\Hello Tute 创建一个虚拟目录 “ /hellotute” ,并确保使该虚拟目录可执行 ASP 脚本程序。

3. 在 IIS 管理器中创建一个名叫 “ mapimage” 的虚拟目录,使用指向 “ C:\temp” 。 4. 将 MapXtreme 代码库拷贝到 C:\maptest\lib 下。 5. 利用记事本创建一个名叫 default.htm 的文件。内容如下: <HTML> <BODY> <P>MapXtreme 'Hello Wrold' Tutorial</P> <P><A href="mappage.asp">View World Map</A></P> </BODY> </HTML> 6. 利用记事本创建一个名叫 global.asa 的文件。内容如下: <!--#include file = "..\lib\miConst.asp">--> <script language = "vbscript" runat = "Server"> sub session_onstart set session(SESN_MAPPER) = nothing set session(SESN_COURIER) = nothing end sub </script>

Page 14: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

6. 利用记事本创建一个名叫 mappage.asp 的文件。内容如下: <%@ LANGUAGE = VBScript %> <!--#INCLUDE FILE="..\lib\miConst.asp"--> <!--#INCLUDE FILE="..\lib\miMapEngine.asp"--> <!--#INCLUDE FILE="..\lib\miUtilities.asp"-->

<% Dim bResult Dim strFile Dim strMapPath Dim strMapVirtual

bResult = InitMapEngine(OBTAIN_DIRECTLY,Session(SESN_MAPNAME)) SetMapGeoset("World.gst") SetMapTitleText("Hello Tutorial") strFile = CreateUniqueFileName() strFile = strFile & ".gif" strMapPath = "c:\temp\" & strFile strMapVirtual = "/mapimage/" & strFile bResult = ExportMapToGIF(strMapPath) %>

<HTML> <HEAD><TITLE>Hello Tutorial</TITLE></HEAD> <BODY><IMG SRC="<% = strMapPath %>"></BODY> </HTML>

如何写一个最简单的 MapXtreme ASP 程序 ( 接上页 )

Page 15: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

7. 在浏览器中键入 http://george/hellotute 便可运行此程序。 程序说明: default.htm: 它是应用的缺省主页。 Global.asa: 该文件中定义了两用来访问 MapX 对象的对象变量 mappage.asp: 它是整个应用的核心文件,在该文件中生成了一个 MapX 对象的实例,并为生

成的位图指定了存放路径,以及将生成的位图显示到页面上。 当在浏览器中键入 http://george/hellotute 时 IE 会自动请求访问该页面。这个页面上有一个链

接,它指向 mappage.asp 页。 当用户点击缺省主页面上的链接时, IE 便会请求访问 mappaga.asp 页面。这时服务器便会启

动一个用户 Session ,并先于 mappage.asp 页面之前,先执行 global.asa 文件。 执行完 global.asa 文件后,执行 mappage.asp 文件。 8.几个主要函数的功能及使用说明

InitMapEngine(intMethod,strName): 此函数用来初始化一个 MapX 实例。

intMethod: 有两个可选参数, OBTAIN_DIRECTLY 或 OBTAIN_FROM_BROKER如果每个 MapXCourier 都直接启动一个 MapX 实例,则使用 OBTAIN_DIRECTLY ,如果 MapXCourier 通过 MapXBroker 来获取MapX 实例,则使用 OBTAIN_FROM_BROKER 。

strName: 如果 intMethod 使用 OBTAIN_DIRECTLY ,则 strName表示一个 GeoSet名,

如果 intMethod 使用 OBTAIN_FROM_BROKER 则 strName表示一个 MapXBroker组名。

如何写一个最简单的 MapXtreme ASP 程序 ( 接上页 )

Page 16: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

SetMapGeoset 设置使用的 GST 地图

SetMapTitleText 设置显示在 WEB 页面上的地图标题

ExportMapToGIF 将地图处理结果生成位图

如何写一个最简单的 MapXtreme ASP 程序 ( 接上页 )

Page 17: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

如果对上述程序的功能进行增强

例如:如何在页面上增加几个按钮,实现地图的放大,缩小,漫游。 见示例程序。 如何理解这个程序:

对于同一个用户会话,如果 MapX 实例已经存在,则不应再创建新的对象实例。 需要将用户在屏幕上点击的坐标,转换成经纬度坐标。 需要利用 HTML 标鉴在页面上加几个地图操作按钮。 为了让服务器能知道,用户进行了何种地图操作,必须在页面上使用 Form表单,

来提交用户的地图操作请求。 必须将用户的地图操作请求(放大,缩小等),传递到服务器上,让MapX 实例进行相应的操作。

每次都用同一个 mappage.asp 文件显示地图处理结果,所以 mappage.asp 上的 Form表单的 Action 都必须指向同一个 mappage.asp 。

Page 18: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

Hello World Hello World 实例分析实例分析 ::

Page 19: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

MapXtreme MapXtreme 进阶进阶 ASP Code LibraryASP Code Library

miM

apE

ngin

e.as

p

Glo

bal.a

sa

miE

rror

Sys

tem

.asp

Deb

ugpa

ge.a

sp

Map

Pag

e.as

p

App

lica

tion

.asp

Hello WorldHello World

References the code library contained in MapXtreme 2.0 for Windows NT

Page 20: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

Hello World Hello World 实例分析实例分析 ::

如果客户端在几分钟内没有操作 ,则这个用户的会话过程会自动操作中止 .

当会话超时后,IIS 会自动清除会话所包含的各种参数变量

用户会话中止

Session_OnEnd Global.asa

Call Courier.DeleteFiles (删除文件)

Call Courier.ReleaseMapX 释放 MapX 对象

Page 21: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

Session_OnStart Global.asa

初始化系统变量 例如 : Session(SESN_ABSMAPPATH):临时 GIF 文件的路径 Session(SESN_TOOL):当前的工具操作状态(放大、缩小、平移?) Session(SESN_WIDTH), Session(SESN_HEIGHT):地图的宽度和高度 Session(SESN_MAPNAME) = “World Countries”调入的地图名字 Session.Timeout = 3会话超时时间

Hello World Hello World 实例分析实例分析 ::From Default.htm, user clicks link to MapPage.asp

Default.htm

Page 22: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

Hello World Hello World 实例分析实例分析 ::

InitErrorSystem()

InitMapEngine()

如果初始化地图引擎失败 , MapPage.asp 调用 “ busy.asp”; 否则继续

CreateUniqueFilename() miUtilities.asp

miErrorSystem.asp

“主程序入口” Mappage.asp

首先要调用 SetupMappingEngine() Application.asp

ExportMapToFile() miMapEngine.asp

miMapEngine.asp

Page 23: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

Hello World Hello World 实例分析实例分析 ::

“main” MapPage.asp

CommandHandler Application.asp

每次用户在客户端发生操作,如地图放大

AdjustMap Application.asp

SetMapCenterAndZoomTo miMapEngine.asp

ExportMapToFile miMapEngine.asp

DeleteFiles miUtilities.asp

ConvertScreenCoordsToMap miMapEngine.asp

Page 24: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

Hello World Hello World 实例分析实例分析 ::

“main” Mappage.asp

CommandHandler Application.asp

用户端操作改变地图视野大小

ZoomMap Application.asp

SetMapZoom miMapEngine.asp

DeleteFiles() miUtilities.asp

ExportMapToFile() miMapEngine.asp

Page 25: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

If the user’s session has timed out, and then the user clicks the mapto zoom in, the request creates an all new session on the server.

当上一个会话超时之后,用户又点击地图

“main” Mappage.asp

RebuildMap Application.asp

变量重新初始化 Global.asa

SetupMappingEngine Application.asp

如果 SetupMappingEngine 探测到这个用户是上一次会话超时 (which timed out), 则调用 RebuildMap:

RebuildMap 读取 hidden form fields中的数值恢复上一次超实时的地图状态 .

Hello World Hello World 实例分析实例分析

Page 26: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

当 RebuildMap 恢复好上一次地图状态(zoom level, center x, center y)

之后 , 再进行放大、缩小、中心显示等操作。

这样用户感不到上一次操作已经超时

CommandHandler Application.asp

AdjustMap Application.asp

ExportMapToFile() miMapEngine.asp

SetMapCenterAndZoomTo miMapEngine.asp

Hello World Hello World 实例分析实例分析

Page 27: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

MapX MapX 的核心功能的核心功能

Page 28: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

如何获取 MapX 对象?Function InitMapEngine(ByVal intMethod, ByVal strName)

Dim bResultOn Error Resume Next

If intMethod = OBTAIN_DIRECTLY Then Set Session(SESN_MAPPER) =

Session(SESN_COURIER).GetMapXFromNewServer(strName)Else

Set Session(SESN_MAPPER) = Session(SESN_COURIER).GetMapXFromBroker(strName, 15000)

End If End Function

此函数等价于Set Session( "MAP" ) = Server.CreateObject( "MapX.Map.3" )

Page 29: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

MapInfo terminology

MapInfo Professional’sMapInfo Professional’s MMapap ObjectObject

==

MapX’sMapX’s

FeatureFeature

Page 30: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

Features Collection A Feature is an item on a map layer. It can be of typ

e line, region, text or symbol.

A collection of Feature objects, created by methods of the features object: AllFeatures, NoFeatures, SearchAtPoint, SearchWithinDistance, SearchWithinRectangle, SearchWithinFeature

Each layer object may have multiple features collections

Page 31: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

SearchAtPoint Returns a features collection of the features at a

given point from a particular layer.

Page 32: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

PrintMapTools()

Prints the tools (form field inputs) that allow the user to zoom in, zoom out, pan, etc.

Must give the user the ability to activate this tool through PrintMapTools(), the functionality of the tool is handled in CommandHandler routine

Page 33: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

CommandHandler Determines what tool (if any) was just used on

the map and takes the appropriate actions on the map

Page 34: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

Adding New Tools

Need to do two things: Add tools to the PrintMapTools (or another equivalent) rout

ine Process the tool’s use in CommandHandler (or another equi

valent) procedure

Page 35: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

Plotting Points Datasets Overview [MapX] [MapX]

ODBC Datasets [MapX] [MapX]

BindLayer [MapX] [MapX]

ODBC Datasets [Haht][Haht]

Page 36: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

DataBinding

A way of tying data from an external source to the map

Creates a DATASETDATASET when data is bound to a MapX map layer

Why? Theme maps Query information Summarization of data geographically Create a new layer of points

Page 37: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

Three Types of Databinding Normal

Bind data to existing map features

XY Bind [Requires use of BindLayer object] Creates symbols on the fly from long/lat coordinates already in your data

base

PointRef [Requires use of BindLayer object] Creates symbols on the fly by matching geographic information in your d

atabase against features on an existing map layer

Page 38: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

Normal Data Binding

State Sales DistrictWA 4459 WESTTX 6979 SCFL 3423 SENY 3922 EAST

Page 39: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

“Normal” Data Binding Datasource Fields aggregated and attached to a

n existing map layer

You can specify Key Field and/or Layer OR

MapX can determine Key Field and/or Layer

Page 40: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

Data Binding using BindLayer Object

Name Long LatJim -99.893 56.34Kenny -79.424 44.34Kyle -89.234 52.543Stan -112.32 24.98Eric -82.34 29.34Ike -118.79 33.33

… … …

Page 41: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

X-Y Data Binding

Datasource already contains X & Y coordinates

You specify X,Y and Key Fields via BindLayer object

New point layer is created

Remaining datasource fields are bound to the new layer as a dataset

Page 42: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

Point Reference Binding

Datasource contains geographic key such as zipcode

You specify key Field and Reference layer via BindLayer object

New point layer is created with a point for each row in the datasource

Remaining datasource fields are bound to the new layer as a dataset

Page 43: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

BindLayer Object Used as a parameter to the Datasets.add met

hod

Specifies how to create new symbols from your data

Must be able to geo-reference data Needs Longitude and Latitude OROR A field that can be matched up against a map layer

(zipcode, city, district, etc)

Page 44: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

MapXtreme 进阶——如何进行系统调试

1、必须安装 IIS 3.0 、 ASP、 ServerPack3 、 OptionPack4

2 、安装 BackOffice中的 FrontPage Extension Server

3 、安装 InterDev6.0

Page 45: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS
Page 46: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

如何增强客户端的交互性两种方案:1、客户端采取 Java Applet 插件2 、客户端采取ActiveX 插件

技术特点 Java Applet ActiveX

传输模式 栅格传输 栅格传输

编程语言 Java VB VC

文件大小 <30K >300K

安装方式 第一次访问时,下载到本地并在本地安装注册。每次重新开机后,需要重新下

载。

第一次访问时,下载到本地并在本地安装注册,以后,不需要下载。

完成功能 优 优

开发难度 难度在于熟悉 Java 语言,优点在于 Java

内置了,与 WebServer 的交互 优点在于开发工具比较通用。缺点在于与Web 的交互比较麻烦。

支持平台 跨平台 Windows 系列平台

开发环境 Visual J++ javaCafe Visual C++ Visual Basic

推荐使用 Internet 和 Intranet Internet 和 Intranet

Page 47: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

两种技术方案的比较

技术特点 MapXtreme for NT MapXtreme for Java传输模式 栅格传输 栅格和矢量传输操作平台 Windows NT 跨平台

应用服务器 IIS HAHT IIS HAHT Netdamic

是否要求Plugins 或控件

都可 要求

图形质量 优 中

GIS 功能支持栅格图像、缓冲区、目标编辑、图层控制、专题分

支持栅格图像、缓冲区、目标编辑、图层控制、专题分析(区域专题图)

数据库 ODBC、多种 RDBMS 支持 JDBC

地图数据传输量

<20K/次

矢量传输根据地图大小而定 一般 4M 栅格传输<20K/次

用户数量 不限 不限

开发环境VBScript, Javascript, Java,

InterDev VBScript, Javascript, Java,InterDev

推荐使用 服务器基于 NT 平台Internet/Intranet

服务器基于 UNIX 平台 Internet/Intranet

Page 48: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

成功案例…

Page 49: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

电子商务电子商务

Page 50: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

企业智能业务企业智能业务

Page 51: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS
Page 52: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS
Page 53: MapXtreme  高级教程 ————利用 MapXtreme 构建企业级的 WebGIS

Just the beginning ...