图层和数据
引言
图层是在 Map
中使用的数据集合。图层数据可以从客户端上创建,然后托管到 GeoScene Online 和 GeoScene Enterprise 中,也可以是直接托管在其他服务器上。
要素集合数据
大量要素集合要通过图层来管理和显示。要素是地理位置或实体的记录。每个要素都包含几何类型(点、折线或多边形)定义的空间坐标和属性字段。这些要素集合分为两类:
- 结构化要素集合 每个要素都具有相同的
geometry
类型和相同的attributes
键; - 非结构化要素集合 要素具有不同的
geometry
类型或不同的attributes
键
注:有时,要素具有模式,而图形没有模式。
使用要素集合时,一般的经验法则是:
- 如果数据为结构化的,则使用
FeatureLayer
显示数据 - 如果为非结构化的,则使用
GraphicsLayer
显示数据
核心图层类型
GeoScene API for JavaScript 有很多图层类。所有类都继承自 Layer
。使用哪个类取决于数据的格式和数据的存储方式。每种图层类型都有不同的功能。
下面是最常见图层类。
类 | 数据存储 | 功能 |
---|---|---|
FeatureLayer | 存储在 GeoScene Online 或 GeoScene Enterprise 中的地理数据 | 显示、查询、过滤和编辑大量地理要素 |
GraphicsLayer | 临时存储在内存中的地理数据 | 通过图形、视觉辅助或文本的形式显示地理要素 |
CSVLayer /KMLLayer /GeoJSONLayer | 存储在网络上的地理数据或表格数据文件 | 将以外部文件格式存储的数据显示为图层 |
TileLayer /VectorTileLayer | 存储在切片方案中的数据集以实现快速渲染。 | 显示地理环境的底图和其他切片数据集。 |
MapImageLayer | 存储在 GeoScene Enterprise 中的地理数据,渲染为图片展示 | 通过 GeoScene Server 服务动态渲染展示图层 |
ImageryLayer | 存储在 GeoScene Enterprise 中的地理配准影像 | 显示卫星或其他影像数据 |
使用 FeatureLayer
显示数据
FeatureLayer
是地理要素集合的图层。集合中的所有要素必须具有相同的几何类型和属性字段。
要素图层数据源可以是应用程序加载在内存中的数据,也可以是通过REST API 从GeoScene Online 或 GeoScene Enterprise 请求的托管图层数据。将数据托管在 GeoScene Online 或 GeoScene Enterprise 中是首选方法,尤其是在访问和显示大量地理数据时。为了快速显示,要素图层在客户端和服务器上都经过了高度优化,并支持各种其他功能,包括:
GeoScene Online 支持将 GeoJSON、Excel、CSV、文件地理数据库和 shapefile 转化为要素图层项目。这样这些数据就可以通过 GeoScene Online 转化为可用的服务器端数据源。
客户端数据源
通常,图层数据是通过REST API加载托管在 GeoScene Online 或 GeoScene Enterprise 上的服务,但是也可直接从内存中的要素集合创建要素图层。
例如,以下为一些点要素集合的JSON数据,接下来我们展示利用这份数据创建要素图层。
创建要素图层的第一步是将每个地点转换为具有 attributes
和 geometry
属性的 Graphic
对象。
属性 | 类型 | 说明 |
---|---|---|
attributes | Object | 键值对,用于存储有关要素的地理信息 |
geometry | Geometry | 在当前坐标系下的地理实体。可能的值是 Point 、Polygon 和 Polyline 对象 |
以下代码示例将位置数组转换为 Graphic
对象数组。
创建 FeatureLayer
的第二步是创建 FeatureLayer
对象,并至少指定下表中描述的 objectIdField
、 fields
、renderer
和 source
属性。
属性 | 类型 | 说明 |
---|---|---|
source | Collection | Graphic 对象集合,用于创建要素图层 |
renderer | Renderer | 渲染对象,渲染符号 |
objectIdField | String | 唯一标识的字段 |
fields | Object[] | 包含字段名称和值的 JavaScript 对象数组 |
popupTemplate | PopupTemplate | 弹出窗口模板 |
以下示例展示如何创建一个新的 FeatureLayer
。
了解有关自动转换或基于图形数组创建要素图层的更多信息。探索如何在代码示例中使用要素图层的所有功能。
服务器端数据
FeatureLayer
还可以通过REST API查询服务获取要素集合来创建图层,只需要指定服务url
属性即可 。这是访问和显示大型数据集的最好方式。通过要素服务来获取要素数据是要素图层最高效的方式,而且如果启用了一些功能,要素图层也会支持这些功能(例如编辑)。
在将图层添加至地图教程中了解有关向地图添加图层的更多信息。
除了 URL,还可以引用存储在 GeoScene Online 或 GeoScene Enterprise 中的图层项目。因为这些项目包含了服务图层地址,可以获取到图层数据以及其他配置选项。
使用 GraphicsLayer
显示图形
向地图中添加具有不同几何的文本、形状和图像时都是通过图形添加的。创建图形图层的最简单方法是将 Graphic
对象创建为数组,并将此数组传递给新 GraphicsLayer
对象的 graphics
属性。
每个 Graphic
类都包含以下属性:
属性 | 类型 | 说明 |
---|---|---|
attributes | Object | 键值对,用于存储有关要素的地理信息 |
geometry | Geometry | 提供要素在坐标系下的几何对象 可能的值为 Point 、Polygon 和 Polyline 对象 |
popupTemplate | PopupTemplate | 弹出窗口模板 |
symbol | Symbol | 图形在图层中使用的符号 |
以下代码示例使用 Point
几何类型创建新 Graphic
对象、弹出窗口和符号。然后通过将图形数组传递给 graphics
属性来创建一个新的 GraphicsLayer
。
使用外部数据源
Layer
的特定子类支持其他类型的数据和文件类型。如 CSV 、 GeoJSON 文件或其他外部服务。
图层子类 | 数据源 | 数据类型 | 功能 | 局限性 |
---|---|---|---|---|
CSVLayer | CSV 文件 | - 下载为点的矢量图形 | 客户端处理、弹出窗口模板、带有 2D 和 3D 符号的渲染器 | 可能需要大量下载,具体取决于要素的数量 |
GeoRSSLayer | GeoRSS 源 | 作为点、折线和面的矢量图形 | - 图形存储 - 弹出窗口模板 | - 不支持 3D 不支持渲染器 |
GeoJSONLayer | GeoJSON 文件 | 作为点、折线和面的矢量图形 | 基于 GeoJSON 数据创建图层 | - 每个 GeoJSON 图层均接受单一几何类型 - 数据必须符合 RFC 7946 规范 |
KMLLayer | KML 数据源 | N/A | N/A | N/A |
OGCFeatureLayer | OGC API - 要素 | 点、折线、面 | 渲染器、标注、弹出窗口 | 数据必须符合 RFC 7946 规范,该规范指出坐标使用 SpatialReference WGS84 |
WFSLayer | - WFS 服务 门户项目 | 点、多点、折线、面 | 渲染器、标注、弹出窗口 | 数据必须为 GeoJSON 格式,仅支持 2.0.0 版本。 |
WMSLayer | - WMS 服务 门户项目 | 导出为单个图像的栅格数据 | OGC 规范 | N/A |
WMTSLayer | - WMTS 切片服务 - 门户项目 | 影像切片 | OGC 规范 | N/A |
OpenStreetMapLayer | OpenStreetMap 切片服务 | 影像切片 | 显示 OpenStreetMap 切片内容 | N/A |
BingMapsLayer | Bing 空间数据服务数据 | N/A | N/A | N/A |
这些图层中在定义时都需要不同的属性,具体取决于它们的初始化方式。有关详细信息,请参阅每种图层类型。创建 CSVLayer
图层的示例如下所示。
使用底图和切片图层
底图通过显示道路、边界、建筑物和其他数据为地图提供地理环境。底图通常以切片格式提供,以便加快渲染速度。栅格底图需要预先创建图像。矢量底图需要压缩为二进制格式的数据并可在客户端设置样式。
自定义数据也可以通过 GeoScene Online 或 GeoScene Enterprise 发布为矢量切片或栅格切片。
可使用 basemap
属性控制特定 Map
对象的底图,该属性可以是标识特定底图或 Basemap
对象的字符串。
在更改底图图层的教程中了解更多信息。
使用 GeoScene Enterprise 中的地图服务
MapImageLayer
用于在 GeoScene Enterprise 中显示来自地图服务中的数据。地图服务通常包含多个子图层和复杂的制图。地图服务可将数据渲染为服务器端图片,以在客户端动态生成和显示。
使用栅格和影像数据
ImageryLayer
用于在 GeoScene Enterprise 中显示存储在影像服务中的影像或其他基于栅格的数据。ImageryLayer
通常用于显示和分析从无人机或卫星捕获的原始图像数据或用于显示科学数据。