写点什么

Esri 何超谈基于 ArchGIS 的 Javascript API

  • 2013-06-14
  • 本文字数:2350 字

    阅读完需:约 8 分钟

地理位置信息服务本身具有良好的线下和线上属性,通过暴露数据接口的 API 实现多终端、多语言的调用,可以将其应用场景扩大化。而 Web 端在各种需求场景中又是最常见的,在 6 月 6 日的 Esri 空间信息技术开发者大会上,来自 Esri 的何超以 Dojo Widget 和 Angular.js 的开发流程为出发点,分享了他们对于构建大型 Web 地图应用的一些实践和想法。InfoQ 借此机会采访了何超,听他谈谈 ArchGIS Javascript API:

InfoQ:我们知道 ArcGIS 是一款非常给力的国际化地理信息系统软件,在提供 Javascript API 的时候,与 ArcGIS 本身的数据结构相比,有哪些特殊处理?栅格、矢量地图数据的存储方式分别是怎样的?

何超:ArcGIS 本身提供了从 ShapeFile 到企业级数据库的各种存储方式以满足不同用户不同场景的需求。Javascript API 在处理栅格和矢量地图的时候并不直接去读取 Map Data,更多的是依附于 ArcGIS Server 所提供的 RESTfull 风格的各种不同类型的服务,如地图服务(Map Service)、影像服务(Image Service)等。因此,对于 JS 的开发者来说,大可不必去关心底层的数据是如何存储的,只需要了解 ArcGIS Server 所暴露的服务的相关信息即可。举个例子来说,对于大数据量的影像数据,我们在后台可能采取的是镶嵌数据集(Mosaic Dataset),这种方式进行存储,但是 Arcgis Server 并不会直接将地图数据暴露给用户,提供给用户的是一个类似于http://sampleserver6.arcgisonline.com/arcgis/rest/services/CharlotteLAS/ImageServer 这样的地址。用户是通过 ArcGIS Server 的 RestAPI 来实现客户端与 ArcGIS Server 之间的交互。 JS API 所接受的是 ArcGIS Server 所返回的图片或者是 json 数据。而对与用户本身在前端所加载一些譬如 gps 轨迹等数据信息,都是以 json 的格式处理的。

InfoQ:地图未来很重要的一个发展趋势是实景、三维、立体。那么,基于 ArcGIS 的 JS API,会提供哪些地理三维模型的 API 方法呢?比如实现街景的图层拼接和建模的底层 API 接口、或实现全 3D 效果的地理物体,比如山川、立交桥、建筑物等。

何超:关于 Web 3D,这个一直是 Esri 中国研发中心在开发,会在今年的开发者大会上给大家带来精彩的 Demo 演示。从我目前了解的情况,3D API 跟之前的 2D API 非常类似,开发者可以很容易上手,其代码也很容易移植。Web 3D 的 API 在原有 2Dapi 的基础上扩展了 Geometry、Layer、Symbol、Renderer 等,例如,symbol 针对 3D 场景新增了 BoxMarkerSymbol、CylinderMarkerSymbol、SphereMarkerSymbol、MediaMarkerSymbol。3D Map 将平滑加载原有的 2D Layer,支持跟 2D 几乎一样的 Geometry 和 Symbol,以及更多的 3D Symbol, 如 Box、Cylinder、Sphere 等。同时针对 Layer,Web3D 新增了支持 3D Model(如城市模型)ArcGIS3DServiceLayer 和 ArcGISElevationServiceLayer,以及贴地模式的 Graphic。此外,3D API 无缝结合 2D API,部分类甚至可以共用(如 InfoTemplate 和 Query 等)。Web 3D 的 API 还会提供一个类似于 Flex Viewer 的 3D Viewer,实现 3D 应用的快速搭建。3D 的 API 紧密的跟 Esri 的 CityEngine、ArcGIS Server 结合在一起,实现从建模到服务再到应用的一体化。

InfoQ:我们知道,现在移动终端发展很快,iOS、android 两大平台的 JS 运行时差别较大,很多标签和接口的执行效果差别明显,webkit 内核的实现在各个平台上都有所不同,性能差异很大。 那么,基于 ArcGIS 的 JS API,在移动终端有哪些特殊的性能优化、机型适配方面的考虑呢?

何超:为了适配移动端的需求,ArcGIS API 针对移动互联网做了很多的优化。首先就是对 API library 的大小进行了优化,提供 Compact 版本的 API(~125kb)。至于浏览器和平台的差异,mobile 版本的 API 也是基于 dojo mobile 的,所以这种浏览器的差异性就交给 dojo 来处理,可以说 Dojo 支持的移动设备我们 API 都是支持的。可以使开发者尽量少的去关心浏览器的差异,实现对开发者的友好。

举个例子来说,ArcGIS API 在不同的平台上采用什么样的绘图引擎来绘制 2 维地图?我们知道不同 webkit 上在 2D 绘图上的选择是很多,可以用 Canvas、可以用 SVG,那对于不同的平台究竟用那一种?针对这种问题,ArcGIS JS API 会基于 dojo 提供的 dojo.gfx 根据浏览器的不同来自己去判断、选择最适合该浏览器的绘图引擎。

