GIS 图层展示的艺术:从原理到实践

一、GIS 图层展示概述

GIS 图层展示在各个领域都有着至关重要的作用。在城市规划中,通过不同图层的叠加,如地形图层、土地利用图层、交通网络图层等,可以帮助规划师全面了解城市的空间布局,从而制定出更加科学合理的规划方案。据统计,在一些大型城市的规划项目中,GIS 图层展示能够提高规划效率约 30%。

在环境管理方面,GIS 图层可以展示空气质量监测点分布、水质监测区域、污染源位置等信息。例如,利用 GIS 技术对某地区的环境进行监测管理时,通过将不同的环境数据以图层形式展示,能够快速准确地分析出环境问题的分布和影响范围,为制定环境保护政策提供有力支持。

在农业领域,GIS 图层展示可以用于分析土壤质量、农作物分布、灌溉设施布局等。有研究表明,采用 GIS 图层展示技术进行农业管理,能够提高农作物产量约 15%至 20%。

总之,GIS 图层展示在不同领域中都发挥着重要作用,它能够将复杂的地理信息以直观、可视化的方式呈现出来,为决策制定和问题解决提供有力支持。

二、常见 GIS 库中的图层展示方法

(一)Leaflet 库的示例

Leaflet 是一个用于创建交互式地图的轻量级 JavaScript 库。在 GIS 中,要实现图层的显示与隐藏,可以使用 Leaflet 库。以下是使用 Leaflet 库的示例代码

// 创建地图

var map = L.map('map');

Leaflet 中的图层主要分为 Tile Layers(瓦片图层)和 Feature Layers(要素图层)两大类。

Tile Layers 是指瓦片图层,通过将地图数据切割成多个小块进行管理。它通常用于展示地图的基础背景,具有快速渲染、高效缓存和可伸缩性等功能。例如 OpenStreetMap 提供的地图瓦片就是基础瓦片图层,开发者还可以上传自己的地图瓦片到服务器形成自定义瓦片图层,或者使用动态瓦片服务实时生成瓦片。

Feature Layers 则将地图元素以矢量的形式展示,能够提供更好的交互性,并且数据是可缩放和可编辑的。它在动态地图、地图标注、数据可视化和地理分析等场景中有广泛应用。

(二)ArcGIS API for JavaScript 的应用

在 ArcGIS API for JavaScript 中,可以通过多种方式进行图层展示和控制。

情形 1:只做图层的显示/隐藏控制。在 ArcMap 中做好地图,发布到 ArcGIS Server 中,然后使用 ArcGISDynamicMapServiceLayer 的方式添加到 map 对象中,再使用 setVisibleLayers(ids, doNotRefresh?)方法根据子图层的编号对子图层进行显示或者隐藏控制。

情形 2:做显示/隐藏控制的同时需要对单个图层进行透明度控制。每个图层都发布为一个服务,然后手动控制每个图层的显示与否。

(三)JAVA GIS 的控制方式

JAVA GIS 控制图层显示方法如下:

import com.esri.adf.web.ags.data.AGSMapFunctionality;

import com.esri.adf.web.data.GISResource;

import com.esri.adf.web.data.WebContext;

import com.esri.arcgisws.LayerDescription;

import com.esri.arcgisws.MapDescription;

//...

// 取得 gis 资源

GISResource rec = (GISResource)context.getResources().get("ags0");

// 取得 AGSMapFunctionality 函数

AGSMapFunctionality ags = (AGSMapFunctionality)rec.getFunctionality("map");

MapDescription des = ags.getMapDescription();

LayerDescription[] layers = ags.getLayerDescriptions();

for(int i = 0; i < layers.length; i++) {

    LayerDescription layer = layers[i];

    // 控制显示标注

    layer.setShowLabels(false);

    // 控制是否显示

    layer.setVisible(false);

}

context.refresh();

// 控制图层中要素的显示

AGSMapResource rec = (AGSMapResource) context.getResources().get("ags0");

MapServerPort mapserverport = rec.getMapServer();

MapServerInfo mapinfo = mapserverport.getServerInfo(mapserverport.getDefaultMapName());

