版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MapXtremeforJava开发 专题一:怎样在应用中创建地 专题二:怎样操作地图---控制地图显 专题三:怎样进行空间特征值的搜 专题四:怎样对空间特征值对象编 专题五:怎样进行专题分 专题七:怎样实现GPS专题八:怎样调用空间数据库中的地 专题九:怎样快速响应多并发用户数据库数据请 专题十:怎样将影像图与矢量图进行叠 MapXtremeforJava开发三种WebGIS模式。MXTJMapXtremeServlet、MapJ、Renderers、DataProvidersMapXtremeServlet1提供栅格地图数据服务,2提供矢量地图数据服务,3提供图元文件数据服务(例:tab);MapJMapxtremeAPI:1(例:地et响应的数据和;Renderer用来生成返回客户端地图数据的组件,有四种:LocalRenderer、MapXtremeImageRenderer、.Intra-ServletContainer positeRenderer。使用MapXtremeImageRender可以在产生地图图像,包含MapJ的应用程序和一个MapXtremeServlet实例通讯,产生地图图像;LocalRender将地图输出为Java2DGraphics2D对象,所有的Render在客户端产生,也即所谓地图的矢量传输方式;使用IntraServletContainerRenderer不需socketconnection,从而MapXtremeSevlet将地图直接传回给客户端;CompositeRenderer将地图分为动态与静态图层,当需要更新地图时,可只更新动态图层,DataProviderLayer(图层)对象的内部对象,它不是直接由用户创建的,但是它的描述是对图层的DataProvider:TableDescHelper–描述数据;DataProviderHelper–定义数据的源;ataProviderRef–描述获取数据的方式。Map步骤: 创建MapJ 设图尺 生成 myMap=new GeoSet(*.gst)MapDefinition(*.mdf)文件加载地图数据。MapXtrememyMap.loadGeoset(geosetName,dataDir,geosetName:geoset(包括路径dataDir:geoset中的tab地图文件的位置 URLNULL 加载MapMapDefContainer,有两种情况:MapDefContainermdc=newMapDefContainermdc=newMapDefContainermdc=newJDBCMapDefContainer(driver,url,use其中,driver,url,user,passwordOracleSpatialMapRefContainer,地图定义保存在数据库的表中:OraSoMapDefContainermdc=
newOraSoMapDefContainer("oracle.jdbc.driver.OracleDriver","jdbc:oracle:thin:@machinename:"username","password","tableName","Name",myMap.loadMapDefinition(mapDefContainer,name)name是地图定义的名字,如:myMap.loadMapDefinition(mdc, myMap.setDeviceBounds(newDoubleRect(0,0,800, 生成生成需要一下几步 StringmapxtremeServletUrl= 创 poser poser.create(myMap,256,表示是256色背景为蓝色的GIF图 MapXtremeImageRendererrenderernew 生成toStream,toImage如果使用MapJ直接获取地图数据并生成,则使用LocalRender而不是MapXtremeImageRender。MapXtremeImageRenderLocalRender专题二:怎样操作地图---设图视野zoom//Assumingthatthecurrentdistanceunitsarekilometers,thiscommandwillsetthe//mapzoomto500kilometers.设图中设图中心的方法是setCenter()//Pointscreenpoint=new//worldpoint=//设图中设图边DoubleRectbounds=newDoubleRect(-180,-90,180,90);DoubleRectbounds=newDoubleRect(newDoublePoint(0,0),360,180);设图投坐标数据在server\mapinfow.prj文件中,包含上百种投影。PRJStringcsProj=newString("\"AzimuthalEquidistant(NorthPole)\",5,62,7,0,0,CoordSysts=CoordSys.createFromPRJ(csProj);也可以用createFromMapBasicMapBasic字符串来设置投影distUnit=LinearUnit.kilometer;DataProviderSearch有时可能做一些搜索,如搜索配送中心周围的零售店。MapXtreme提供了丰富的搜索功能。搜索的结果可以转换为被选中状态,从而显示在地图上。Search是Layer对象的方法,有:Vector//AssumemyLayerisaLayerTableInfomyTableInfo=myLayer.getTableInfo();VectorcolumnNames=newVector();intcolumnCount=myTableInfo.getColumnCount();Stringcol;for(intj=0;j<columnCount;{col=myTableInfo.getColumnName(j);}tion,PrimaryKey,rasterDataQueryParams类来过滤这些信息,以提高程序的性QueryParamsqp=newQueryParams(bGeometry,bRendition,bPrimarykey,bLabelPoint,bRasterInfo,bLabelRendition,SearchType.entire);//findallFeaturesentirelywithinagivensearchregion,returnasingleAttributecolumn//andnoRenditioninformation.Vectorcols=newFeaturesearchFeature =mapj.getFeatureFactory().createRegion(points,rend,attribs,nulQueryParamsqueryParams=newQueryParams(true,false,true,true,true,true,SearchTFeatureSetfs=layer.searchWithinRegion(cols,searchFeature.getGeometry(), Search //AssumefsisaFeatureSetobject.AssumecolumnNamesisavectorofthecolumns//tobereturned.AssumeqpistheQueryParamsobject.AssumemyLayerisaLayer//object.{fs=}catch(exception{}//AssumefsisaFeatureSetobject.AssumecolumnNamesisavectorofthedesired//columns tobereturned.AssumeqpistheQueryParamsobject.AssumemyLayer//isaLayerobject.DoublePointdblPt=newDoublePoint(-73.889444,42.765555);doubledRadius=10.03;{fs=myLayer.searchWithinRadius(columnNames,dblPt,dRadius,LinearUnit.}catch(exception{}==>privateboolean{//AssumefsisaFeatureSetobject.AssumecolumnNamesisavectorofthecolumns//tobe returned.AssumeqpistheQueryParamsobject.AssumemyLayerisaLayer//object.AssumevGeomisaVectorGeometryofTYPE_REGION{fs}catch(Exception{returnfalse;}return}==>//AssumefsisaFeatureSetobject.AssumecolumnNamesisavectorofthecolumns//tobereturned.AssumeqpistheQueryParamsobject.AssumemyLayerisaLayer//object.DoubleRectdRect=newDoubleRect(-74.092662,42.765555,-73.668898,42.856420);{fs}catch(exception{}//AssumefsisaFeatureSetobject.AssumecolumnNamesisavectorofthecolumns//tobereturned.AssumeqpistheQueryParamsobject.AssumemyLayerisaLayer//object.DoublePointdp=newDoublePoint(12.3456,-67.890);{fs=}catch(exception{}==>//AssumefsisaFeatureSetobject.AssumecolumnNamesisavectorofthecolumnsto//be returned.AssumeqpistheQueryParamsobject.AssumemyLayerisaLayer//object.Assumeattristheattributetosearchagainst.AssumecolNameisthecolumnto//searchagainst.{fs}catch(Exception{return}privatebooleanlayerSearchByPrimaryKey(){//AssumefsisaFeatureSetobject.AssumecolumnNamesisavectorofthe//columnstobereturned.AssumeqpistheQueryParamsobject.AssumemyLayer//isaLayerobject.AssumecolNameisthecolumntosearchagainst.Assumepkisa//PrimaryKeyfromaprevioussearch.PrimaryKey[]arraypk=newPrimaryKey[1];arraypk[0]=pk;{fs=}catch(Exception{returnfalse;}return}}eatureFactoryFeaturesearchFeatureSet。AnnotationAnnotationtMapJ,AnnotatinFeaturePrimaryKeyAnnotationFeatureFeatureFactoryFeatureMapJNumericCoordSys。JDBCMapXtremeJavarollback。addFeatureSet,FeaturesFeatureFeatureFeaturePrimaryKeyOracle8iSpatial,IUSwithSpatialWareDataBlade和DB2withSpatialwareExtender1)Oracle8iPrimaryKey1n;FeaturePrimaryKey,FeaturePrimaryKey2)IUSwithSpatialWareDataBladeIUSSW_MEMBERPrimaryKey;PrimaryKey1到n;使用addFeature和receFeature时都不用指定PrimaryKey,即使指定了,也被忽略addFeature时不会返回PrimaryKey。3)DB2withSpatialExtenderPrimaryKeyExtenderPrimaryKey1n;使用addFeature和receFeature时都不用指定PrimaryKey,即使指定了,也被忽略;PrimaryKey,PrimaryaddFeaturePrimaryKey投影进行,TableDescHelperFeatureRendition或LabelRendition的字段,MapXtremeMapXtremeRendtionRenditionType.mapxtremeRenditionType.mapbasicFeature(addFeature)时,如果Rendition字段的类型是RenditionType.mapbasic,保存时该字段将是null若使用receFeature,MapXtremeJava RangedTheme:按数据将地图分组调整显 RangedThemeIndividualvalueThemeAddThemeBeanRenditionOverrideTheme,//AssumemyLayerisaLayer//AssumemyRendisaRenditionOverrideThememyOTheme=newOverrideTheme(myRend,"MyTheme");//AssumelayerasaLayerobjectVectorv=newVector();DoublePointdp=newDoublePoint(x,y);FeatureSetfs=null;//Selectafeatureatthespecifiedlocationfs=layer.searchAtPoint(v,dp,null);//CreateaSelectionThemeselTheme=new//CreateaSelectionobject,andaddtheselectedfeaturesSelectionsel=newSelection();//AssigntheSelectionobjecttotheSelectionTheme//AssignthedisystyleoftheSelectionThemeRenditionrend=RenditionImpl.getDefaultRendition();rend.setvalue(Rendition.FILL,Color.red);//AddtheSelectionThemetothelayer'slistofthemes显示。MapXtremeLayerRenditionyellow=RenditionImpl.getDefaultRendition();Renditionred=RenditionImpl.getDefaultRendition();lyr=m_map.getLayers().getLayer("States.tab");StringcolName="Pop_1990";ColumnStatisticscolStats//SetnumberofbreaksfordataintnumBreaks=5;//Computethedistributionofdatawith5breaks//EqualVectorrBreaks= //Setuparedandayellowrenditionand//spreadthecolorsyellow.setvalue(Rendition.FILL,Color.yellow);yellow.setvalue(Rendition.STROKE_WIDTH,2);red.setvalue(Rendition.FILL,Color.red);red.setvalue(Rendition.STROKE_WIDTH,4);Vectorrends=LinearRenditionSpreader.spread(numBreaks,yellow,//CreateThemeRangedThemerTheme=newRangedTheme(colName,rBreaks,rends,"StatesbyPop_1990//GetThemeListclassobjectThemeList//AddthemetoLayersthemeListfetchColumnStatisticsColumnStatisticsBucketerColumnStatisticsisticsDISTRIBUTION_TYPE_EQUAL_COUNT(等个数DISTRIBUTION_TYPE_EQUAL_RANGES(等范围DISTRIBUTION_TYPE_STANDARD_DEVIATION(标准差):以中间值为中心将范围上标准差分布ditionVector。RangedThemeRendition,//SetuptheVectorrBreaks=newVector();rBreaks.addElement(newAttribute(1));rBreaks.addElement(newAttribute(5));rBreaks.addElement(new//SetuptherenditionsVectorrends=newVector();//CreatearangedthemeRangedThemerTheme=newRangedTheme(themeCol,rBreaks,rends,"Statesby//Assignthemetolayersaselement1//Drawthe//Create poser poser.create(myMap,256,//CreateaMapXtremeImageRendererrenderer=newMapXtremeImageRenderer("//Renderthemap//Renderthemaptothefile//getareferencetothelayerwewillbeapplyingthemetolyr=lyrs.add(dpr,ttdh,"Territories");//createanewthemeIndividualvalueThemeiValThm=newIndividualvalueTheme("CoverageTerritory","SalesCoverageBreakdown");//createaRendition//assigncolortorenditionaddnrend.setvalue(Rendition.FILL,iValThm.add(newAttribute("SouthWest"),//assigncolortorenditionaddattributerend.setvalue(Rendition.FILL,iValThm.add(newAttribute("SouthEast"),//assigncolortorenditionaddattributerend.setvalue(Rendition.FILL,iValThm.add(newAttribute("Central"),//Addthethemetolayersthemelist//StorecolumnnameandtypeinHashtableht=newHashtable();//Createnewlegendpassingthemeandhashtable.ThesetThemeTitle.IndividualvalueThemeLegendiValThmLeg;iValThmLeg=newIndividualvalueThemeLegend(iValThm,ht);iValThmLeg.setTitle("CovergeTerritorylegend");//GenerategifimagefromlegendiValThmLeg.toFile("c:\\temp\\terrLeg.gif","image/gif");theme.setLegend。ThemerendsasaRenditioncolNameasarBreaksasabreakPointsRangedThemerTheme=newRangedTheme(colName,rBreaks,rends,"Statesby//CreateadefaultRangedThemeLegendrThmLeg//OR,Createathemelegendinstanceusingthemeandsetting//AddthemesettingstohashtableHashtableht=newHashtable();RangedThemeLegendrThmLeg=newRangedThemeLegend(rTheme,ht);//SetlegendtitlerThmLeg.setTitle("RangedThemelegend");//sendlegendtoimagefilerThmLeg.toFile("c:\\temp\\rangeLeg.gif","image/gif");LegendContainerBeanVisualMapJBean如果专题图改变,LegendContainerBeannfo.legend.CatographicLegend//AssumemapJisalreadyLayerlandmarks=//createthelegendwithtitle"StateLandmarks"CartographicLegendlegend=newCartographicLegend("Staandmarks");//PerformasearchAll()onthelayertogetits//FeatureSet-needtomakesurewefetchthecolumn//wewanttolabelwithinthelegendVectorcolumns=newVector();FeatureSetfs=landmarks.searchAll(columns,//addtheFeatureSettothelegend,andspecifythat//wanttolabeleachfeature'srenditionwiththevalueinthe"Name"columnlegend.addFeatureSet(fs,"Name");//alwaysdisposeofFeatureSetonceyou'redonewithAddThemeBeanVisualMapJAddThemeBeansetVisualMapJ(VisualMapJ)来指定。BeanDataBindingDataProviderHelper,DataBindingDataProviderHelperLayersTABDataProviderHelpertabDPH=newJDBCDataProviderHelperjdbcDPH=newJDBCDataProviderHelper("jdbc:oracle:thin:@localhost:1521:sid",user,pass,"oracle.jdbc.driver.OracleDriver");DataBindingDataProviderHelperdbDPH=newDataBindingDataProviderHelper(tabDPH,jdbcDPStringtabCols=StringjdbcCols=TABTableDescHelpertabDesc=newJDBCTableDescHelperjdbcDesc=newJDBCTableDescHelper("STATES",null,DataBindingTableDescHelperdbDesc=newDataBindingTableDescHelper(tabDesc,jdbcDesc,tabCols,jdbcCols);DataProviderRefdpRef=newMapXtremeDataProviderRef(dbDPH,mapXtremeURL);Layerlyr=mapj.getLayers().add(dpRef,dbDesc,"DataBinding");sumcountaverage求平均 um求最大MapXtremeCompositeRender。通过它可以仅仅将某些需要改变的图层重画刷创建一个临时图层(Annotaion)CompositeRender车辆象GPS之类的应用,可以将地图绘制一次,每次GPS数据更新时,只重画车辆的位置CompositeRender640x4802.7tryThemapjisoftypeMapJandhasloadedaThereqisoftypeTheresisoftypeThedpisoftype//Addannotationlayer-thislayerwillconsistofoneimagesymbolto"animAnnotationTableDescHelperatdh=newAnnotationTableDescHelper("Animation_Layer");AnnotationDataProviderHelperadph=newAnnotationDataProviderHelper();LocalDataProviderRefldpr=newLocalDataProviderRef(adph);//AddtheannotationLayeranimate_layer=mapj.getLayers().insert(ldpr,atdh,0,//CreatetherenditionfortheRenditionr=RenditionImpl.getDefaultRendition();r.setvalue(Rendition.SYMBOL_URL,"file:///C:/images/car.gif");//CreatetheFeatureFactoryff=//AnarraycontainingasingleintAttributeAttribute[]aAIntAttribute={newAttribute(33)};//createanewPrimaryKeyananintegerPrimaryKeypkey=newPrimaryKey(aAIntAttribute);Featuref=ff.createPoint(dp,r,aAIntAttribute,pkey);PrimaryKeypk=animate_layer.addFeature(f);//Create poser poser.create(mapj,256,CreatethecompositerendererRendertheimageStreamtheimagebacktotheCompositeRenderercompositeRenderer=newCompositeRenderer("pxtreme40/servlet/mapxtreme";,0);ServletOutputStreamsos=res.getOutputStream();//Setthisattributetofalsesothatthebottomimageisnotrenderednextti}catch(Exceptione)//Takeappropriateerrorhandling}在地图中添加空间地图图层首先要定义LayerLayerDataProvider。LayerDataProvider,它不是直接由用户创建的,但是它的描述确实定义一DataProviderTableDescHelper–DataProviderHelper–DataProviderRef–MapXtreme提供一系列DataProvider,可以如下类型的数据MapInfotabformatOracle8iwithSpatialInformixUniversalServerSpatialWareDB2SpatialWareJDBCcompatibletablescontaininglongitudeandlatitudeGeoTIFFandMIGridShapefilesDataBindingAnnotationMapXtreme不同数据的示意图 s如:MapInfoTable需要使用TABTableDescHelper,需要table名字参数。对于Oracle8i数据OraSoTableDescHelper,需要表名或SQL 的数据源,源就是.tab。Oracle8iOraSoDataProviderHelper Provider由MapXtremeServlet创建。所有数据的组件可以放在中间层MapXtremeServlet处,这样客户端就不必都安装JDBC驱动。这是一个典型的三次应用:应用,数据处理逻辑,数据。注意:何时数据rgetTableInfo,searchrenderLayers.addLayers.insertDataProviderHelpersDataSourceMapInfoTablesOracle8iwithSpatialOptionInformixUniversalServerSpatialWareDataBladeDB2SpatialWareExtenderJDBCcompatibletablescontaininglongitudeandlatitudecolumnsAnnotationLayersGeoTIFFRasterShapefilesDataBinding1ImageIO**Oracle8iOracle8iDataProvider//specifytheurltotheMapXtremeservletwhichremoyconnectsustothemap//engineStringmapXtremeURL= //CreatetheRemoteDataproviderneededtoaccessthe//Usingpooledconnections mended)//UsingDatabasespecificOraSoDataProviderHelperoraSoDPHelper=newOraSoDataProviderHelper("databasename",1000,"DBsid","tester","tester",DriverType.thin);//CreateaStringarraywiththename(s)ofthecolumn(s)touseasauniquekeyforrecordsintheTableNameString[]idColumn=//NowcreateaTableDesc//ThiscodeusestheConstructorrequiredwhenusingaOraSoTableDescHelperoraSoTDHelper=newOraSoTableDescHelper("STATES",false,idColumn,"S_GEOMETRY",null,RenditionType.none,null,RenditionType.none,CoordSys.longLatWGS84,//ThiscodeusestheConstructorrequiredwhenusingaQueryOraSoTableDescHelperoraSoTDHelper=newOraSoTableDescHelper("SelectS_MEMBER,S_GEOMETRY,POP_1990FromSTATESWhereSTATE='NY'",idColumn,"S_GEOMETRY",null,RenditionType.none,null,RenditionType.none,CoordSys.longLatWGS84,2);//CreatetheRemoteDataproviderneededtoaccesstheMapXtremeDataProviderRefmxtDPRef=newMapXtremeDataProviderRef(oraSoDPHelper,mapXtre//assignittoMapJ-notegetLayers()m_myMap.getLayers().add(mxtDP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年风光互补发电系统对生态环境的影响评估
- 2026年跨学科知识对设计师能力新要求
- 2026年酒店客人死亡事件应急预案
- 2026年医院布病防治管理工作制度
- 2026浙江温州市苍南县建设发展集团有限公司招聘调整岗位要求笔试历年参考题库附带答案详解
- 2026江西吉安市吉安县城控人力资源服务有限公司招募见习生1人笔试历年参考题库附带答案详解
- 2026江苏苏州市常熟市沙家浜镇下属集体公司招聘岗位调整及延长笔试历年参考题库附带答案详解
- 2026春季中原证券股份有限公司招聘22人笔试历年参考题库附带答案详解
- 2026内蒙古民航机场集团锡林浩特分公司招聘11人笔试历年参考题库附带答案详解
- 本溪市重点中学2026届高三5月月考(化学试题理)试卷含解析
- 民法典与生活同行宣传手册
- GB/T 15822.3-2024无损检测磁粉检测第3部分:设备
- DB50T 231-2024 城市桥梁养护技术规程
- 医共体信息化项目建设方案(技术方案)
- DB11T 500-2024 城市道路城市家具设置与管理规范
- 耳鼻喉科普小知识问答
- 高血压饮食指导课件
- GB/T 3477-2023船用风雨密单扇钢质门
- 汽车维修售后业务合作协议书
- 2017年福建省中考英语试题及答案
- 中国诗词大会飞花令大全(通用9篇)
评论
0/150
提交评论