1、地理信息系统(GIS)简介

1、地理信息系统(GIS)简介

什么是地理信息系统

地理信息系统(Geographic Information System 或 Geo-Information system,GIS),有时也被称为 "地学信息系统",是一种重要的空间信息系统。它在计算机硬、软件系统的支持下,能够对地球表层(含大气层)空间中与地理分布相关的数据进行采集、存储、管理、运算、分析、显示和描述。简单来说,GIS 不仅是一种系统软件,更是一门覆盖范围广、应用场景丰富的学科,核心是用地图信息来描述数据。

什么是地理信息系统二次开发

为满足不同领域用户的个性化需求,"地理信息系统二次开发" 是采用可视化语言,借助 GIS 应用平台开发组件,重新组合功能,实现特定需求的开发过程。比如基于 ArcGIS、百度地图 API 等平台,实现 GIS 基本操作、空间查询、空间分析、专题图制作及三维场景浏览与分析等功能。其开发模式分为 C/S 和 B/S 两种,应用开发则分为企业级和大众级。

地理信息系统二次开发 C/S

与传统 C/S 开发概念一致,属于桌面级应用开发。优势是能高效处理大量地理信息数据并进行编辑;缺点是无法一次部署后实现共享应用。

地理信息系统二次开发 B/S

与 C/S 开发相反,通过浏览器进行操作。虽在大数据处理能力上有限,但可实现一次部署、共享应用。近年来在大数据应用开发方面有显著进步,更适合数据的浏览、查看和统计分析。

GIS 企业级应用开发

主要利用专用 GIS 应用平台进行二次开发,实现地理信息的编辑、修改、规划、分析及各类算法应用。国内代表平台有 SupMap、MapGIS、NewMap,国外代表为 ArcGIS、MapInfo。目前广泛应用于智慧地球、智慧中国、智慧城市建设的各个领域,但面临研发人员缺口问题 ------GIS 专业毕业生缺乏研发经验,有研发能力者又缺少 GIS 相关经验。

GIS 大众级应用开发

侧重实现大众化的搜索、查询、信息查看、定位等基础功能,不具备强大的分析、处理和规划能力。国内代表有百度地图、腾讯地图、高德地图,国外代表是 Google 地图。

当前最流行的地理信息系统应用(大众级)

LBS(基于位置的服务)是核心应用,主要通过电信移动运营商的无线电通讯网络(如 GSM 网、CDMA 网)或外部定位方式(如 GPS)获取移动终端用户的地理坐标,在 GIS 平台支持下为用户提供增值服务,广泛应用于手机、电脑的地理位置分析。

GIS 系统特点

具备地理定位功能;

能够采集、管理、分析和输出多种地理空间信息;

以分析模型为驱动,拥有极强的空间综合分析和动态预测能力,可生成高层次地理信息;

以地理研究和决策为目标,是人机交互式的空间决策支持系统。

怎样学好地理信息系统研发

扎实掌握地理系统相关知识;

熟练运用一种 GIS 系统开发平台,国内推荐 Supmap,国外推荐 ArcGIS;

若侧重大众级别开发,国内推荐百度地图,国外推荐 Google 地图;

结合平台进行实战开发,积累项目经验。

2、ArcGIS 简介

什么是 ArcGIS

ArcGIS 是美国 Esri 公司研发的 GIS 产品家族,构建于工业标准之上,具备无缝扩展特性。它整合了数据库、软件工程、人工智能、网络技术、云计算等主流 IT 技术,旨在为用户提供完整、开放的企业级 GIS 解决方案。

ArcGIS 主要二次开发产品

ArcGIS Engine:基于桌面端的开发产品;

ArcGIS Server:基于服务端的开发产品;

ArcGIS API:基于客户端的开发产品。

什么是 ArcObjects

ArcObjects 是 ArcGIS 底层的开发组件库;

包含大量可编程组件,为开发者集成了全面的 GIS 功能;

简称 AO,是 Esri 公司 ArcGIS 家族中基于 Microsoft COM 技术构建的 COM 组件集。

ArcGIS 产品发展史

1981 年 10 月 - 1982 年 6 月,Esri 开发出 ARC/INFO 1.0;