MapLayerInfo[] layerInfos = mapinfo.getMapLayerInfos();

AGSMapFunctionality ags = (AGSMapFunctionality) rec.getFunctionality("map");

LayerDescription[] laydescs = ags.getLayerDescriptions();

for(int i = 0; i < layerInfos.length; i++) {

    if (layerInfos[i].getName().equalsIgnoreCase("图层名称")) {

        // 设置查询要素条件

        laydescs[i].setDefinitionExpression("SITENAME='666'");

    }

}

通过上述代码,可以实现对 JAVA GIS 图层的显示控制以及要素条件的设置。

三、在 GIS 上进行图层展示的步骤

(一)加载数据

在 GIS 中,加载矢量和栅格数据是实现图层展示的基础步骤。对于矢量数据,可以通过多种方式进行加载。例如,在 ArcGIS 中,可以使用“添加数据”按钮选择矢量数据集,如 Shapefile 文件等。矢量数据的显示特点在于可以进行多种样式的变换,包括颜色、轮廓、符号等的自定义设置。

对于栅格数据,同样可以通过类似的方式加载。在 ArcGIS 中,加载栅格数据和加载矢量数据一样,点击标准工具条上的添加数据按钮选择栅格数据集。一般栅格数据集为多波段数据,可选择单波段数据加载,也可选择多波段数据加载。栅格数据的显示主要以之前文中所说的色带为主,不同的波段组合可以呈现出不同的图像效果。

(二)矢量数据变换

矢量数据的样式、颜色、轮廓等变换操作可以通过多种工具实现。在 ArcGIS 中,直接点击图层下方的样式,即可跳出选择框,包含了内设的样式、颜色、轮廓、轮廓颜色等设置选项。用户可以自行选择不同的样式,下载其他样式引用。对于点矢量的变换也同样类似操作,自行选择即可。

例如,ArcGIS 空间数据的转换与处理中,对矢量数据的相应操作可以通过 ArcMap 中空间较正工具条和编辑器工具条的若干工具实现。其中,相似变换可以缩放、旋转和平移要素,但不会单独对轴进行缩放,也不会产生任何倾斜,相似变换使变换后的要素保持原有的纵横比。进行相似变换至少需要两个连接。

(三)标注要素

对矢量数据进行标注的步骤如下:首先,右键打开矢量数据的属性表,主要是将属性表的信息展示到数据显示框。然后,找到属性(注意不是属性表是属性),选择好需要标注的字段,设置字体、大小、颜色等。此外,还有一个放置属性的设置,这里的内容留到后续升级部分再学习。确定之后,再次右键打开下拉选择,将标注要素勾选上。如果发现有重复的显示出来,那么再次右键属性然后找到放置属性,移除同名标注即可。

(四)动态图层发布调用

ArcGIS Server 动态图层发布调用包括以下步骤和方法:

共享地图服务:ArcGIS Server 将 GIS 资源以服务的方式发布,能够让更多的人在 Web 上浏览、使用。

添加动态工作空间:选择数据库、Shapefile 文件夹、栅格文件夹或文件地理数据库等,输入相应的路径或连接信息。例如,选择了数据库,则可以指定想要使用的数据库连接并单击导入>浏览。可以选择锁定用户可以访问的数据库版本。

发布服务:发布地图服务后,在 Web 端调用时指定图层关联的数据源以图层符号化等。

Server 端设置:登陆 ArcGIS Server Manager,并打开已发布的地图,添加动态工作空间,并点击 REST URL 链接,验证动态工作空间是否发布以及动态图层是否可以成功发布。

效果展示:根据不同的数据类型(企业级数据库、Shapefile 文件夹、栅格文件夹、文件地理数据库)进行效果展示,包括向动态工作空间新增数据并测试。

服务调用:可以通过本地服务或托管服务进行调用,使用不同的渲染器进行图层渲染,如 SimpleRenderer、ClassBreaksRenderer、UniqueValueRenderer、DotDensityRenderer 和 TemporalRenderer 五种。

