kikita & Maps

GIS,spatial and artificial intellegence learning and share

HERE Data Hub 是一个用于空间数据存储的云服务,能够使用户简便地访问、管理空间数据。上一篇 HERE Studio 就是构建在 Data Hub 之上的网页应用程序。

Data Hub CLI (Command Line Interface)是基于 Node.js 的命令行接口,可以帮助用户进行一些数据管理方面的交互操作。


1 如何安装 ?

1.1 安装 Node.js 和 npm

安装方式很多种,我直接搬运了 Hexo 官网 的安装指引。当年搭我这个博客时参考过,简洁好用,五星推荐:

Node.js 为大多数平台提供了官方的 安装程序
对于中国大陆地区用户,可以前往 淘宝 Node.js 镜像 下载。

其它的安装方法:

  • Windows:通过 nvs(推荐)或者nvm 安装。
  • Mac:使用 HomebrewMacPorts 安装。
  • Linux(DEB/RPM-based):从 NodeSource 安装。
  • 其它:使用相应的软件包管理器进行安装,可以参考由 Node.js 提供的 指导

对于 Mac 和 Linux 同样建议使用 nvs 或者 nvm,以避免可能会出现的权限问题。

验证 Node.js 安装成功。 命令 node -vnpm -v ,看到当前版本号即可:

1
2
3
4
5
C:\Users\xiamu>node -v
v10.16.3

C:\Users\xiamu>npm -v
6.9.0

1.2 安装 Data Hub CLI

使用如下命令完成 Data Hub CLI 安装。

1
npm install -g @here/cli

提示:全局安装在某些环境下,需要管理员权限。

验证 Data Hub CLI 安装成功, 输入命令 here -V :

1
2
C:\WINDOWS\system32>here -V
1.5.1

2 连接 HERE 账号

安装部署成功后,连接 HERE Developer 账号,从而管理自己账号下的项目和数据集。使用命令 here configure account

1
2
3
4
5
6
C:\WINDOWS\system32>here configure account
prompt: Email: sharon.mu@here.com
prompt: Password:
Secrets verified successfully
Add-on features enabled.
Default App Selected - oyNWTbKIov6XPMlrXxCH

连接成功后,你的账号配置信息会加密存储在当前系统账户目录下,文件名为:**.herecli** 。

命令 here configure verify 来验证当前 credentials 是否有权限使用 Data Hub APIs。


3 常用命令

Data Hub CLI 的命令都遵循如下格式:

1
<HERE command> <API command>

常用命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
C:\WINDOWS\system32>here -h
Usage: here [options] [command]

Options:
-V, --version output the version number
-h, --help display help for command

Commands:
configure|c [verify|refresh] setup configuration for authentication
xyz|xs [list|create|upload] work with Data Hub spaces
studio [list|delete|show] work with HERE Studio projects
transform|tf [csv2geo|shp2geo|gpx2geo] convert from csv/shapefile/gpx to geojson
geocode|gc geocode feature
help [command] display help for command

示例:

  • List All Spaces – here xyz list

  • Create a New Space

    1
    here xyz create -t "title for space" -d "description for space"
  • Upload Data to a Space, Geojson/CSV/Shapefile……

    1
    here xyz upload YOUR_SPACE_ID -f /Users/xyz/data.geojson

更多命令示例,详见文档: HERE Studio and HERE Data Hub - Commands


4 Source Code on Github

Data Hub CLI 是 HERE 官方提供的跨平台的开源库,如果感兴趣可以扩展定制的其功能。

heremaps/here-cli https://github.com/heremaps/here-cli

可能国内并没有太多人知道, HERE 也有一款轻量级的地图在线应用程序 ,可以帮助用户管理自己的数据,快速配置出一幅看起来还不错的在线地图, 它叫 **HERE Studio**。

HERE Studio 提供了平台上的在线地图服务作为底图,并提供了常用的基础地图配置工具和样式,即使不愿意写代码,也可以配置出漂亮的地图; 当然,如果有更深入或批处理的数据管理和渲染需求,也可以使用 HERE Data Hub CLI 命令行或 RESTful API,Javascript API,因为 HERE Studio 本身就是基于 HERE Data Hub 的一个轻量级网页端应用。


