计算机地图综合制图实验报告,(完整版)实验报告-4地图图形绘制

《(完整版)实验报告-4地图图形绘制》由会员分享,可在线阅读,更多相关《(完整版)实验报告-4地图图形绘制(14页珍藏版)》请在人人文库网上搜索。

1、本word文档可编辑可修改南京 工程学院实验报告课程名称地理信息系统实验项目名称 图形绘制实验实验学生班级实验学生姓名多媒体 111梁同辉学号 202110124同组学生姓名实验时间实验地点无信息楼 A213实验成绩评定指导教师签字年月日关注我 实时更新 最新资料一、实验目 的和要求1理解地图叠加层 的概念并使用。包括:从数据库动态获取地图 的点,线,面数据并将数据传到页面中。将这些点组织成 marker,polyline,polygon,要动态设置样式。2上机调试之前必须携带已经编写完毕 的程序源代码,实验过程中主要是进行调试。3上机时间不足以完成实验项目 的同学利用课外时间做完所有项目。4。

2、根据所选实验内容完成实验报告。二、实验主要仪器和设备计算机,操作系统 Windows7,Visual Studio 2018集成开发环境,BaiduMap API三、实验方法与步骤(需求分析、算法设计思路、流程图等)1.设计思路a.b.c.d.e.编写 HTML文件引入 Baidu Map API,实例并显示地图创建数据库表,插入覆盖物 的坐标数据添加后台代码,操作数据库,获取数据库 的数据对数据库数据进行处理,格式化为一个字符串,存入Session中,以提供给前台使用f.根据 Session中 的数据,添加对应 的覆盖物到地图上2.开发步骤:打开 Visual Studio 2018 ,创建。

3、一个 Web应用程序 的 工程,并添加一个 Web窗体,如下图(图一)所示:a.图一:添加 Web窗体b.在 HTML中,引入 Baidu Map API,添加 div块,设置页面 的样式,实例化地图对象,代码如下:body, html,#allmap width: 100%;height: 100%;overflow:hidden;margin:0;font-family:#allmapheight: 600px;微软雅黑 ;var map = new BMap.Map(allmap);var point = new BMap.Point(118.886575, 31.927937);map。

4、.centerAndZoom(point, 15);c.创建数据库 OverlayDB)(图二),添加 Overlays和 Position表(图三),插入覆盖物 的坐标数据,如下图所示:图二:创建 OverlayDB数据库图三:添加 Overlays表和 Position表d.编写 MapOverlayDB.aspx.cs后台代码,在 Page_Load函数中,连接数据库,获取数据库 的数据,代码如下:/获取连接数据库 的字符串string connectionString = WebConfigurationManager.ConnectionStringsConnectionString。

5、.ConnectionString;/创建数据库连接SqlConnection connection = new SqlConnection(connectionString);/判断数据库库 的状态if (connection.State = ConnectionState.Closed |connection.State = ConnectionState.Broken)/打开数据库connection.Open();/创建命令对象SqlCommand cmd = new SqlCommand();cmd.Connection = connection;/执行数据查询 的 SQL语句cmd。

6、.CommandText = select longitude, latitude fromPosTable;/查询数据SqlDataAdapter sda = new SqlDataAdapter(cmd);/创建数据集对象DataSet ds = new DataSet();/使用数据适配器查到 的数据结果,填充数据集对象sda.Fill(ds);/获取数据集中 的第一张数据表DataTable dt = ds.Tables0;e.对数据库数据进行处理,格式化为一个字符串,存入Session中,以提供给前台使用 ,代码如下:/字符串清空string posMsg = ;bool isFir。

7、st = true;string number = ;/遍历数据表,将数据存入到 posMsg字符串中for (int i = 0; i 0)posMsg = posMsg.Substring(0, posMsg.Length - 1);posMsg += );number = markerData.RowsiNO.ToString();posMsg += markerData.Rowsilongitude + ,+ markerData.Rowsilatitude + |;if(posMsg.Length 0) /判断字符串中是否存有数据/将字符串中 的最后一个逗号截掉posMsg = po。

