1.3 Fundamentals—Layers and tables(Arcgis runtime for java)

Layers and tables

layer用于在map和scene中展示地理数据,maps和scenes是图层和表的容器。table是一种数据源,table中的地理数据可以被应用到一些图层中,runtime支持多种类别的图层。

layers有不同的样式和功能,例如,feature layers要素图层被概念性的对照到底层表。表中的数据被渲染器符号化。arcgis map image layers和wms layers用来展示用户需要的地图图片。Arcgis tiled layers和web tiled layers用于最先被渲染。ENC layers展示设备存储中文件中的数据。

图层在地图中有两个角色:

——Basemap layers 提供地图信息,例如街区背景图就是基础图片

——Operational layers包含了map的主要内容,例如一个包含所有附近加油站的图层可以是一个可操作图层

Runtime layers可以被用作操作或者基础图层,你可以在你的app中灵活使用它们。

图层定义了数据如何展示,它可以从tables、local files或者remote services中获取数据。如果你仅仅需要添加一些点到地图或者对一些临时数据做处理,考虑使用graphics来实现。

图层可以在地图中显示多个,你可以控制图层的渲染顺序来实现压盖效果。

Common layer properties

所有图层都支持下面一些属性:

——name:人们可读的名字

——Description:对图层信息的描述

——Extent:图层内容所包含的地理区域

——Spatial reference:坐标参考

——Visibility:可以在不移除的前提下隐藏或展示图层

——Scale range:控制图层显示缩放等级,用MinScale和MaxScale属性表示

——Opacity:模糊度

Choosing layers for your map

用户要去选择图层类型时,考虑如下问题:

——用户需要时间参考来比较数据吗?

——用户网络一直在线吗?

——用户需要查询、分析、选择数据吗?

——用户需要编辑图层内容吗?

——你或你的用户需要控制图层样式吗?

——你的app需要和其他系统或者arcgis portal交互吗?

一旦你理解你的需求,就可以在表中查找到你需要的图层类型。

创建Arcgis app通常有数据、设计、开发三个步骤,理解你的数据是第一步。Arcgis devlabs将贯穿你的数据到app的全过程。

如果你想快速的在你的app中展示数据,但是不想存储在arcgis portal或者layer中,考虑使用graphics

Choosing basemap layers

基础图层是map的基础,它为你的数据提供了内容并且定义了map的样式,选择正确的basemap可以有以下好处:

——标识你的个性

——帮助你展示信息

——使你的map layer和graphics更容易理解

——使你的app成为用户地理信息系统的一个部分

1.3 Fundamentals—Layers and tables(Arcgis runtime for java)

在Arcgis online中有许多吸引人的basemap。你可以在用户的arcgis portal中获取到一个basemaps的列表。

通用也可以利用已有的矢量basemap来发布构建你自己的样式地图。

1.3 Fundamentals—Layers and tables(Arcgis runtime for java)

Time-aware layers

尽管所有图层都支持地理信息,time-aware图层支持时间信息。当你的图层支持时间信息,说明:

——根据时间过滤图层

——根据时间比对数据

1.3 Fundamentals—Layers and tables(Arcgis runtime for java)

Image adjustment layers

图像调整图层允许你调整地图的明暗、对比度和图像灰度。

Layer performance considerations 

Vector & raster data

主要有两种展示地理信息数据的格式:

——矢量:用点、线、面来描述数据,一般客户端将矢量图层渲染到栅格图上

——栅格:数据通过图像格式传输,客户端不知道底层形状信息

因为矢量数据在设备上渲染,它们可以无限缩放的展示。矢量数据也很小,这使它在弱网络环境下很适合使用。矢量数据不适合用来表达来自栅格数据源的数据,例如卫星影像。

一些基础地图合并了矢量和栅格数据。例如,arcgis online中的有街道矢量世界地图基础图就用了一个栅格瓦片图层和用来表达要素和标识的矢量图层。这确保了要素和标识能够一直显示在栅格图上。

Dynamic and tiled layers

服务可以通过以下两种方式提供数据:

——Dynamic:根据客户端提供的包含图像大小和范围的每一个请求动态的产生地图

——Tiled:在响应之前产生瓦片来服务客户端的需求

因为动态maps可以根据需求产生,它们更适用于数据经常发生变化的场景。动态地图的缺点是它们需要更多的服务器资源,毕竟渲染地图是个很耗时的操作。对应那些不会经常变更的,瓦片服务很适合。

Tables

表提供了直接处理的数据源或者用于展示要素图层。arcgis中的表为要素集定义了模式,一组要素集所需的字段集合。表可以有多个要素。表可以有以下来源:

——shapefiles

——geopackages

——maps

——feature services

——geodatabases

表可以有以下处理方式:

——查询

——编辑

——在要素图层展示

——离线

Non-spatial tables

无空间参考的tables就是无空间属性列的tables。因为它们没有空间属性,所以无法在图层中被渲染。尽管无空间表不能被渲染,它们依然可以当做数据源添加到maps中用来查询使用。空间要素集可以被关联到这些无空间信息的表中。

Table performance concepts

table可能有成千上万的要素集,你的app如何从table中请求要素集是影响性能的重要因素。

当使用来自服务器的表时,feature请求模式决定了features被请求的频率和如何被缓存。有三种请求模式:

——On interaction cache(default):这种模式适合那种大部分数据不需要编辑的场景。这种模式在你的网络很差或无网络时很适合。当table在map的layer中使用时,只请求可视范围内的features并且缓存它们,当你导航到其他地方时候,会继续请求可视范围内features并缓存,已经缓存的内容就不再缓存。Features也可以通过查询获取或者直接通过table填充。Runtime会选择合适的方法去执行查询缓存或者服务并将结果导入到本地缓存。例如一个对当前范围空间内的查询,结果会从本地缓存中获取,这避免了从服务器获取。

——Manual cache:这种模式被使用在服务器的数据不会经常变化并且客户并不急于总是获取到最近的变化。从服务器下载的缓存数据量太小了,table的本地缓存仅可以通过调用ServiceFeatureTable的populateFromServiceAsync方法来填充。features永远不会自动请求,且缓存也不会在地图交互时填充。

——On interaction,no cache:这种模式被用在客户端不会要求最新数据的场景。这种模式不适用那种你很紧急但是网络却不同的场景。当在map的layer中使用table时,会请求当前视图范围内的features并且不会本地缓存数据。features在你每次请求时都会重新下载一遍,而并不考虑你之前是否浏览过。查询通常在服务器完成,导航图层和查询表都会导致本地缓存被清除和重新填充。因为所有操作都包括查询服务器,网络需要一直在线