再举个例子,ArcGIS API 在 PC 浏览器上的信息弹出窗口 POPUP 和 InfoWindow 是很大很大的一个 div,但是 Mobile 版本的 API 针对移动设备屏幕小的特点,提供了 Infowindow lite 和 mobile popup 这两个 widget。

在对移动设备的兼容性上,目前 3.5 版本的 API 实现了对 Android 2.2+、Blackberry 6+、iOS 3+ 等平台的全覆盖。此外,esri 还体现了极大的兼容性,可以用在其他的移动端框架譬如(Sencha Touch、jQuery Mobile)的时候来调用我们的 api。所以,可以说 api 在对移动设备的兼容性还是很好的。

InfoQ:ArcGIS 功能强大,但是如果使用正版,需要很高的费用,不知在 JS API 方面的收费情况是怎样的?未来会以怎样的形式与互联网公司合作?会成为一个独立运营的平台吗?

何超:ArcGIS 一直对开发者十分友好,所以 JS API 在用作开发、测试、评估等非商业用途的时候,是不收取开发者任何费用的。对于利用 JS API 开发的网络 APP 或者是移动 APP 需要用于商业用途的时候,则需要购买 ArcGIS Server 或者是需要购买 ArcGIS Online 的订阅(subscription)。 Esri 一直以积极、开放的姿态,期待并正在与一些互联网公司展开合作。GIS 中不仅仅有地图,在地图之外,还有地理,人文地理、自然地理、经济地理等。Esri 希望依托 ArcGIS Online 这个云 GIS 平台,结合 ArcGIS 的强大的地理分析、预测功能,为互联网公司提供除地图之外的,更多专题信息、更多具有“地理”印记的信息。

2013-06-14 00:198358

评论

发布
暂无评论
发现更多内容

MES管理系统:解决排产难题,提升企业竞争力

万界星空科技

生产管理系统 mes 制造业工厂 生产排班排产 智能排产

INFINI Console 系统集群状态异常修复方案

极限实验室

Kubernetes operator arm64

问界M9硬件升级的背后,藏着汽车的原子化之梦

脑极体

AI

等保二级与三级的深度剖析:差异究竟在哪?

黑龙江陆陆信息测评部

MCP详解及手把手实战

知识浅谈

MCP MCP协议

deepseek如何制作ppt?DS高级使用技巧盘点!

职场工具箱

PPT 办公软件 AIGC AI生成PPT DeepSeek

AI智上 | 数智预算:业财数融 智算未来

用友智能财务

[几种方法]手机号码批量导入手机通讯录的三种超简单方法,适用于苹果iphone安卓手机华为小米手机等导入联系人号码

一码平川

展开华为风帆,航向全球金融

脑极体

AI

又来一个挑战 Elastic 的,初识 SigLens

巴辉特

elasticsearch SigLens

2025 腾讯云城市峰会 •成都峰会 Al+办公协同创新专场 智启未来办公 驱动提效增长

人称T客

BOE(京东方)携手国家大剧院打造话剧《林则徐》第二现场

科技大数据

Arthas trace (方法内部调用路径,并输出方法路径上的每个节点上耗时)

刘大猫

人工智能 机器学习 大数据 Arthas 大模型

《人民日报》:助力高校毕业生高质量充分就业

Y11

面试 找工作 简历 实习 校招

征程 6 VIO通路断流分析

地平线开发者

自动驾驶; 算法工具链 地平线征程6

漫谈PID,聊聊实现与调参原理

芯动大师

Langchain快速入门: 一行代码实现流式输出

AI时代的一滴水

Python AI #LangChain LLM模型

GPT-4 即将退役,你准备好迎接 AI 的下一波冲击了吗?

测试人

人工智能

【HarmonyOS 5】makeObserved接口详解

GeorgeGcs

相得益彰 — 基于 GraphRAG 事理图谱驱动的实时金融行情新闻资讯洞察

亚马逊云科技 (Amazon Web Services)

【HarmonyOS 5】VisionKit人脸活体检测详解

GeorgeGcs

MySQL性能飙升10倍的终极优化!架构设计实战,让数据库永不崩溃

程序员高级码农

Java MySQL 面试 :MySQL 数据库

Nessus Professional 10.8.4 Auto Installer for macOS Sequoia

sysin

Nessus

KWDB MCP Server:解锁 LLM 与数据库的无缝协作

KaiwuDB

数据库

《Operating System Concepts》阅读笔记:p748-p748

codists

操作系统

1688代采系统功能深度解析(二):从技术角度揭秘“一键下单+批量采购”如何重塑采购效率

代码忍者

1688代采集运系统

英特尔和海信联合发布的会议垂域模型让商务会议更加安全智能

E科讯

轻松拥有企业AI大脑,英特尔与MAXHUB共同发布AI PC

E科讯

【签约】安兰携手第七在线 共启智能供应链新纪元

第七在线

征程 6|部署模型尾部 conv 输出 type/layout/scale 解读

地平线开发者

自动驾驶; 算法工具链 地平线征程6

征程 6 VIO通路断流分析

地平线开发者

自动驾驶; 算法工具链 地平线征程6

Esri何超谈基于ArchGIS的 Javascript API_语言 & 开发_李雪韬_InfoQ精选文章