如何获取 HERE Studio ?

首先,注册(Sign Up)或登录(Log In)HERE Developer 官网: developer.here.com

然后,创建 Project: ***developer.here.com/projects ***

这样个人 developer 默认就可以获得一系列的产品的试用 key, 例如 JS API, REST API, SDK 等。 当然,免费流量是有限制的,但对于个人developer了解功能做测试可以啦。

除了这些 key,免费账号中还有一个很低调的描述,以至于很多用户得了宝藏,还不知道是什么:

  • Data transfer per month 2.5GB
  • Database storage per month 5GB

YES, 这说的就是 HERE Data Hub, 包括 HERE Studio。

截止到今天,HERE Studio 的最新版本为 1.8.0。

最后,用 HERE Develper 账号登入: studio.here.com/studio


HERE Studio 可以做什么?

  • HERE Studio 提供了很多友好的地图数据管理与可视化的工具,能使用户便利高效地完成地图工作;

  • HERE Studio 提供了很多可供用户交互操作的 UI 组件,设置精细地地图样式就变得很容易啦, so easy;

  • 所有的地图数据基于HERE Server host 的云存储,实时交互;

  • 商业化服务环境的REST/JS API 和 命令行客户端工具 CLI可调用 HERE Studio 上传的数据。

  • 一键分布和分享给你的朋友或读者。


PS:

如果你从产品文档中,看到 HERE XYZ *** 等产品名称,请自动脑补映射到 HERE Data Hub / HERE Studio 即可。傲娇的产品技术团队就是这么任性,觉得产品名称不能表达他们当下的思绪时,那就改个名字吧。 开个玩笑,XYZ 是这个产品的曾用名,文档通用,大家读起来吧。

每过一段时间,对自己前一阶段工作和生活进行复盘,是很有必要的。目的很简单,总结既得经验,剖析问题原因,指导下个阶段更好地运行。

而更好的运行,才能给人带来持久的满足感和幸福感。


定义自己的工作

对于大多数人,工作占了人生的相当大一部分时间。所以先要充分理解这份工作,以及它将对自己的影响。家人经常问我,你是做什么的?我总是回答做地图搞IT云云… 但是面对自己,当然清楚行业名称并不是自己工作的JD。

简而言之,我在做的是一份以地图技术为中心的不断解决各种问题的IT类工作。problem solver 曾是我认为的别人贴给我的最佳标签之一,毕竟这个世界里 problem maker 太多了。


硬技能精进

Hard skill 方面,需要不断学习,拓展和精进产品技术。所有技术同学都懂,IT技术日新月异,一直学习都很难乘风破浪,何况随波逐流放弃治疗?任何一个”我知道”都不是信手拈来。

之前在esri的几年阅读英文技术文档的习惯对我有巨大的帮助,静心读文档解题总是会有助思路。前任和现任供职的这两家公司,有个共同特点,就是产品谱系庞大,产品名录远长于一般餐厅菜单,product manual 页数动辄几千,外加一个在线产品不断更新的developer portal。时间碎片,团队迷你,克服浮躁,学习速度和用户赛跑,都是重重挑战。

压力的边缘,心平气和地读完文档并研究解决实际问题,给我的是一种积极反馈。享受这个抽丝剥茧的过程,一旦上瘾也不好戒。技术工种必须保持学习,后面我会为自己分配的更多的学习时间来精进硬技能。摄入不够,输出就无力。


软技能提升

Soft skill 方面,是沟通和管理沟通。例如,常常需要同时至少面对3个客户企业,每个企业有2个人和我对接问题,那么外侧至少有6个人;几个问题并发,自己解决分析问题的同时,如有必要还要和不同国家不同技术团队沟通确认,内侧通常也会是同时几个人active;这是一个典型的 m:n relationship 多头沟通。

工作方式类似人肉版的 large-scale matrix routing 位置服务 ,我大概就是这些stakeholder们的沟通处理server,为每对匹配的Q&A 双方建立最佳路径。既要向内侧说清楚当前客户诉求,又要把解决方案客观得体地反馈给外侧,兼顾沟通过程对双方的正向促进。

