HERE mSDK - Vector Tile / Map Feedback
上一篇,我们一起结合 Interactive Maps 了解了HERE Map Service 的地图渲染样式, 在此之外,HERE Mobile SDK 向开发者提供的在线地图产品中,还有 Vector Tile 和 Map Feedback service 值得拥有。
PS:除了SDK产品之外,HERE 在线地图产品中的 RESTful API 产品包括:Vector Tile,Image Map,Map Tile,Weather,Map Feeddback。
Vector Tile
Vector Tile 在 HERE 产品家族中是新进一员,截至此文章的发布日期,仅在 mSDK Lite 版本 中有支持,目前为 Lite Edition 4.2 。我们静待 mSDK Premium Edition 的 4.x 版本吧,快了。
这使用这个服务之前,可能我首先需要回答大家的十万个为什么。
例如,什么是Vector Tile?为什么使用 Vector Tile ?
Vector Tile 是相较于传统的 raster tile 而言的,可能很多读者会问,地图数据本身不就是vector data 吗?为什么早期的地图服务反而会是 raster tile ?哪种好? 我该用什么?
在传统的地图服务生产过程中,后台地图数据是专业复杂的数据格式(如 Oracle Spatial,shapefile,FileGDB,等一切地理数据格式),需要专业的重地图数据编辑器才能读写(如商用专业的ArcGIS Desktop/Pro,免费的QGIS等)。当我们希望通过B/S服务的形式提供在线地图时,对浏览器要求不高、支持友好的png,jpg,tiff等图片就成了解决方案。 将地图在服务器端按预定义的切片结构/caching scheme 进行预渲染,然后,进行大量切片缓存工作。 在浏览器请求地图服务时,推送不同层级的图片(Raster Tile)就成了传统地图服务器的日常,其性能的保障都是依赖分布式高可用的服务器配置。例如,HERE 提供覆盖全球的地图服务(在Developer Portal可以查看具体的 map coverage level,就是由部署在AWS全球6个数据中心上支持的。
自 Mapbox 提出更智慧的 vector tile ,这种切片格式早已备受各大GIS、LBS厂商的青睐。vector tile 采用了与 raster tile 类似的 caching scheme,只是每片tile的内容从raster 变成了vector。 我们想象一下,如果表示几条路的一片512px×512px 的tile,用raster格式,那就需要几个512×512 的矩阵表示,而用vector格式,只需要包含数对坐标和位移的串表示。 因此,vector tile 在尺寸上有明显优势,从而传输性能就高了。这是因为这个特性,vector tile 允许用户在客户端自定义 vector style ,例如路或点状地物的颜色和符号, 不像 raster tile 是预渲染的镜像,已经是静态结果,渲染样式不能被客户端修改。
如果提到vector 和 raster 哪个好? 我想答案可能不是绝对唯一的。如果从传输性能和客户端简单符号的自定义的角度,一定是vector tile更优; 但如果从地图渲染丰富度、复杂度的支持角度,raster tile 还是占有一席之地。