1986 年,PC ARC/INFO 问世,成为 Esri 软件发展的里程碑,专为 PC 端 GIS 工作站设计;

1992 年,Esri 推出 ArcView 软件,让用户以较低成本获得简单易用的桌面制图工具;

1999 年,发布 ArcInfo 8,同时推出 ArcIMS,这是首款可通过浏览器界面整合本地数据与互联网数据的 GIS 软件;

2004 年 4 月,推出新一代 9 版本 ArcGIS 软件,提供完整的软件产品用于构建 GIS 系统;

2010 年,推出 ArcGIS 10,作为全球首款支持云架构的 GIS 平台,实现 GIS 由共享向协同、由三维空间向四维时空的飞跃,同时达成遥感与 GIS 一体化;

当前最高版本为 ArcGIS 10.8。

ArcGIS 主要 API

Web 端

ArcGIS for Silverlight

ArcGIS for Flex

ArcGIS for Javascript

手机端

ArcGIS for Android

ArcGIS for IOS

ArcGIS for Windows Phone

ArcGIS for JavaScript

ArcGIS for JavaScript(JavaScript API)是 Esri 基于 JavaScript 技术实现的,用于调用 ArcGIS Server REST API 接口的脚本集合。通过该 API,可将 ArcGIS Server 提供的地图资源嵌入到 Web 应用中。它基于 Dojo 框架开发,大量运用 Dojo 技术,因此熟练掌握该 API 需先深入了解 JavaScript Dojo 框架。

3、GIS 相关技术

Web 开发技术

Web 开发技术历经 6 个阶段:

第一阶段:静态内容阶段,Web 由大量 HTML 文档构成;

第二阶段:CGI 程序阶段,Web 服务器新增编程 API,通过 API 编写的应用程序可提供动态内容,服务器与应用程序通过 CGI 协议通讯;

第三阶段:脚本语言阶段,服务器端出现支持 Session 的 ASP/PHP/JSP 等脚本技术,浏览器端出现 Java Applet/javascript 等技术;

第四阶段:瘦客户端阶段,出现独立于 Web 服务器的应用服务器,同时诞生 Web MVC 开发模式,应用多为瘦客户端,动态内容均在服务器端生成;

第五阶段:RIA 应用阶段,涌现 DHTML+AJAX、Flex、Silverlight 等多种富互联网应用技术;

第六阶段:HTML5 阶段,以 HTML5 结合各类 JavaScript 框架为核心。

Web 服务技术

1998 年 XML 技术兴起后,Web 服务技术快速发展,其核心目标是在异构平台基础上构建通用的、与平台和语言无关的技术层,实现不同平台应用的联通与集成。将 Web 服务应用于 GIS,推动了基于 Web 服务体系的 GIS 跨越发展。

WebGIS 技术

WebGIS 技术是基于 Web 的 GIS 技术。WebGIS 1.0 基于早期网络环境构建,WebGIS 2.0 则以 Web 服务、REST 与 Ajax 等技术为核心,ArcGIS API For JavaScript 正是构建 WebGIS 2.0 应用的核心 API。

4、WebGIS 基础 ------ 基于 OGC 的 WEB 服务

什么是 OGC

OGC 是由企业、大学、政府部门组成的非盈利组织,最初旨在制定综合开放的接口规范,方便开发商编写互操作组件以满足 GIS 互操作需求,后成为专门推进 OpenGIS 规范的机构。OGC 高度关注 Web 服务在空间信息领域的应用,2001 年 3 月启动 OWS 标准开发进程,其规范名称从 "Server" 向 "Service" 的转变,体现了从传统 WebGIS 向 Web 服务理念的转型。

OWS 服务体系

OWS 服务体系主要包含以下部分:

地理数据服务(DataService):提供空间数据服务,核心有 WFS(Web Feature Service,矢量数据服务)、WCS(Web Coverage Service,栅格数据服务),返回带空间参照系的数据;

地理描述服务(PortrayalService):提供空间数据描述服务,核心是 WMS(Web Map Service,地图服务),地图可由多个图层组合,支持通过 SLD(Styled Layer Descriptor)描述,返回矢量或栅格图形;

