2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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:198301

评论

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

绝杀!3位阿里大牛发布这份800页MySQL性能优化法则笔记

Java 程序员 后端

网关性能大PK,Spring Cloud Gateway让人大失所望!,java教程pdf百度云下载

Java 程序员 后端

系统性能百倍提升典型案例分析:高性能队列Disruptor(1)

Java 程序员 后端

终于彻底搞清楚了 MySQL spin-lock 之一次CPU问题定位过程总结

Java 程序员 后端

老生常谈:MySQL高可用,java泛型原理

Java 程序员 后端

终于等到了!十位Java架构师整理的“阿里P7,看完老板哭着让我留下来

Java 程序员 后端

缓存穿透及解决方案(干货篇),java基础入门第二版第二章答案

Java 程序员 后端

网络协议从入门到底层原理(5)传输层,java编程项目实例教程

Java 程序员 后端

老板,运维和开发又打起来了!,你连基础的JVM运行时内存布局都忘了

Java 程序员 后端

聊聊MyBatis的历史,mysql原理详解

Java 程序员 后端

系统性能典型案例分析:高性能队列Disruptor,一文深入理解

Java 程序员 后端

系统性能百倍提升典型案例分析:高性能队列Disruptor,linux服务器架构师

Java 程序员 后端

群晖DS218+做maven私服(nexus3),mysql性能调优

Java 程序员 后端

精雕细琢!阿里大师53天悉心打磨出来的MyBatis+设计模式架构指南

Java 程序员 后端

网页制作工具之------Dreamweaver界面,springmvc教程下载

Java 程序员 后端

线上环境大规模RocketMQ集群不停机优雅升级实践,面试字节跳动Java工程师该怎么准备

Java 程序员 后端

终于彻底搞清楚了 MySQL spin-lock 之一次CPU问题定位过程总结(1)

Java 程序员 后端

[ CloudWeGo 微服务实践 - 04 ] 尝试操作数据(1)

baiyutang

golang 微服务 10月月更

老大让我优化数据库,我上来就分库分表,他过来就是一jio

Java 程序员 后端

老夫面试两个月真实经历:面试了20家大厂之后,发现这样介绍项目经验

Java 程序员 后端

老面试官问我:LRU 和 Innodb Buffer Pool 有什么关系?

Java 程序员 后端

算法宝典最新分享:Alibaba+小米,redis笔记

Java 程序员 后端

精心整理全网最全Tomcat面试专题及答案(共19题,含答案解析

Java 程序员 后端

美团二面:聊聊线程池设计与原理,由表及里趣味解析,linux操作系统实用教程课后答案

Java 程序员 后端

精通springcloud:服务发现,Eureka API,java技术上难以解决的问题

Java 程序员 后端

网络协议从入门到底层原理(11)网络爬虫,线程池底层实现原理

Java 程序员 后端

系统性能典型案例分析:高性能队列Disruptor,一文深入理解(1)

Java 程序员 后端

绝了!你一直想要的数据库界的里程碑,Alibaba技术官内部私藏MySQL笔记

Java 程序员 后端

网络编程六-网络编程相关面试题汇总,nginx运行原理

Java 程序员 后端

类加载器深入剖析,2021最新华为Java校招面试题

Java 程序员 后端

精心备战30天,三天斩获阿里offer,揭秘面试流程及我的学习方向

Java 程序员 后端

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