您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 冶金工业 > MapXtremeJava教程
目录MapXtremeforJava开发教程1...................................................................................................2专题一:怎样在应用中创建地图...........................................................................................2专题二:怎样操作地图---控制地图显示...............................................................................5专题三:怎样进行空间特征值的搜索...................................................................................7专题四:怎样对空间特征值对象编辑.................................................................................14专题五:怎样进行专题分析.................................................................................................15专题六:怎样进行数据绑定---将数据库中的属性数据与地图进行动态连结.................24专题七:怎样实现GPS监控...............................................................................................26专题八:怎样调用空间数据库中的地图.............................................................................28专题九:怎样快速响应多并发用户远程数据库数据请求.................................................32专题十:怎样将影像图与矢量图进行叠加.........................................................................34MapXtremeforJava开发教程1概述MapXtremeforJava(以下简称MXTJ)是基于J2EE技术、服务器端的为创建Web地图服务应用的市场上第一个100%Java跨平台解决方案,使用它可实现瘦客户机/服务器、中等客户机/服务器、胖客户机/服务器三种WebGIS模式。MXTJ主要由MapXtremeServlet、MapJ、Renderers、DataProviders四部分构成。MapXtremeServlet是系统的地图服务供给者,它提供如下服务:1提供栅格地图数据服务,2提供矢量地图数据服务,3提供图元文件数据服务(例:tab表里的属性信息);MapJ位于Mapxtreme客户端应用程序开发包API的最顶端作用有二:1管理地图集的各种状态(例:地图中心位置、地图视野、地图坐标系等),2通过向MapxtremeServlet服务实例转发客户请求获得Servlet响应的数据和图片;Renderer用来生成返回客户端地图数据的组件,有四种:LocalRenderer、MapXtremeImageRenderer、.Intra-ServletContainerRenderer、CompositeRenderer。使用MapXtremeImageRender可以在远程产生地图图像,包含MapJ的应用程序和远程一个MapXtremeServlet实例通讯,产生地图图像;LocalRender将地图输出为Java2DGraphics2D对象,所有的Render在客户端产生,也即所谓地图的矢量传输方式;使用IntraServletContainerRenderer不需socketconnection,从而MapXtremeSevlet将地图直接传回给客户端;CompositeRenderer将地图分为动态与静态图层,当需要更新地图时,可只更新动态图层,而静态图层仅生成一次。DataProvider是Layer(图层)对象的内部对象,它不是直接由用户创建的,但是它的描述是对图层的定义。要描述DataProvider通过如下接口:TableDescHelper–描述数据;DataProviderHelper–定义数据的源;ataProviderRef–描述获取数据的方式。专题一:怎样在应用中创建地图专题一:怎样在应用中创建地图?创建Map步骤:n创建MapJ对象n加载地图数据n设置地图尺寸n生成图片以下分别描述:1.初始化地图对象执行:myMap=newMapJ();2.加载地图数据可以打开GeoSet(*.gst)或MapDefinition(*.mdf)文件加载地图数据。MapXtreme没有默认的地图数据,所以必须人工加载地图数据。加载GeoSetmyMap.loadGeoset(geosetName,dataDir,servletURL);其中:geosetName:geoset的完整文件名(包括路径);dataDir:geoset中引用的tab地图文件的位置;servletURL:mapxtremeservlet的路径,如果MapJ使用LocalDataProviderRef,servletURL可以为NULL。示例:myMap.loadGeoset(c:\\mapxtreme\\maps\\world.gst,c:\\mapxtreme\\maps,);加载MapDefinition可以加载保存在文件中的地图定义(*.mdf)或者数据库中的地图定义记录(record)。首先要创建MapDefContainer,有两种情况:地图定义在文件中:MapDefContainermdc=newFileMapDefContainer(dir)示例:MapDefContainermdc=newFileMapDefContainer(c:\\mapxtreme\maps)地图定义在数据库中:MapDefContainermdc=newJDBCMapDefContainer(driver,url,user,password)其中,driver,url,user,password都是数据库连接的参数。下面的示例是使用OracleSpatialMapRefContainer,地图定义保存在数据库的表中:OraSoMapDefContainermdc=newOraSoMapDefContainer(oracle.jdbc.driver.OracleDriver,jdbc:oracle:thin:@machinename:1521:dbSid,username,password,tableName,Name,Map_Definition);然后加载地图定义:myMap.loadMapDefinition(mapDefContainer,name)name是地图定义的名字,如:myMap.loadMapDefinition(mdc,Asia);3.设置图象尺寸输出地图图像前需要设置地图尺寸,设置方法:MapJ.setDeviceBounds().,单位是象素。示例:myMap.setDeviceBounds(newDoubleRect(0,0,800,600));4.生成图片生成图片需要一下几步:n指定MapXtremeServletStringmapxtremeServletUrl=创建ImageRequestComposerImageRequestComposerimageRC=ImageRequestComposer.create(myMap,256,Color.blue,image/gif);表示图片是256色背景为蓝色的GIF图。n创建ImageRenderMapXtremeImageRendererrenderer=newMapXtremeImageRenderer(mapxtremeServletURL);n生成图片返回图像的唯一办法就是使用Render对象。Renderer.render(imageRC);Renderer.toFile(comp.gif);此外,还可以使用toStream,toImage方法将图像返回。如果使用MapJ直接获取地图数据并生成图片,则使用LocalRender而不是MapXtremeImageRender。MapXtremeImageRender和LocalRender将在后面专门章节介绍。专题二:怎样操作地图---控制地图显示专题二:怎样操作地图---控制地图显示?看到地图图像后,你可能需要查看地图的其他部分,看看整体或地图细节。下面介绍一些控制地图显示的方法。1.设置地图视野(Zoom)Zoom值是地图的横向跨度,单位有地图的距离单位决定。设置zoom可以放大或缩小地图。当地图加载时,zoom就被设定了。改变zoom的方法是setZoom()。示例://Assumingthatthecurrentdistanceunitsarekilometers,thiscommandwillsetthe//mapzoomto500kilometers.myMap.setZoom(500);2.设置地图中心有时会将地图中心定位在找到的目标上或将中心定位在鼠标所点击的图像上某一点。这时需要设置地图中心。设置地图中心的方法是setCenter()。下面的示例实现了将地图中心定位在鼠标点击的某一点。示例://创建屏幕坐标的Point对象screenpoint=newDoublePoint(event.getX(),event.getY());//将屏幕坐标转换为地理坐标worldpoint=myMap.transformScreenToNumeric(screenpoint);//设置地图中心myMap.setCenter(worldpoint);3.设置地图边界地图边界不是图象的边界,而是地图坐标系的边界,所有的地图操作都在这个边界内进行。设置地图边界有两种方法:方法1:给定边界的左下角和右上角,设定边界。DoubleRectbounds=newDoubleRect(-180,-90,180,90);myMap.setBounds(bounds);方法2:给定地图的中心,宽度和高度,设定边界。DoubleRectbounds=newDoubleRect(newDoublePoint(0,0),360,180);myMap.setBounds(bounds);4.设置地图投影坐标数据存储在server\mapinfow.prj文件中,包含上百种投影。可以按照如下方法,使用PRJ文件设置投影:StringcsProj=newString(\AzimuthalEquidistant(NorthPole)\,5,62,7,0,90,90);CoordSysts=CoordSys.createFromPRJ(csProj);myMap.setDisplayCoordSys(ts);也可以用createFromMapBasic读取MapBasic字符串来设置投影。5.设置地图距离单位示例:distUnit=LinearUnit.kilometer;myMap.setDistanceUnits(distUnit);6.添
本文标题:MapXtremeJava教程
链接地址:https://www.777doc.com/doc-2881776 .html