过程处理服务(ProcessingService):提供地理数据查找、索引等服务,包括 Geocoder(地学编码服务)、Gazetteer(地名索引服务)、Coordinate Transfer Service(坐标转换服务)等;

发布注册服务(Registry):提供各类服务注册功能,方便服务发现,涵盖数据类型、数据实例、服务类型、服务实例的登记、更新及查找;

客户端应用(ClientApplication):包括地图显示、浏览及其他增值服务等基础客户端应用。

OWS 常用服务类型

注册服务

提供分类、注册、描述、搜索、维护和访问 WEB 资源信息的公共机制,包含数据类型目录、在线数据实例目录、服务类型目录、在线服务实例目录等不同角色。

处理服务

提供地理空间数据操作和增值服务,典型服务有坐标转换服务(CTS)、地理编码服务、地名词典服务。

描述服务

提供地理空间信息可视化能力,如 WMS、CPS。

数据服务

提供数据集和数据仓库访问服务,如 WFS、WCS、SCS、IAS。

编码服务

所有 OpenGIS 框架的编码规范采用 XML Schema 定义,如 GML、XIMA、SLD、LOF 等。

OpenGIS

OpenGIS(Open Geodata Interoperation Specification,OGIS,开放的地理数据互操作规范)由美国 OGC(OpenGIS 协会,Open Geospatial Consortium)提出。

服务的请求方式

服务请求主要有 Get 和 Post 两种方式。

5、WebGIS 基础 ------ArcGIS Server

什么是 ArcGIS Server

ArcGIS Server 是基于 Web 的企业级 GIS 解决方案,自 ArcGIS 9.0 版本起加入 Esri 产品家族。它充分利用 ArcGIS 核心组件库 ArcObjects,基于工业标准提供 Web GIS 服务,将 GIS 的空间分析处理能力与网络技术的全球互联、信息共享优势相结合。

ArcGIS Server 的优势和特点

集中式管理降低运营成本;

瘦客户端也能享受高级 GIS 服务;

使 WebGIS 具备灵活的数据编辑和高级 GIS 分析功能;

支持大量并发访问,具备负载均衡能力;

可与其他企业系统基于工业标准高效整合,为企业经营管理提供支持;

支持利用主流网络技术定制个性化网络 GIS 解决方案,可伸缩性强,能满足多样化企业需求。

ArcGIS Server 站点的架构

ArcGIS Server 站点组成

ArcGIS Server 发布的服务类型

ArcGIS Server 支持多种服务发布,核心类型包括:

地图服务

切片地图:预先将地图切成固定规格图片,提升显示速度;

动态地图:根据每个请求动态绘制地图;

KML:生成 Google Earth 等支持的 KML 格式数据;

OGC:返回遵循 OGC 相关标准的地图数据(含 WCS/WFS/WMS/WMTS)。

要素服务

返回地图或图层中矢量要素的空间几何位置与属性信息,由客户端负责要素绘制,支持返回遵循 OGC 相关标准的数据(含 WCS/WFS/WFS-T/WMS/WMTS)。

地理处理服务

将地理处理功能(如 WEB 打印)发布为 WEB 服务,仅支持 ArcMap 中成功执行的功能发布。

影像服务

提供栅格和影像相关服务。

网络分析服务

提供交通网络分析功能,如查找最近设施。

几何服务

将几何计算功能发布为服务。

Globe 服务

将 ArcGlobe 文档发布为 WEB 服务。

Web REST 服务的 URL

格式为 http:// 服务器名:端口 /arcgis/rest/services

使用 ArcGIS Server Rest 服务的过程

构建请求 URL;

向 ArcGIS Server 提交请求;

接收 ArcGIS Server 的响应;

解析并使用响应结果。

支持输出的格式

包括 Html、Json、Image、Help、Lyr、Nmf、jsapi 等。

6、WebGIS 基础 ------ArcGIS API for JavaScript

ArcGIS API for JavaScript 简介

ArcGIS API for JavaScript(JavaScript API)是基于浏览器的 API,用于开发高性能、易用的地图应用,可轻松在 Web 页面中嵌入地图。该 API 由 Esri ArcGIS Online 托管,可免费使用。

下载地址:https://developers.arcgis.com/javascript/jsapi/argument_aliases.html

