基于webgis的全国粮食产量系统开发介绍

17 篇文章 0 订阅
8 篇文章 0 订阅

 经过深思熟虑,地图框架采用arcgis api for js,后台为C#,数据库为SQL server

ArcGIS API for Javascript 是由美国 Esri 公司推出,跟随ArcGIS 9.3同时发布的,是Esri基于dojo框架和REST风格实现的一套编程接口(目前最新版本为3.3,dojo1.8)。通过ArcGIS API for Javascript可以对ArcGIS for Server进行访问,并且将ArcGIS for Server提供的地图资源和其它资源(ArcGIS Online)嵌入到Web应用中。

1.2 ArcGIS API for Javascript主要特点

1、空间数据展示:加载地图服务,影像服务,WMS等。
2、客户端 Mashup:将来自不同服务器、不同类型的服务在客户端聚合后统一呈现给客户。
3、图形绘制:在地图上交互式地绘制查询范围或地理标记等。
4、符号渲染:提供对图形进行符号化,要素图层生成专题图和服务器端渲染等功能。
5、查询检索:基于属性和空间位置进行查询,支持关联查询,对查询结果的排序、分组以及对属性数据的统计。
6、地理处理:调用 ArcGIS for Server 发布的地理处理服务(GP 服务),执行空间分析、地理处理或其他需要服务器端执行的工具、模型、运算等。
7、网络分析:计算最优路径、临近设施和服务区域。
8、在线编辑:通过要素服务编辑要素的图形、属性、附件,进行编辑追踪。
9、时态感知:展示、查询具有时间特征的地图服务或影像服务数据。 10、影像处理:提供动态镶嵌、实时栅格函数处理等功能。
11、地图输出:提供多种地图图片导出和服务器端打印等功能。

 该系统涉及的功能为:登录,注册,图层切换,空间检索,路线分析,专题图生成,人员管理。

 系统地址:http://124.221.114.164:8002/index.html 

地图核心渲染代码如下:

  var map, routeTask, routeParams, routes = [];
                var stopSymbol, barrierSymbol, routeSymbols;
                var mapOnClick_addStops_connect, mapOnClick_addBarriers_connect;
                map = top.Freedom.Map.mapControl;
                resultLayerDY = new ArcGISDynamicMapServiceLayer("http://localhost:6080/arcgis/rest/services/shandonggaosu/MapServer", {

                });
                //http://localhost:6080/arcgis/rest/services/shandonggaosu/NAServer/%E8%B7%AF%E5%BE%84
                routeTask = new RouteTask("http://localhost:6080/arcgis/rest/services/shandonggaosu/NAServer/%E8%B7%AF%E5%BE%84");

                routeParams = new RouteParameters();
                routeParams.stops = new FeatureSet();
                routeParams.barriers = new FeatureSet();
                routeParams.outSpatialReference = { "wkid": 4326 };

                routeTask.on("solve-complete", showRoute);
                routeTask.on("error", errorHandler);

                stopSymbol = new SimpleMarkerSymbol().setStyle(SimpleMarkerSymbol.STYLE_CROSS).setSize(15);
                stopSymbol.outline.setWidth(3);

                barrierSymbol = new SimpleMarkerSymbol().setStyle(SimpleMarkerSymbol.STYLE_X).setSize(10);
                barrierSymbol.outline.setWidth(3).setColor(new Color([255, 0, 0]));

                routeSymbols = {
                    "Route 1": new SimpleLineSymbol().setColor(new Color([0, 0, 255, 0.5])).setWidth(5),
                    "Route 2": new SimpleLineSymbol().setColor(new Color([0, 255, 0, 0.5])).setWidth(5),
                    "Route 3": new SimpleLineSymbol().setColor(new Color([255, 0, 255, 0.5])).setWidth(5)
                };

                //button click event listeners can't be added directly in HTML when the code is wrapped in an AMD callback
                on(dom.byId("addStopsBtn"), "click", addStops);
                on(dom.byId("clearStopsBtn"), "click", clearStops);
                //on(dom.byId("addBarriersBtn"), "click", addBarriers);
                //on(dom.byId("clearBarriersBtn"), "click", clearBarriers);
                on(dom.byId("solveRoutesBtn"), "click", solveRoute);
                on(dom.byId("clearRoutesBtn"), "click", clearRoutes);
求最短路径的算法有很多,比如说Floyd、Bellman-Ford、SPFA算法等,今天先介绍一下在最短路径问题中十分经典的Dijkstra(迪克斯特拉)算法。

迪杰斯特拉算法(Dijkstra)是由荷兰计算机科学家狄克斯特拉于1959年提出的,因此又叫狄克斯特拉算法。是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径问题。迪杰斯特拉算法主要特点是从起始点开始,采用贪心算法策略,每次遍历到始点距离最近且未访问过的顶点的邻接节点,直到扩展到终点为止 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_29857473

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值