故障排查:可能会遇到发布地图服务时提示“无法注册文件夹到 server 上”、动态图层工作空间为企业级数据库新增动态图层验证错误、动态空间栅格图层前端显示配色不正确等问题,需要进行相应的解决方案处理。

四、GIS 各图层展示技巧

(一)隐藏或显示图层

在使用 ArcGISDynamicMapServiceLayer 时,可以通过 setVisibleLayers 函数来实现隐藏或显示图层的操作。具体来说,该函数接受两个参数,第一个参数是一个数组类型的 ids,代表要显示的子图层的 Id;第二个参数是一个可选参数 doNotRefresh,表示是否刷新,默认值为 true。例如:

var layer = new ArcGISDynamicMapServiceLayer(url);

var visible = [0, 1, 2]; // 假设要显示的子图层 Id 为 0、1、2

layer.setVisibleLayers(visible);

通过这种方式,可以灵活地控制图层的显示和隐藏,满足不同场景下的需求。

(二)图层显示和标注

图层显示分类

对于图层显示来说,主要分为矢量和栅格数据两种。矢量数据会存在较多的样式颜色等变换操作,栅格数据显示主要以色带为主。

标注方法

正常标注某一字段值的内容:右键点击【属性】,在【标注】选项卡下勾选【标注此图层中的的要素】,在【文本字符串】栏中选择要标注的字段即可。

更复杂一点的标注:如果要标注的内容包含多个字段,或者需要输入字符,可以采用表达式。点击【表达式】,在输入框中输入相应的代码

多分式标注:重点在于需要换行,并在新行中输入一定长度的横线。可以通过调整表达式中的参数来控制标注的样式。

只标注符合条件的要素:在【方法】栏中选择【定义要素类并且为每个类加不同的标注】,点击【SQL查询】,在弹出的框中输入 SQL 筛选语句,只标注符合条件的要素。

按条件分类标注:新建自定义类,对每个自定义类设置【SQL查询】条件和文本样式,实现按条件分类标注。

用表达式来实现条件分类标注:在表达式中输入相应的代码,实现条件分类标注。

进阶内容

标注表达式的格式化标签:ArcGIS 在标注中有多种格式化标签,用来定义字符的格式,包括文字字体大小、颜色等。例如加粗、下划线、字体、文字大小、字体和文字大小组合、上标、下标等。

带牵引线的标注:带牵引线的标注一般用于引出标注,或者标注坐标点等场景。牵引线是通过字符符号来设置的,系统就自带了这种样式。

在地图视图中固定标注文字的大小:在地图视图中,当我们缩放地图时,标注的文字会随着变化,有时候会造成文字遮挡等问题。将地图比例设置为固定值即可解决问题。

(三)GIS 小技巧

计算面积:添加 AREA 字段,然后右键点击字段列,然后点击 CALCULATE VALUES; ---> 选择 ADVANCED --》把下面的代码输入,然后在最下面 = 处写 OUTPUT 点击 OK 就 OK 了。

Dim Output as double

Dim pArea as Iarea

Set pArea = [shape]

Output = pArea.area

计算长度:同上添加 LENGTH 字段,然后右键点击字段列,然后点击 CALCULATE VALUES; ---> 选择 ADVANCED --》把下面的代码输入,然后在最下面 = 处写 OUTPUT 。点击 OK 就 OK 了。

Dim Output as double

Dim pCurve as ICurve

Set pCurve = [shape]

Output = pCurve.Length

小班升序排列:同上添加小班号字段,然后右键点击字段列,然后点击 CALCULATE VALUES; ---> 选择 ADVANCED --》把下面的代码输入,然后在最下面 = 处写 OUTPUT 。点击 OK 就 OK 了。

Static i as long

Dim Output as string

i=i+1

Output =i

村界切割小班:选择 -> 根据位置选择, 小班 are are crossed by the outline of 村面, 然后选择 -> 设置可选择图层为村面。用追踪工具,任务为切割多边形要素,进行切割。

字段赋值:选择 -> 根据位置选择, 小班 are within 村面。打开属性表显示选中的,选择一整列计算字段值对整个字段赋一个常量或,勾选高级加求变量代码