如上已经是理想情况,实际环境中毕竟是多方沟通,各有各的诉求,各有各的boundary和scope,如何能平衡和管理期待,取最大公约数,也是需要推敲的困难模式。论如何优雅地argue。正如,在很多个因子的统计归一化过程中,每一个因子都必要而不突出了;每个因子的最优不一定是整个算式的最优。大家好才是真的好。

这个部分需要我自己时常剖析问题,完善自己认知体系,勾画个人边界,锻炼实践能力。既然是所有问题和人的接口和处理器,外部环境不以自己的意志转移时,只有通过自我提升才能优化性能。沿用企业文化金句:be true. be bold. win together !


平衡生活

疫情期间在家办公,无论主动被动,工作和生活搅在一起。遇到紧急状况,生活时间不得不被工作侵占,而这种侵占常常是无意识的。不知不觉错过吃饭休息时间,被家人催促和说教,而我又常常流露出不耐烦,差的脾气总是给了亲近的人。在孩子最淘气的 2,3岁都是父母在默默守护。我支持了所有别人,而家人默默地支持了我。仔细思考,这不是可持续的发展。好的状态是我们能自循环,而不是汲取与被汲取是不同方。所谓平衡生活,不是平衡自己的,是平衡一家人的。

厌恶标榜加班,尤其是自己在从事一份智力型工作。当出现模式化倾向,要思考陷入长期加班,是不是有什么系统性的问题?是不是模糊了某些边界和原则?是否还有合理改善的空间?如何能从本质上提高效率摆脱窘境?如果是,怎么做?如果否,现在怎么做?很多事情不是单纯延长工作时间本身能解决的。

能用智力解决的问题,不要只用体力;能用体力解决的问题,不要只用精力。越来越理解:成年人的世界没有容易二字。但是我和很多人有一样的执念,喜欢自己看起来游刃有余、举重若轻、深入浅出,而无需渲染背后的努力过程。

人的一生是方方面面的。 如何做一个有趣的人?至少做一个不匮乏不枯燥的人?这是我人生探求的方向。人生各个维度的积极力量是可以相互影响的。

没有什么大不了,趁着还享受现在的大多数时刻,及时地优化系统,清除垃圾,或许又是新的篇章。虽然我们没有以前那么年轻了,但现在已经是这一生最年轻的时刻了,去日无多,笃定前行。

“生活不息,折腾不止”,不然不可能怎么可能发生。

地图技术是对真实世界既有位置的表达,定位技术是对当前位置的求解。随着各种传感器、移动设备的广泛使用,GIS和LBS通常无缝结合在同一个解决方案中。GIS更侧重于稳坐后台解决空间数据的提取、处理、分析、挖掘,LBS更侧重于深入终端实现信号收集、位置获取、轨迹追踪。GIS从一个小众而专业的领域,随着互联网的潮流,逐渐拥抱普适,增值LBS。

从终端用户的角度看,这些区别是不敏感的,也不必要的。例如,在一个陌生地方到了饭点儿,估计大家十有八九会打开App,看下周边地图,知道我在哪,搜下周边饭馆,然后计算路线导航过去,吃饱喝足一气呵成即可。

以上面这个觅食的例子展开,从产品功能角度,至少需要如下几个模块。App首先获取设备的位置(positioning),通过这个位置请求周边map tile(map service), 然后搜索指定Category的POI(search&F/R geocoding),然后计算路线(routing/direction)并导航(TBT Navigation)……

这一篇我想整理一下,位置服务第一步, Positioning 相关的内容。