学习地址:https://developers.arcgis.com/javascript/jsapi/argument_aliases.html

ArcGIS API for JavaScript 功能

除核心 API 外,Esri 还提供针对微软 Bing 地图、Google 地图等服务的扩展 API;

支持将自有数据与服务器数据组合显示地图;

可在 ArcGIS Online 基础地图上叠加自有数据;

能在 GIS 数据中查找要素或属性;

支持在服务上执行 GIS 模型并显示结果。

ArcGIS API for JavaScript 包含内容

核心功能:地图显示、数据叠加、要素查询、模型执行等;

扩展能力:支持与第三方地图服务集成,满足多样化地图应用场景。

ArcGIS API for JavaScript 常用 API 库

esri:ArcGIS 常用 API 核心包;

esri/arcgis:组件扩展包;

esri/dijit:界面库包;

esri/dijit/analysis:分析功能包;

esri/dijit/editing:地图编辑包;

esri/dijit/util:工具辅助包;

esri/geometry:几何分析包;

esri/layers:图层相关包;

esri/plugins:插件扩展包;

esri/process:进程处理包;

esri/renderers:渲染功能包;

esri/styles:样式定义包;

esri/symbols:符号相关包;

esri/tasks:任务处理包;

esri/toolbars:工具栏相关包。

ArcGIS API for JavaScript 与 dojo

ArcGIS API for JavaScript 构建于 Dojo 之上,借助 Dojo 屏蔽不同浏览器的兼容性差异。Dojo 是基于 JavaScript 实现的开源 DHTML 工具包。

开发环境

开发工具:Visual Studio 2013;

数据库:Oracle 11G;

ArcGIS 版本:Arcgis 10.1;

API 版本:Arcgis API for JavaScript 3.9。

7、空间参考系统

什么是空间参考系统

空间参考系统是确定地理目标平面位置和高程的平面坐标系与高程系的统称,主要包含地理坐标系统和投影坐标系统。

什么是地理坐标系统

地理坐标系,又称真实世界的坐标系,用于确定地球物体在地球上的位置。由于 GIS 描述的是地球表面信息,基于地球建立的地理坐标系(经纬网)可作为所有要素的参照系统,通过经度和纬度确定坐标的系统即为地理坐标系统。

什么是投影坐标系统

地球是不规则球体,为将其表面内容显示在平面显示器或纸面上,需进行坐标变换。因地球表面是不可展开的曲面,需通过地图投影方法建立地球表面与平面上点的函数关系,使地球表面任一点的地理坐标在平面上有唯一对应点,经过投影变换后的坐标系统称为投影坐标系统。

空间参考系统的类

核心类为 esri/SpatialReference。

构造函数
javascript 复制代码
// 基于JSON对象创建
new SpatialReference(json)
var spatialReference = new SpatialReference({wkid:32662});

// 基于WKID创建
new SpatialReference(wkid)
var sr = new SpatialReference(4326);

// 基于WKT创建
new SpatialReference(wkt)
var sr = new SpatialReference(
    'GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]');

WKT(Well-Known Text)是一种文本标记语言,用于表示矢量几何对象、空间参照系统及空间参照系统之间的转换。

SpatialReference 属性

wkid:空间参考 ID;

wkt:定义空间引用的文本。

SpatialReference 方法

isWebMercator ():判断当前空间参考是否为墨卡托坐标系。

