《佛山禅城慢性病预防监测系统》项目研发阶段性总结
作者:张金荣
开发工具与关键技术:开发工具:SuperMapIdesktop,Iserver,VS(ASP.NET)MVC框架,SQL数据库;
关键技术:地图制作,地图发布服务,切图,地图空间分析,地图几何分析,交通分析, 循环语句,SuperMap for Javascript, 数据服务, Web前端等;
完成模块功能:地图服务
一、地图前期处理(先安装好SuperMaoIdesktop)
1、在SuperMapIdesktop 中先新建工作空间,然后新建数据源,数据集,导入预先准备好数据集,如图(1);
图(1)
2、新建面数据集,把导入的数据集添加到面图层里,设置比例尺,范围,图层风格,坐标系;根据需要制作专题图,如图(2);
图(2)
3、根据项目需要构建二位网络分析图或者其他分析图,如图(3);
图(3)
二、地图发布服务(解压一份Iserver 的数据包,打开路径<\supermap_iserver_8.1.1a_win32_zip\bin>,可以看到有个startup的Windows批处理文件这是开启iserver服务,还有一个shutdown是停止iserver服务的控件,单击文件便可以启动服务或关闭服务),如下图;
启动成功时如果最后两行出现start 和 starting 则启动成功了,如下图;当你要停止服务时一定要在bin文件夹下点击shutdown Windown 批处文件,然后等待窗体自动关闭
启动服务成功接下来就是在浏览器中输入:http://localhost:8090/iserver/ 便可以进入iserver 服务;端口默认是8090,如果端口被占用,当然你也可以在<supermap_iserver_8.1.1a_win32_zip\conf> 下的server 文件通过文本编辑进行修改,如图(4)所示
服务访问成功时会跳到主页面,里面有示范程序,服务管理等等许多功能,如图五;
我们需要把自己SuperMapIdesktop 制作好的地图上传到服务,就需要在服务管理注册iserver 的用户名、密码,登录服务;然后就可以进入服务管理首页;接下来我们就在服务管理中创建服务,把自己的工作空间的地图添加到服务,并根据服务勾选服务类型;如图(5)
分布式切图可以使我们比例尺比较小的地图在加载时更加流畅
一、项目功能实现(连接地图服务);
1、先引用SuperMap Javascript 的插件到页面,然后创建承载地图的div容器,再通过js代码对地图进行初始化配置;
图1 首页
1、地图量算:地图量算包括测量距离,测量面积,最佳路径查询首页
图1-1 测量距离
点击图1 首页“综合显示” 导航栏的测量距离描绘两个或多个点完成时双击显示距离结果如图1-1 所示,
图1-2 测量面积
点击图1中的导航菜单栏的测量距离,便可以在地图中描绘几何图形,然后双击结束绘面,显示面积结果如图1-2
图1-3 最佳路径分析
点击图1 的导航菜单栏中综合显示菜单下的最佳路径分析,在容限度范围内描绘两个或多个点,当你绘点结束时双击停止绘点并显示最佳路径线图层,点击线路可以弹出导航信息如图1-3;
注意:最佳路径分析前提要在SuperMapIdesktop 中创建号二维网络分析,如图(3);
2、 查询分析:查询分析包括区域定位查询,图层管理器,周边设施分析
图2-1 定位
点击导航菜单栏中的定位弹出搜索定位模态框,输入模糊条件查询设施,点击结果列表的定位,定位到地图的具体位置并显示设施信息,如图2-1
图2-2 周边分析
点击顶部导航栏的周边分析弹出周边分析窗体,输入范围(半径),勾选设施,选择事件点,然后点击查询按钮就会显示事件点的周边信息如图2-2;
二、经典代码:
var point_x=0; var point_y=0;
function drawCompletedPath(drawGeometryArgs) {//最佳路径站点绘点完成事件
var point = drawGeometryArgs.feature.geometry,//获取根据绘点完成传过来的几何参数的结果
///当双击时候自动结束绘制并自动最佳路径分析(判断本次绘点坐标与上次的是否一致,一致则为【双击】事件,,或者点击地图外亦执行“双击事件”,否则反之)
if ((pointmex == 0 && pongintmey == 0) || (pointmex != point.x && pongintmey != point.y)) {
pointmex = point.x;
pongintmey = point.y;//获取的几何对象坐标
}else{
}
评:本段代码引用师兄的,经典之处:我们在地图操作一些功能时,比如说绘点,我们想结束绘点时,可以通过上面这个方法,理论上并不是双击事件,而是绘点时如果我们重复绘一个点时是没有意义的,所以把点添加到图层时判断当次的点坐标与上一次是否相同,不同则添加到图层,相同则结束绘点;
三、开发总结
- [ ]
- 本次接触GIS到开发时间并不长,所以在项目开发实践过程中比较艰难,当然是相对而言,也有很快就入门的。没接触GIS系统之前也曾看师兄演示过相关项目,第一映像就是哇,太牛了。最近接触了才知道没有想象中的那么难。这次做的是用asp.net
MVC框架做的,开发工具有SuperMapIdesktop,VS2015,GIS项目包括主要四个方面的联系:SuperMapIdesk地图的构建、发布到服务(iserver),控制器向服务获信息,控制器向数据库获取业务信息。
SuperMapIdesktop是国产的一款是插件式桌面GIS应用与开发平台,具备二三维一体化的数据处理、制图和分析等功能,支持访问在线地图数据服务,支持分享数据、资源、模板等到云端,支持.NET环境的插件式扩展开发,可快速定制行业应用系统。总的来说这对我们制图有很大的方便。形象化的地图,易懂的操作让我们制图时能更积极;
因为地图服务跟数据库的关系还不熟悉,一些地图的业务处理功能还不能做出来,不过多实践也能突破的。参考了一些师兄的代码,我觉的敲代码不能死敲,要学会变通,灵活运用;当然自己有好的想法并且努力去实现想到的功能也是也步很大的提升;我们要尽量做的学以致用,巩固以前的知识,研究新的的技术。