拓扑检查:ArcCatalog 选要进行拓扑检查的文件夹右键 -> 新建个人 geodatabase-> 新建要素集 -> 导入要素类 -> 新建拓扑(导入要拓扑的图层)。ArcMap 中打开由拓扑规则产生的文件,编辑状态下利用 topology 工具条中给出的错误记录信息进行修改。搜索要修改的错误 -> 右键(平移到)选融合或新建等等。(用 P+ENTER 组合键加快修改速度),修改完后右键图层名 -> 选导出数据。

投影和投影转换:ArcToolbox-> 数据管理 -> 投影和投影转换 -> project,batch project。

合并图层:ArcToolbox-> 数据管理 -> 常规 -> merge。

其他格式文件转 shpfile:ArcToolbox-> 转换工具 -> 到 shpfile。

dxf 批量转 shp:用 ArcCatlog 打开全部选择右键转为 shp。

批量定义投影:ArcToolbox-> 示列 -> batch define coordinate system 9(可以用来批量矫正跑偏的卫片)。

校正:提前可选取捕捉选项校正进行仿射校正。

属性表多项查询:“村” =6 AND(“优势树种” = '150 落叶松 ' OR “优势树种” = '491 榆树 ' OR “优势树种” = '530 杨树 ' OR “优势树种” = '535 柳树 ' )。

数据库挂接:根据两属性库相同字段,相同值连接库文件(新库中只保留与旧库的公共字段,Arcgis 挂接时编辑器一定要打开,挂接完需要导出数据生成成果文件。注意:从 Arcgis 导出 excel 表修改数据时,容易串行,此时只要保留两表中的共字段,然后用以上方法把数据库挂接回去就可以了,挂回去的库会在相同公共字段的地方进行内容替换)。

裁切:利用矩形对栅格数据裁剪:ArcToolbox 中,datamanagement>raster>clip。InputRaster 中选择被裁剪的栅格数据,设定好矩形四个顶点即可。

小班删除和融合:小班内部删除相当于减少面积,外部删除去掉地块。小班内部融合相当于面积不变。

ArcGIS 中影像图配准(校正扫描地图):栅格配准 - 根据地图坐标添加控制点,x = 经度去掉前两位数带号后加 3 个零,y = 纬度后加 3 个零(如 21575 为 575000,5357 为 5357000)。选二次多项式,选择校正,选择校正后的数据类型和名字。

ArcGIS 工程空间参考:第一个加的图层。

字段值显示不同颜色:打开图层后,右键单击图层,properties 里面,symbology,采用 categories 分类,用 unique values,右边的 value field 选取你说的那个“图斑的属性”,添加所有值。

线图层和面图层之间转换:数据管理工具 -> 要素 -> 要素到多边形,多边形到要素。

五、GIS 实现各图层展示的综合方案

(一)综治专业图层制作

图层叠加建设:综治业务专业图层实现了综治业务数据和基础地理图层的叠加展示。数据图层分为基础图层和专业图层,基础图层如水系、道路等公共基础类数据无需单独维护,定期统一更新;专业图层包括与业务应用相关的各类 POI 信息,需个性化标注和维护。业务数据与基础地图数据通过空间位置叠加和业务主键关联进行统一集成和管理维护,业务专用数据库和基础地图数据库松耦合,可单独管理维护,数据更新后能自动关联查询更新。由于采用通用坐标系,基础数据和业务数据叠加自动无缝,可在同一业务应用场景中显示和使用。

地理编码:通过地理编码赋予 9 大类综治业务数据空间属性,建立地图数据库。针对综治业务类型,赋予特定符号标注业务要素。地址编码能智能识别和解析复杂位置相关业务数据,将不可视业务数据转换为空间数据,便于 GIS 系统可视化展示和统计分析。包括根据地址数据精确匹配、插值匹配、名称数据精确匹配、模糊匹配和按照区域匹配等方式。

工程配图:基于 ZTMAPGIS DeskTop 工具集,根据行政地图、矢量地图、大数据分析地图等不同地图展示方式进行不同配色、要素管理,符合业务特色,便于用户查询。

