一、模块介绍
ArcGIS Runtime SDK 由多个核心模块组成,每个模块负责不同的 GIS 任务。以下是主要的模块和它们的功能:
1. 核心模块
模块 | 功能 |
---|---|
地图(Map & MapView) | 2D/3D 地图渲染、图层管理 |
场景(Scene & SceneView) | 3D 场景、倾斜摄影、地形数据 |
图层(Layers) | 添加矢量、栅格、影像、WMS/WMTS 等地图服务 |
几何(Geometry) | 点、线、多边形等空间数据管理 |
渲染(Symbology) | 矢量数据符号化、3D 模型 |
地图交互(Map Tools) | 平移、缩放、旋转、点击事件 |
空间查询(Query) | 查询地图上的要素 |
地理数据库(Geodatabase) | 读取和编辑 FileGDB、SQLite、Shapefile |
地理编码(Geocoding) | 地址查询、逆地理编码 |
网络分析(Network Analysis) | 路径规划、最短路径计算 |
地理处理(Geoprocessing) | 运行服务器端 GP 工具 |
离线功能(Offline Maps) | 下载地图,离线使用 |
实时数据(Real-time Data) | GPS 轨迹、IoT 传感器数据 |
三维分析(3D Analysis) | 可视域分析、剖面分析、高度测量 |
测绘工具(Sketch Editor) | 绘制点、线、面,用户交互绘制 |
任务(Tasks) | 任务调度、异步执行操作 |
Web 服务(ArcGIS REST) | 访问 ArcGIS Server/Online 数据 |
2. 具体 API
ArcGIS Runtime SDK 提供多个 API,主要包括:
- C++(Qt)(适合跨平台开发)
- .NET(C# WPF/MAUI)
- Java(适用于 Android)
ArcGIS Runtime SDK 的每个模块都有一系列核心接口(类、方法)用于实现 GIS 功能。下面是各模块的主要接口:
1. 地图模块(Map & MapView)
✅ 用于加载和显示地图(2D/3D)
接口(类) | 功能 |
---|---|
Map |
2D 地图对象,管理图层、底图 |
MapView |
2D 地图视图,渲染 Map |
Scene |
3D 场景对象,管理 3D 数据 |
SceneView |
3D 场景视图,渲染 Scene |
Basemap |
底图(影像、矢量地图等) |
Camera |
3D 摄像机(控制视角) |
Viewpoint |
地图视角(缩放、旋转) |
LocationDisplay |
显示 GPS 位置 |
2. 图层模块(Layers)
✅ 用于管理和显示数据(矢量、影像、服务)
接口(类) | 功能 |
---|---|
FeatureLayer |
矢量图层(点、线、面) |
GraphicsLayer |
临时绘制图层(用户交互) |
RasterLayer |
影像图层(栅格数据) |
ArcGISTiledLayer |
瓦片地图图层(WMTS/WMS) |
ArcGISMapImageLayer |
动态地图服务 |
SceneLayer |
3D 场景图层(倾斜摄影、3D 模型) |
KmlLayer |
加载 KML/KMZ 数据 |
OGCFeatureLayer |
OGC Web Feature Service (WFS) |
3. 几何模块(Geometry)
✅ 用于处理 GIS 空间数据(点、线、面、缓冲区等)
接口(类) | 功能 |
---|---|
Point |
点对象(经纬度坐标) |
Polyline |
线对象 |
Polygon |
面对象 |
Envelope |
矩形范围 |
SpatialReference |
坐标系管理 |
GeometryEngine |
空间运算(缓冲区、裁剪、合并) |
4. 渲染模块(Symbology)
✅ 用于设置矢量符号、颜色、图标等
接口(类) | 功能 |
---|---|
SimpleMarkerSymbol |
点符号(圆形、正方形) |
SimpleLineSymbol |
线符号(虚线、实线) |
SimpleFillSymbol |
面符号(填充颜色) |
PictureMarkerSymbol |
图片符号(自定义点样式) |
Renderer |
符号渲染器 |
UniqueValueRenderer |
唯一值渲染(按类别着色) |
ClassBreaksRenderer |
分级渲染(按数值大小着色) |
5. 地图交互模块(Map Tools)
✅ 用于处理鼠标、触摸屏事件
接口(类) | 功能 |
---|---|
GeoViewTappedEventArgs |
处理地图点击事件 |
MapViewInteractionOptions |
设置交互方式(旋转、缩放) |
SketchEditor |
让用户绘制点、线、面 |
6. 空间查询模块(Query)
✅ 用于查询地图上的矢量数据
接口(类) | 功能 |
---|---|
QueryParameters |
查询条件 |
FeatureQueryResult |
查询结果 |
SpatialQuery |
空间查询(相交、包含、缓冲) |
IdentifyLayerResult |
识别地图上的要素 |
7. 地理数据库模块(Geodatabase)
✅ 用于存储、编辑 GIS 数据(FileGDB、SQLite)
接口(类) | 功能 |
---|---|
Geodatabase |
加载地理数据库(GDB) |
FeatureTable |
表(存储矢量数据) |
Feature |
矢量数据(点、线、面) |
AttributeQueryFilter |
按属性查询数据 |
8. 地理编码模块(Geocoding)
✅ 用于地址解析(地址转坐标)
接口(类) | 功能 |
---|---|
LocatorTask |
地址查询 |
GeocodeParameters |
地址解析参数 |
ReverseGeocodeResult |
逆地理编码结果 |
9. 网络分析模块(Network Analysis)
✅ 用于路径规划、最短路径计算
接口(类) | 功能 |
---|---|
RouteTask |
计算路线 |
RouteParameters |
设定起点、终点 |
RouteResult |
返回路径数据 |
ClosestFacilityTask |
计算最近设施 |
ServiceAreaTask |
计算服务范围 |
10. 地理处理模块(Geoprocessing)
✅ 运行服务器端 GIS 分析工具
接口(类) | 功能 |
---|---|
GeoprocessingTask |
运行 GP 任务 |
GeoprocessingParameters |
设定输入数据 |
GeoprocessingResult |
处理结果 |
11. 离线功能模块(Offline Maps)
✅ 支持下载地图,在离线模式下使用
接口(类) | 功能 |
---|---|
OfflineMapTask |
下载离线地图 |
GenerateOfflineMapParameters |
设定下载参数 |
GenerateOfflineMapResult |
生成的离线地图 |
12. 三维分析模块(3D Analysis)
✅ 用于 3D GIS 计算(可视域、剖面分析)
接口(类) | 功能 |
---|---|
ViewshedAnalysis |
视域分析 |
LineOfSightAnalysis |
视线分析 |
SliceAnalysis |
剖面分析 |
13. 实时数据模块(Real-time Data)
✅ 支持 GPS、传感器数据
接口(类) | 功能 |
---|---|
StreamLayer |
实时数据流 |
GPSLocationDataSource |
GPS 数据源 |
14. Web 服务模块(ArcGIS REST)
✅ 用于访问 ArcGIS Server/Online 数据
接口(类) | 功能 |
---|---|
ServiceFeatureTable |
从 REST API 访问矢量数据 |
FeatureLayer |
读取服务器端要素 |
WebTiledLayer |
读取 Web 地图 |
二、模块接口介绍
(一)地图模块(Map & MapView)详细接口介绍
地图模块 主要用于管理 2D 地图(Map) 和 3D 场景(Scene),并提供相应的 视图控件(MapView & SceneView) 来进行渲染、交互。
1. Map(地图)
- 接口:
Map
- 实现类:
Map
- 功能:用于管理 2D 地图,包括底图(Basemap)、图层(Layers)、坐标系统(SpatialReference)等。
主要属性
属性 | 类型 | 描述 |
---|---|---|
basemap |
Basemap* |
设置底图(影像、矢量等) |
operationalLayers |
LayerListModel* |
维护地图的图层列表 |
initialViewpoint |
Viewpoint |
设定初始视角 |
spatialReference |
SpatialReference |
设置地图的坐标系统 |
主要方法
方法 | 返回类型 | 描述 |
---|---|---|
setBasemap(Basemap* basemap) |
void |
设置地图底图 |
operationalLayers()->append(Layer* layer) |
void |
添加图层 |