(八)WebGIS中栅格图层的设计】的更多相关文章

文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.    前言 我们在上一章里了解到WebGIS中栅格图层的本质——地图图片.而从之前的第二章到第五章,我们详细的介绍了地图图片的获取原理和方法.所以在设计栅格图层前,我们已经知道了栅格图层中数据是如何获得的,剩下的便是怎样将这个过程用一种符合面向对象的设计原则来进行实现. 2.栅格数据获得的流程 这里我再次将栅格数据获得的流程描述一遍: 首先,得到屏幕范围内的地图…
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.前言 在前几章中我们已经了解了什么是矢量查询.屏幕坐标与地理坐标之前的转换以及要素的设计,有了这些知识,这一章里我们终于可以进行矢量图层的设计了. 在Catalog里创建一个FeatureClass时,我们能够选择是创建点图层或者线图层或者面图层等.所谓点图层,即该图层中的要素只能是点,其他几个图层顾名思义,也是如此.那么在WebGIS中,我们同样也可以按照Arc…
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.何为栅格数据,何为矢量数据? 在GIS中,对于数据格式的分类,我们一般会将其分为栅格数据和矢量数据两种类型.栅格数据是将空间看做离散的像元,由二维数组或者其他数据组织方式来进行表达.矢量数据恰恰相反,它将空间看成是连续的,用要素(点.线.面)来进行表达. 我们把栅格数据和矢量数据的特点归纳如下: (1)栅格数据是离散的,矢量数据是连续的.所以栅格数据多用二维数组(…
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 当地图中增加了很多元素后,对不同的元素需要进行一定的控制,最简单的控制就是能对元素有选择的进行清空删除.在本节中,还将介绍WebGIS中另外一个常用功能,即地图定位功能.具体描述便是:当输入一个坐标点后,能够将地图缩放到该点处.下面我便就以上两个功能展开此章节的内容. 2.清空功能 2.1设计思路 根据功能点,我们可以将清空分为如下几个情形: a.清空某个或…
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.前言 这一章我们将详细讲解WebGIS工具栏中另一个基础工具——平移工具(Pan).在介绍命令模式时,我们已经知道了此工具为Tool型的. 这个工具主要有如下两个功能: A.当切换到此工具上时,按下鼠标不放,移动鼠标时可以拖动地图. B.当切换到此工具上时,点击鼠标(鼠标不做平移),可以使地图平移,以点击处为中心. 2.设计 2.1 原理 我们已经知道,WebGI…
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 在上一章中,我们给出了整个工具栏设计的核心,使用命令模式,并设计了具体工具类所继承的基类——Command类.从这一章开始我们便正式进入了具体工具类的设计和实现. 放大和缩小工具是最基础的工具之一,其操作分为三种: a.点击地图,进行放大缩小 b.拉框,进行放大缩小 c.滚轮调控放大缩小 针对这三种操作方式,我们进行了不同的代码逻辑设计. 2.分析 a.滚轮…
GP工具IDW执行后,生成的栅格图层是黑白二色,需要手动进行分级渲染,似乎不是所有栅格图层都可以进行分级渲染,注意异常处理.注意ARCMAP中是有颜色的,无需自己处理. IRasterClassifyColorRampRenderer pClassRender = new RasterClassifyColorRampRendererClass(); IRasterRenderer pRasterRender = pClassRender as IRasterRenderer; pRasterR…
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景介绍 一般WebGIS项目中,前端展示数据的流程基本是先做数据入库.服务发布.然后前端调用展示.假设用户没有基本的GIS背景,需要将本地的excel或CSV等文件快速在地图上进行展示,此需求该如何解决? 目前市场上针对解决这种需求的产品已陆续出现,比如mapbox的studio,esri的portal,超图的地图慧以及由超图原项目经理离职后创办的地图无忧等产品.…
从底层谈WebGIS 原理设计与实现(六):WebGIS中地图瓦片在Canvas上的拼接显示原理 作者:naaoveGI…    文章来源:naaoveGIS    点击数:1145    更新时间:2014-9-14 摘要:在之前的五个章节中,我们在第一章节里介绍了WebGIS的基本框架和技术,第二章节里介绍了什么是瓦片行列号以及计算它的原因,第三章节里介绍了如何通过地理范围计算出这个范围内瓦片的行列号,第四和第五章节里介绍了在得到瓦片行列号后如何获得离线和在线地图的URL,这个章节里,我们将…
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 在上一章里讲解地图平移功能的实现时,我在最后提出了两个问题: A.在地图平移后,矢量图层的canvas的XY都发生了变化,此时根据地理坐标转换为屏幕坐标公式得出的屏幕坐标,在canvas上能将要素正确显示吗? B.矢量图层canvas的原点坐标XY有需要还原成初始的(0,0)的时候吗? 对这两个问题我给出的答案是:不能和需要. 在这一章里,我们将详细讲解得出…
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.前言 在之前的五个章节中,我们在第一章节里介绍了WebGIS的基本框架和技术,第二章节里介绍了什么是瓦片行列号以及计算它的原因,第三章节里介绍了如何通过地理范围计算出这个范围内瓦片的行列号,第四和第五章节里介绍了在得到瓦片行列号后如何获得离线和在线地图的URL,这个章节里,我们将介绍在通过URL得到瓦片后,如何将其显示在浏览器相对应的地方,拼接出整块地图. 2.左…
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 在GIS的桌面工具中,比如arcgis desktop或者Supermap desktop等工具,均会有图层控制栏工具,即LayerController.通过勾选图层控制栏中的图层选择框,可以实现图层是否展示等,并且还可以设置该图层的相关属性. 详细需求如下: a.图层列表展示 b.通过图层列表控制图层要素的展示 c.支持设置图层某些属性 2.设计 a.图层…
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.前言 在GIS中元素一般分为点元素,线元素,面元素以及symbol元素(特殊的点元素)等.与此对应,图层可以分为点图层,线图层,面图层以及标注图层等.从第9章到第10章,我给大家讲解了什么是矢量数据.矢量数据的来源.矢量数据的构造.以及矢量数据中的地理坐标与屏幕坐标之间的转换.在了解了这些概念和算法以及流程后,这一章我们将开始讲解设计出一个矢量图层前的最后一步,设…
从底层谈WebGIS 原理设计与实现(五):WebGIS中通过行列号来换算出多种瓦片的URL 之在线地图 作者:naaoveGI…    文章来源:naaoveGIS    点击数:2063    更新时间:2014-9-13 摘要:从底层谈WebGIS 原理设计与实现(五):WebGIS中通过行列号来换算出多种瓦片的URL 之在线地图.这篇文章里,我主要针对OGC标准中的WMS.WMTS以及ArcGIS的在线地图服务来进行解析. 1.前言 这篇文章里,我主要针对OGC标准中的WMS.WMTS以…
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 我们在使用arcmap时,经常会用到被称为I查询的工具.具体功能便是,当激活I查询功能后,鼠标点击到某个要素上时,界面上会弹出一个对话框用来显示该要素的各属性信息.该功能截图如下: 2.原理 在WebGIS中设计和实现该功能之前,我们有必要对该功能的原理做一个了解. 在OGC的WMS标准中规定了一个接口:GetFeatureInfo.该接口的功能描述便是:根…
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 在真实项目中,往往GIS服务数据源被其他多个信息中心或者第三方公司所掌控,当需要快速搭建一套能够对所有GIS数据,根据权限不同.需求不同.而进行展示的系统.为了避免在代码层面上过多的定制化开发,我们需要能提出一种可以整合管理多源矢量服务并进行权限控制的架构. 目前商业GIS软件中,Esri公司给出了其Portal产品,可以对arcgis Server发布的各矢…
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 从这一章节开始我们将正式进入WebGIS的工具栏中相关功能的设计和实现.我们以ArcMap中的工具栏中的基本工具为模板,将其中的放大.缩小.平移.全图.清除.定位.I查询.距离量测.面积量测在WebGIS中进行实现. 这里,我先跟大家说一个基本的概念.我们一般将工具分为Command和Tool.所谓command是指该工具被调用后,生效一次即终止.而Tool…
在工作中需要使用栅格地图,以往都是由研发人员来创建,今天偶然发现Mapinfo中有GridMaker这样一个工具,结合网络搜索自己试了一下,居然做成功了,这里把步骤记录下来,方便以后查看. 1.首先在测定需要创建栅格的城市经纬度范围 这个比较简单,分别将鼠标放在地图区域的左下角和右上角,然后通过Mapinfo左下角的CursorLocation得到两个点的经纬度,即为整个区域的经纬度范围. 2.Mapinfo中添加GridMaker工具 在Mapinfo中Tools->Tool Manager中…
从底层谈WebGIS 原理设计与实现(四):WebGIS中通过行列号来换算出多种瓦片的URL 之离线地图 作者:naaoveGI…    文章来源:naaoveGIS    点击数:1759    更新时间:2014-9-13 摘要:从底层谈WebGIS 原理设计与实现(四):WebGIS中通过行列号来换算出多种瓦片的URL 之离线地图.我在这里将地图分为离线地图和在线地图.所谓离线地图,即保存在本地而没有发布的地图.在线地图即发布与网上,可以通过浏览器访问的地图. 1.前言 在前面我花了两个篇…
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 等值面是气象.环保等相关项目上常用到的效果展示.在传统的CS项目中,可以利用一些二次开发工具进行开发,具有科研性质的项目上还会利用一些工具进行复杂建模出图然后流程化.这里,我们撇去复杂的建模各因子,谈谈通用的等值面如何在WebGIS中进行展示. 首先,我介绍下几种可以在前端进行等值面渲染的方案: a.利用arcgis的model进行建模,设置好输入项,插值工具…
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.前言 地图本身是拥有坐标的,一般可以大致分为平面坐标和经纬度坐标,在这里我们统称为地理坐标,比如北京,(115.9°E ,39.6°N)和(506340,304400)均是其地理坐标,只是表示形式不同而已. 我们在上一章讲解了矢量图层中数据的来源,最后提出了一个还未解决的问题,即当我们获得了矢量数据后,如何在屏幕中将这些数据里的地理(Geometry)坐标转换为屏…
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.前言 在第七章里我们知道了WebGIS中要素的本质是UIComponent,而矢量图层的本质是包含了n(n>=0)个UIComponent的Canvas.我们在UIComponent的graphics中,根据矢量数据画出矢量的形状(shape),并且将矢量数据的属性(attributes)赋予该UIComponent. 在接下来进行要素和矢量图层的设计前,我们有必…
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.前言 这篇文章里,我主要针对OGC标准中的WMS.WMTS以及ArcGIS的在线地图服务来进行解析. 写之前,我先来给大家提一下OGC是什么.OGC的全名是Open GIS Consortium,中文名是开放地理空间信息联盟,它是一个是非盈利.志愿的国际标准化组织.在空间数据互操作领域,基于公共接口访问模式的互操作方法是一种基本的操作方法.通过国际标准化组织(IS…
​ ​编辑 一.计算面积 ( 可以帮我们计算小班面积 )添加 AREA 字段,然后右键点击字段列,然后点击 CALCULATE VALUES; ---> 选择 ADVANCED -->把下面的代码输入,然后在最下面 = 处写 OUTPUT 点击 OK 就 OK 了. Dim Output as doubleDim pArea as IareaSet pArea = [shape]Output = pArea.area 二.计算长度 ( 可以帮我们计算林带长度 )同上添加 LENGTH 字段,然…
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 等值线是GIS制图中常见的功能,一般有两种思路:一种是先进行插值生成等值面栅格图,然后将等值面提取成等值线:另一种是进行插值后,直接再根据算法进行插值点连接生成一条尽量闭合以及平滑的曲线. 在进行插值中,有很多算法可以选择,各种算法中也会有不同的参数需要调试,并且更具实际情况,比如地理环境因素等进行微调,最后建模.这里我们要讨论的是忽略一切外在因素,只根据坐标…
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 鹰眼功能是WebGIS中的一种常见功能,利用一些开源的框架实现起来非常方便.当然,按照博主从底层谈WebGIS这套系列的风格,在这里还是跟大家一起探讨探讨不借助第三方框架开发鹰眼的简单实现思路. 2.鹰眼功能分析 3.实现思路设计 3.1主图平移时与鹰眼图的联动 a.主图进行平移时,在平移完成后抛出地图平移事件,该事件中包含真实平移地理长度(GeoPanX,G…
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.    前言 实际项目中我们经常会遇到这样一种场景:地图底图可能是互联网地图(百度.高德.天地图)等等,同时我们自己又有某个区域单独的一套POI数据,我们需要将互联网地图中这个区域的原有POI数据进行罩着然后只显示我们自己的POI数据. 针对这样的需求,我们首先想到的是能否我们只使用不包含注记的底图瓦片,然后再叠加上我们的POI数据.事实上,实际需求中还需要考虑一点…
protected override void OnClick() { // // TODO: Sample code showing how to access button host // ArcMap.Application.CurrentTool = null; IMap pMap = ArcMap.Document.FocusMap; ; i < pMap.LayerCount; i++) { ILayer pLayer = pMap.get_Layer(i); if (pLayer…
一.加载栅格图像 加载栅格图像的详细步骤在下面代码里: //添加栅格数据按钮槽函数 void MainWindow::addRasterlayers() { //步骤1:打开文件选择对话框 QString filename=QFileDialog::getOpenFileName(this,tr("打开栅格数据"),"","remote sensing image(*.tif *.tiff);;image(*.jpg *.jpeg *.png *.bmp)…
在编写使用栅格图层的代码时,常常要获取栅格图层的像素值(PixelValue).如果想获取某一点的像素值,可以使用IRaster2中的getPixelValue方法.但如果想要获得的是图层中的某一块甚至整个图层,那么用getPixelValue方法就太过缓慢了. 如果利用IRasterCursor.IPixelBlock3接口,从内存入手,速度就会加快很多.说一下我对他们的理解.首先应用IRaster2中的CreateCursorEx方法实现一个IRasterCursor接口.根据传入的参数,系…