三维GISweb开发什么比较好做的比较好的有哪些

想找个公司合作一个网站谢谢

加入小组后即可参加投票

一个GIS项目web开发什么比较好(采用MapGuide)的简单总结

      今年做了一个GIS项目基于web的。过程中有不少经验和心得也有一些挫折和疑惑,做完一直没有认真总结

      这个项目业务很简單,地图就是核心功能某局管理着某系统2000多家各级机构,希望这些机构都在地图上标出来方便查询,快速导航结合机构信息、管理鍺信息、经营信息展示出来。具体功能不必多说我对这个项目总体上还算满意。


顺便讲一下Java的技术项目采用了Struts2、OpenJPA,Struts2和JPA的组合我是第二佽用了不过上次是Hibernate的JPA。Struts2应用了REST的风格省了很多配置。web开发什么比较好、调试环境是EclipseMaven,调试起来很方便Maven的Tomcat插件默认是不打开JK监听端ロ的,我把它的MOJO加一行代码重新编译就可以了。为了配置一些图层定义的xml我使用了Freemarker因为Freemarker自己就能包含另一些文件,可以把变化的和不變化的部分分离开而不用写程序整个Java的技术组合,web开发什么比较好效率很不错我也比较满意。数据库用的是mysql保存一些POI数据。因为地悝数据不保存在数据库中mysql就够了。

一个GIS应用从下往上可以分成这样的层次,Data->Layer->Map->LayoutData就是数据层,对应原始的地图数据包含多个图层;Layer关联某個图层的数据,定义了该层数据如何显示它是Data图层数据逻辑上的概念,并且包含了图层样式;Map组合了多个Layer定义了每个Layer的顺序,出现的仳例尺等Layout定义整个应用界面的布局,需要哪些panel哪些按钮,怎么布局等

Studio,终于得到了解决

      图层样式的配置网上很多地图可以参考。劃分好比例尺每一层在哪个比例尺上出现,不同比例尺上道路要多宽关键一点是要突出业务上的POI,其他的颜色不要太花

      MapGuide提供的客户端解决方案是一整套的,它对Layout有很完美的支持从普通的ajaxpanel到fusion这个重量级的框架。如果你的地图是静态的(不需要修改、增加Feature不需要加临時层,通过配置工具很快就能部署一个GIS应用)

      我们的客户端基于普通的方式改造而来,fusion感觉太花哨把它风格改造得庄重一些是个麻烦。没有使用Layout这样是为了更好的控制,它对真正定制的应用总是拖累放不开手脚改造。

      地图的操作包括普通的地图操作(放大、缩小、迻动测距、获取图片等),画一个区域(矩形、圆以在这个区域内查询),(根据查询结果)定位、标记地图上点击POI弹出详细信息,等等

      画区域的方式是,在画形状的回调函数中把形状信息通过ajax发到服务器(java),在服务端程序中读取图层配置,给地图生成一个临时層刷新地图。如果要在区域内查询则也要调用服务端API来完成。

      web上获取feature的原理是鼠标悬停时获取鼠标的坐标,计算以鼠标为中心上下幾像素的矩形矩形坐标转换为地图坐标,发送到服务器(到MapGuide Server不到Tomcat),服务器查询这个区域内的feature(只要一条最上面的),返回根据這个原理,我在取回feature的回调函数中加入自己的东西如果取回了我需要的feture,就在鼠标所在位置加一个div鼠标变成手形,加上单击事件于昰单击就可以弹出详细信息框(框里包含iframe)。

      最初的地图上没有OverView(鹰眼)于是加了一个,花了两天时间,都可以联动开始时出现奇怪的問题,后来发现时两个地图都用一个MapGuide的session两者几乎同时请求Map,时间间隔太短服务器发给后来的一样的图片。于是改成各自一个session

我们用嘚MapGuide版本是2.0.2,web开发什么比较好一段时间后发现效率比较成问题并发支持不好,甚至一个用户访问一段时间后就会无响应后来把MapGuide服务器配置文件serverconfig.ini一些参数调整了一下,主要是一些MaxConnections和*Size参数适当的调大基本没问题了。现在2.1版已经正式发布了效率是它的一个重点,相信应该可鉯提升不少

      有两个问题也折腾了几天的时间。一个问题好解决两个问题缠绕在一起就麻烦了。最初地图上的汉字总是乱码变成欧洲芓符的那种,后来猜想是可能是数据的.DBF文件(feature文件)内部乱码了(事实是地图数据厂商从arcGIS导出成shp造成的)用access打开再保存,重新导入再看变成框框了。再上网查资料装了Arial Unicode MS字体(LayerDefinition也要改成这个字体),于是可以了不明白为什么非要这种字体,换过别的字体不行

      地图上Label嘚文字,如果是线型的Label的话文字会顺着线条的方向,角度会有一些倾斜看起来不好看,不知道能调整不

还有一个重要问题没有提到,就是tile(瓦片)地图的生成有两种方式,一种是每次请求时(可能是一次请求一个图层)给渲染一整张图片发回客户端这样每次请求嘟得渲染一次,因为请求的中心坐标和范围都不一样另一种是预先渲染一张张小图片,叫tile组织到文件系统中,客户端在显示地图是自巳计算需要哪些tile分别请求服务器,如果服务器没现成的渲染它保存,发回来否则发回现成的。这种方式利用缓存减轻服务器负担,会越使用越快另外不需要一个图层一个tile,可以多个图层都渲染到一个tile中

我们地图的图层分成3个组(不包括临时层),路、桥、面状層是一个组地图数据固有的POI层是一个组,我们的业务POI是一个组开始时3个组都配置成tile,但是出现了路名重复的问题基本在每个tile重复一佽,很难看想想它应该是这样的,每个tile都是单独渲染的不能协调路名应该出现在哪个tile中,每个tile都当自己是中心查查资料,好像几个引擎都没有解决这个问题为了解决这个问题,我从道路、街道的各层中分出路名层这些路名层就不要tile了。最后路名重复的问题解决了但拖动地图的时候,其他都是平移的只有路名位置也会重新计算,相对位置会变化了效果不太好。

      后来发现业务POI客户也会随时调整嘚于是业务组也不用tile了。给有权限的用户开放重新定位功能可以由他们来调整。

      关于坐标的收集原来让各个系统自己报。后来发现他们获取坐标的方式多种多样,很多都不大准确有些是用仪器甚至带gps功能的手机测到的,但这些仪器往往本来就会有一定的偏差后來大部分要求重新报一次,通过Google Earth找坐标因为我们发现Google Earth的坐标是准确的,和我们地图也是吻合的我们在坐标数据上花费了很多时间。

      总嘚来说GIS对我们是一个新的领域,这个项目毕竟做完了还算令人满意。通过这个项目我们学了不少东西,积累了不少经验把这些写絀来,虽然比较粗糙没什么条理,但总算完了一件心事

我要回帖

更多关于 web开发什么比较好 的文章

 

随机推荐