示例代码
javascript 复制代码
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no">
    <title>Points in Extent</title>

    <link rel="stylesheet" href="http://js.arcgis.com/3.14/dijit/themes/claro/claro.css">
    <link rel="stylesheet" href="http://js.arcgis.com/3.14/esri/css/esri.css">
    <script src="http://js.arcgis.com/3.14/"></script>
    <script>
        dojo.require("esri.map");
        dojo.require("esri.toolbars.draw");
        dojo.require("esri.tasks.query");

        // 全局变量
        var map, defaultSymbol, highlightSymbol, resultTemplate;

        function init() {
            // 创建底图
            map = new esri.Map("map", {
                basemap: "streets",
                center: [-120.275, 47.485],
                zoom: 6,
                slider: false,
                showInfoWindowOnClick: false
            });
            // 加载地图后初始化工具
            dojo.connect(map, "onLoad", initToolbar);
            var sr = new esri.SpatialReference({ wkid: 102100 })
            map.SpatialReference = sr;
            // 创建符号
            defaultSymbol = new esri.symbol.SimpleMarkerSymbol().setColor(new dojo.Color([0, 0, 255]));
            highlightSymbol = new esri.symbol.SimpleMarkerSymbol().setColor(new dojo.Color([255, 0, 0]));

            // 数据查询
            var queryTask = new esri.tasks.QueryTask("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer/0");
            var query = new esri.tasks.Query();
            query.where = "STATE_NAME = 'Washington'";
            query.outSpatialReference = map.SpatialReference;
            query.returnGeometry = true;
            query.outFields = ["CITY_NAME"];
            // 执行查询并将结果添加到地图
            queryTask.execute(query, addPointsToMap);

            // 信息窗口模板
            resultTemplate = new esri.InfoTemplate("City", "<tr><td>${CITY_NAME}</tr></td>");
        }

        // 初始化绘图工具条
        function initToolbar(map) {
            var tb = new esri.toolbars.Draw(map);

            // 绘图结束后执行范围查询
            dojo.connect(tb, "onDrawEnd", findPointsInExtent);

            // 设置绘图模式为绘制范围
            tb.activate(esri.toolbars.Draw.EXTENT);
        }

        // 将查询到的点添加到地图
        function addPointsToMap(featureSet) {
            dojo.forEach(featureSet.features, function (feature) {
                map.graphics.add(feature.setSymbol(defaultSymbol).setInfoTemplate(resultTemplate));
            });
        }

        // 范围查询逻辑
        function findPointsInExtent(extent) {
            var results = [];
            dojo.forEach(map.graphics.graphics, function (graphic) {
                if (extent.contains(graphic.geometry)) {
                    graphic.setSymbol(highlightSymbol);
                    results.push(graphic.getContent());
                }
                // 若点之前被高亮,恢复默认符号
                else if (graphic.symbol == highlightSymbol) {
                    graphic.setSymbol(defaultSymbol);
                }
            });

            // 显示范围内的点数量
            dojo.byId("inextent").innerHTML = results.length;

            // 显示范围内的点列表
            dojo.byId("results").innerHTML = "<table><tbody>" + results.join("") + "</tbody></table>";
        }

        // 页面加载完成后初始化
        dojo.addOnLoad(init);
    </script>

  </head>
  <body class="claro">
    绘制范围以查找该范围内的所有点
    <!-- 地图容器 -->
    <div id="map" style="width:800px; height:400px; border:1px solid #000;"></div>
    <br>

    <!-- 显示范围内点的数量 -->
    <b>范围内点的数量 = <span id="inextent">0</span></b>

    <!-- 显示范围内的点列表 -->
    <div id="results" style="width:400px; height:200px; border:1px solid #000; overflow:auto;"></div>
  </body>
</html>

8、参考系统转换

参考系统转换方法

简单参考系统转换可直接使用 esri/geometry/webMercatorUtils 模块的功能函数;复杂转换可调用服务器的几何对象服务 esri/tasks/GeometryService,其 project 方法可实现投影或投影转换。

ebMercatorUtils

核心模块为 esri/geometry/webMercatorUtils,提供多种坐标转换函数。

Web 墨卡托投影坐标和地理坐标之间的转换

javascript 复制代码
// 判断是否可投影(源与目标空间参考相同时返回true)
canProject(source, target)
var pt = Point(0, 0);
if (webMercatorUtils.canProject(pt, map)) {
  result = webMercatorUtils.project(pt, map);
}

// 地理坐标转换为Web墨卡托投影
geographicToWebMercator(geometry)

// 经度和纬度转换到Web墨卡托投影
lngLatToXY(long, lat)
require([
  "esri/geometry/webMercatorUtils", ... 
], function(webMercatorUtils, ... ) {
  webMercatorUtils.lngLatToXY(-120, 33);
  ...
});

// 投影转换(将几何对象转换为目标空间参考)
project(geometry, target)
var pt = Point(0, 0)
if (webMercatorUtils.canProject(pt, map)) {
  result = webMercatorUtils.project(pt, map);
}