栅格数据处理:基于 ZTMapGIS 开发平台,对影像图等栅格数据进行金字塔分层切图处理,建设栅格数据共享发布服务。该服务是多源空间数据整合处理系统,实现栅格影像数据入库、处理、发布等基本管理功能,以二三维 GIS 核心平台为支撑,构建统一共享平台,支持 OGC 等国际行业标准服务协议,服务于不同业务应用。

(二)综治业务叠加展示

地图叠加展示:针对综治组织、实有人口、特殊人群、社会治安、矛盾纠纷等各类综治业务数据,实现地图叠加展示。用户可自行控制图层展示,结合条件筛选、精确查询等方式实现对各类数据的查询,同时能实现查询结果的定位分布。通过分类浏览、街镇区域浏览等多种浏览方式,结合聚合图、散点图等多种展示形式,在一张地图中直观、易于理解地展示全区所有综治业务信息。

图层动态控制:控制每个图层的显示、选择、标注等。可以打开或关闭任意一个图层,设置图层是否可选,设置每个图层中点、线、面对象的显示样式,如点符号样式、线条样式、粗细、颜色、面的填充样式等,设置每个图层的标注的字体、样式等,实现不同图层的任意叠加显示。

基于业务属性综合查询:用户可以通过多种属性信息进行业务数据查询,多种方式之间可任意组合形成复合查询条件。通过基本属性进行综合查询,用户可以通过综治业务数据的基本属性信息查询,如输入一个或者多个基本属性信息字段的关键字或选择字段分类及范围值进行查询,例如查询实有人口可以通过包括姓名、地址、年龄、证件号、性别、居委、居住性质等查询。

(三)实验中的图层加载与显示控制

不同格式图层的加载

ArcGIS 制作图层:以 ArcGIS 10.2 为例,点图层可通过在 Excel 文档中创建 x,y 两个字段,放入地理坐标点数据,保存后在 ArcMap 中添加 XY 数据进行加载。

实验五图层加载与显示控制:在 VB6 实验环境中,可加载 SHP 图层、SDE 图层、CAD 图层、Coverage 图层和栅格数据。SHP 矢量数据加载分为四个过程,包括定义地理数据连接对象、查找地理数据集、建立矢量图层对象并赋值、将图层添加到地图控件中刷新地图。栅格数据加载相对简单,定义栅格图层对象、确定使用的栅格数据文件、将图层对象加载到地图控件中刷新地图。SDE 图层加载需建立数据库连接对象,定义各种属性,寻找地理数据集,建立矢量图层对象并添加到地图中刷新地图。CAD 图层加载与 SHP 类似,但需区分不同类型地物,加载时需在数据连接对象的数据库属性前加上特定标识。ArcInfo 的 Cov 格式图层加载过程与 SHP 数据加载方法相同。

基于 Arcgis Runtime SDK 100.x 的 Android GIS 开发之本地图层加载:以 geodatabase 为例,可将文件释放到本地存储,如 SD 卡或内置存储卡,通过异步加载 geodatabase,获取其中的地理数据库特征表,创建要素图层并添加到地图中。当需要单独控制每个图层的显隐性时,可对每个图层单独实例化。

ArcGIS 基础实验操作 100 例--实验 66 符号图层的保存与加载:在 ArcGIS 10.6 中,可对图层进行符号化,保存为图层文件,然后重新加载图层时,通过导入符号图层文件进行符号化设置。

图层顺序控制:在一些 GIS 软件中,可以通过特定的方法控制图层的顺序。例如在 ArcGIS 中,可以在图层列表中通过拖动图层来调整其顺序,从而影响地图的显示效果。不同的图层顺序可能会导致不同的信息优先级和视觉效果。

显示控制技巧:在实验中,可以通过多种方式控制图层的显示。比如在某些软件中,可以设置图层的可见性,决定是否在地图上显示该图层。还可以通过设置图层的透明度,实现图层的半透明显示,以便更好地观察多个图层之间的关系。此外,还可以根据特定的条件进行图层的显示控制,例如只显示满足特定属性条件的要素所在的图层。

版权声明:
作者:倾城
链接:https://www.techfm.club/p/167829.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>