8、sMsg.Substring(0, posMsg.Length - 1);/将获取 的数据存入 Session中,便于前台 的使用Session.Add(keyName, posMsg);connection.Close(); /关闭数据口连接f.根据 Session中 的数据,添加对应 的覆盖物到地图上,关键代码如下:var markerPos = ;if (markerPos.length 0)addMarkers(markerPos); /添加 Marker覆盖物var polylinePos = ;if (polylinePos.length 0)addPoly(polylinePos。

9、, polyline); /var polygonPos = ;if (polygonPos.length 0)添加 polyline覆盖物addPoly(polygonPos, polygon); /添加 polygon覆盖物/添加覆盖物函数function addMarkers(positions) var posList = positions.split();/ 获得坐标值for (var i = 0; i body, html,#allmap width: 100%;height: 100%;overflow:hidden;margin:0;font-family:#allmaphe。

10、ight: 600px;微软雅黑 ;图形绘制实验 var map = new BMap.Map(allmap);var point = new BMap.Point(118.886575, 31.927937);map.centerAndZoom(point, 17);map.enableScrollWheelZoom(true);/获取 Session中 的数据var markerPos = ;如果数据不为空,调用添加 marker 的函数/if (markerPos.length 0)addMarkers(markerPos);var polylinePos= ;/如果数据不为空,调用添加。

11、 polyline 的函数if (polylinePos.length 0)addPoly(polylinePos,“polyline”);/获取 Session中 的数据var polygonPos = ;/如果数据不为空,调用添加 polygon 的函数if (polygonPos .length 0)addPoly(polygonPos,“polygon” );/定义添加 marker 的函数function addMarks(positions) var posList = positions.split();/获得坐标值for (var i = 0; i 0)/符号” )”将每个折线。

12、,多边形点集分开var polys = positions.split();for (var len=0; len/MapDatabase.aspx.cs文件(后台)protected void Page_Load(object sender, EventArgs e)/查询 marker覆盖物 的信息string sqlString = SELECT p.pid as NO, longitude, latitudeFROM Overlays o, Position p WHERE o.typename=markerand p.pid = o.id;SelectDB(sqlString, ma。

13、rkerPos);/查询 polyline覆盖物 的信息sqlString = SELECT p.pid as NO, longitude, latitude FROMOverlays o, Position p WHERE o.typename=polyline andp.pid = o.id;SelectDB(sqlString, polylinePos);/查询 polygon覆盖物 的信息sqlString = SELECT p.pid as NO, longitude, latitude FROMOverlays o, Position p WHERE o.typename=poly。

14、gon andp.pid = o.id;SelectDB(sqlString, polygonPos);/查询数据库数据,并将数据格式化,存入 Session中private void SelectDB(string sqlString, string keyName)/获取连接数据库 的字符串string connectionString = WebConfigurationManager.ConnectionStringsConnectionString.ConnectionString;/创建数据库连接SqlConnection connection = new SqlConnectio。

15、n(connectionString);/判断数据库库 的状态if (connection.State = ConnectionState.Closed |connection.State = ConnectionState.Broken)/打开数据库connection.Open();/创建命令对象SqlCommand cmd = new SqlCommand();cmd.Connection = connection;/执行数据查询 的 SQL语句cmd.CommandText = select longitude, latitude from PosTable;/查询数据SqlDataA。

16、dapter sda = new SqlDataAdapter(cmd);/创建数据集对象DataSet ds = new DataSet();/使用数据适配器查到 的数据结果,填充数据集对象sda.Fill(ds);/获取数据集中 的第一张数据表DataTable dt = ds.Tables0;/字符串清空string posMsg = ;bool isFirst = true;string number = ;/遍历数据表,将数据存入到 posMsg字符串中for (int i = 0; i 0)posMsg = posMsg.Substring(0, posMsg.Length - 1。

17、);posMsg += );number = markerData.RowsiNO.ToString();posMsg += markerData.Rowsilongitude + ,+ markerData.Rowsilatitude + |;if(posMsg.Length 0) /判断字符串中是否存有数据/将字符串中 的最后一个逗号截掉posMsg = posMsg.Substring(0, posMsg.Length - 1);/将获取 的数据存入 Session中,便于前台 的使用Session.Add(keyName, posMsg);connection.Close(); /关闭。

18、数据口连接/Web.config配置文件五、实验结果及分析(计算过程与结果、数据曲线、图表等)实验结果:图四:显示绘制图形 的地图结果分析:创建地图实例,引入 BaiduMap API 的链接,通过后台 的页面加载,对数据库进行查询,将数据库中 的地物坐标查询出来,将数据库中 的数据格式化,存入到 Session中,实现与前台 的数据通信,根据Session中 的数据,动态 的创建覆盖物,并显示到地图上,图四为显示 marker,polyline 和 polygon 的覆盖物地图,结果正确。六、实验总结与思考通过本次地图图形绘制实验,我掌握了 ASP.NET,ADO.NET以及BaiduMap API 的结和使用 的基本方法,使网页实现根据数据库中 的数据,动态 的添加覆盖物,这时,只需要管理后台 的数据,据可以添加相应 的覆盖,方便了对覆盖物 的管理。教师评语。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值