// Web墨卡托投影几何单位转换为地理单位
webMercatorToGeographic(geometry)
require([
  "esri/geometry/webMercatorUtils", ... 
], function(webMercatorUtils, ... ) {
  query.geometry = webMercatorUtils.webMercatorToGeographic(geometries[0]);
  ...
});

// Web墨卡托投影坐标转换为经度和纬度
xyToLngLat(x, y)
require([
  "esri/geometry/webMercatorUtils", ... 
], function(webMercatorUtils, ... ) {
  var normalizedVal = webMercatorUtils.xyToLngLat(42215329, 1321748);
  console.log(normalizedVal); 			// 返回 19.226, 11.789

  var value = webMercatorUtils.xyToLngLat(42215329, 1321748, true);
  console.log(value); 					// 返回 379.22, 11.78
  ...
});
GeometryService

核心类为 esri/tasks/GeometryService,代表几何服务资源。

示例代码
javascript 复制代码
<!DOCTYPE html>
<html> 
  <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
    <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no"/>
    <title>坐标转换示例</title> 
    <link rel="stylesheet" type="text/css" href="http://localhost:2686/arcgisjs/js/dojo/dijit/themes/tundra/tundra.css" />
    <script type="text/javascript" src="http://localhost:2686/arcgisjs/init.js"></script>
    <script type="text/javascript" src="http://localhost:2686/arcgisjs/jsapi_vsdoc12_v38.js"></script>
    <link rel="stylesheet" type="text/css" href="http://localhost:2686/arcgisjs/js/esri/css/esri.css" />
    <script>
        var map;
        require([
            "esri/geometry/webMercatorUtils", 
            "esri/map"
        ], function (
            webMercatorUtils, 
            Map
        ) {
            // 经纬度转换为墨卡托
            var number = webMercatorUtils.lngLatToXY(-120, 33);
            // 墨卡托转换为经纬度
            var normalizedVal = webMercatorUtils.xyToLngLat(42215329, 1321748);
            alert("经纬度转换墨卡托:"+number[0] + "/" + number[1]);
            alert("墨卡托转经纬度:"+normalizedVal[0] + "/" + normalizedVal[1]);
        });
    </script> 
  </head> 
  <body class="claro" style="font-size: small; font-family: Arial Unicode MS,Arial,sans-serif;"> 
    <div id="map" style="position:relative;width:700px; height:500px; border:1px solid #000;"></div> 
  </body> 
</html>
相关推荐
deephub9 小时前
分类数据 EDA 实战:如何发现隐藏的层次结构
人工智能·python·机器学习·数据分析·数据可视化
杨超越luckly10 小时前
从传统 GIS 向智能/自动化脚本演进:地铁接驳公交识别的 ArcGIS 与 Python 双路径实践
开发语言·arcgis·php·交互·数据可视化
小贺儿开发11 小时前
Unity3D 智慧城市管理平台
数据库·人工智能·unity·智慧城市·数据可视化
leisigoyle2 天前
SQL Server 2025安装教程
大数据·运维·服务器·数据库·人工智能·计算机视觉·数据可视化
七夜zippoe2 天前
数据可视化高级技巧:Matplotlib + Seaborn实战大全
python·信息可视化·matplotlib·数据可视化·seaborn·gridspec
Serendipity_Carl5 天前
1637加盟网数据实战(数分可视化)
爬虫·python·pycharm·数据可视化·数据清洗
马克学长6 天前
SSM疫苗注射动态数据可视化系统8i0b4(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·数据可视化·ssm 框架·疫苗注射管理
老吴学AI7 天前
第 3 节 | 视觉魔术:Excel 如何用颜色和位置“控制”读者视线
信息可视化·数据分析·excel·职场·数据可视化·报表制作·用数据讲故事
CodeCraft Studio8 天前
如何借助TeeChart图表库,实现放射治疗QA数据的精准可视化
信息可视化·.net·数据可视化·teechart·医疗软件·医疗数据分析·医用图表
老吴学AI8 天前
第 2 节 | 从“呈现数据“到“驱动决策“:数据故事的力量
数据分析·数据可视化·excel教程·数据故事·职场技巧·业务洞察·报告编写