HERE Mobile SDK 中不仅提供了Android 系统中自带的基础定位接口,而且特别提供了HERE增强版的定位能力,更精准,高效,可靠。这些增强版的定位能力包括:

  • 蜂窝网络定位 - 支持 GSM, CDMA, WCDMA, TD-SCDMA ,LTE
  • WiFi 网络定位
  • 高精度室内定位 - 支持 WiFi 和 蓝牙
  • 离线定位 - 无任何网络连接时,使用预先按需自动下载的定位数据缓存、辅助定位数据,实现离线定位
  • 定位模式自动融合,择优切换, 包括 GNSS,WiFi,蓝牙,蜂窝信号间的切换
  • 室内定位 -支持于室内地图结合使用,支持楼层探测。 室内地图既可以是HERE已发布的公共资源,也可以是用户私属地图
  • HERE定位能力无缝覆盖全球

以上功能列表解释几个点:

GNSS(Global Navigation Satellite System)包括除了我们熟知的 GPS,还包括 GLONASS, Beidou,

QZSS, Galileo 这些星座。 HERE Positioning 产品族系中,还有可支持到芯片级的 HD GNSS / A-GNSS 产品,用于显著提高首次定位时间和GNSS离线辅助定位。这里不展开了,以后有空再约起。

WiFi离线定位,略复杂,是室内定位中成本较低的一种,不依赖于事先部署 Beacon。从使用者角度可以理解为两个使用场景:

  • 经常连接WiFi,有时断线使用,例如在办公室等熟悉场所。

  • 周围无熟悉WiFi,例如进入一个陌生的大型购物中心。

    前者可通过online WiFi定位的定位缓存数据解决离线问题;后者则需要大量的众包数据作为前提实现。

    后者是一种更黑科技的技术,但是从原理上也不是难于理解。 可以想象,大型购物中心通常布满 WiFi热点,移动设备即使无法连接这些热点,也可以探测到这些WiFi热点的信息。根据信号场强的算法黑科技,最终是从已知点位解算未知点位的数学问题。

    这里的问题是:已知点位怎么来?这正是源自众包、托关于定位服务器的 HERE Radio Map。采集和管理 Radio Map 实际官方也有给出工具 HERE Indoor Radio MapperHERE Radio Map Admin Tool

室内地图 /Venue Map,在实际的使用场景中,室内定位一般与3D室内地图结合使用,但始终要理解,地图是地图,定位是定位,只是为了终端用户的视觉显示时,二者才绑到了一起。室内地图的显示和制作也有单独的工具,点这里看官网。

定位部分的开发部署,强烈建议仔细阅读开发文档,有关设备访问权限的几点一定要确保配置正确。

  • HERE Mobile SDK - Developer Doc

  • HERE Mobile SDK on Github - Sample Code

可以带手机到室外和室内试一下这个Demo,支持选择定位模式。

上一篇,我们一起结合 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 还是占有一席之地。

现在回到 HERE Vector Tile Service ,为了方便客户快速生成 vector style configuration file ,HERE 提供了在线工具 Map Style Editor。可以在登录 Developer Portal之后,点击前面的连接进入即可,如下图:

  • Github 获取到 mSDK Android Lite Edition 在线地图的官方 代码样例

  • Developer Portal 定制地图渲染样式的 说明

Map Feedback

创建地图应用时,最常见问题之一就是“巧妇难为无米之炊” ,地图数据是“米”,之上的各种在线地图及位置能力的实现是“炊”。HERE 攒了30多年的数据采集经验,米仓充盈。在丰富的数据采集手段中,其中最平易近人的一支就是来自用户的数据问题回报。

无论是商业客户,还是免费社区,全球用户都可以使用 Map Feedback API 提出数据缺漏或错误。当然可想而知,整个群体数量非常庞大,数据生产单元会根据一系列的规则评定用户的信用优先级,来管理这些回报过来的数据问题的处理策略。

Rest APImobile SDKWeb SDK 各版本都有对数据回报的支持,其中最完整的开发文档,还是建议看 Rest API 的部分,它包含了全部可枚举的错误类型和信息上报的说明。用户也可以追踪数据问题的处理结果,例如,被采纳或拒绝,以及采纳后预计更新时间。

  • Rest API - Request URL 的请见 样例

另外,在HERE 官方地图应用中,Map CreaterHERE Wego 都包含了这个功能,只是这两个网站目前还在墙外,希望早日能与我们正式见面。

关于这两个服务就说这么多了,有空再继续进行下一集。

Stay tuned !

0%