基于路径规划API使用FME计算等时圈

本次依旧使用百度地图开放平台,这次使用路径规划API。
本次是计算驾车出行的等时圈,因此在路径规划服务文档中找到驾车路线规划部分。

总体思路如下:

  • 按照需求生成等时圈范围,并在其中均匀打点,将其作为目的地点;
  • 根据起点、终点的坐标值构建请求url访问API,得到时间参数;
  • 利用每个点的时间参数为值做插值分析,得到等时圈图。

1.创建起点:

  • 添加Creator转换器

使用Creator转换器创建一个新要素,参数默认即可。

  • 添加AttributeManager转换器

使用AttributeManager转换器添加起点坐标值,本次采用百度坐标以市政府作为起点,可以通过百度地图拾取坐标系统获得。

  • 添加VertexCreator转换器

使用VertexCreator转换器将添加的起点转换为一个点要素。

  • 添加CoordinateSystemSetter转换器

因为后续需要以起点为圆心做buffer,所以需要先为起点定义一个坐标系,然后将点变换为投影坐标系。

  • 添加Reprojector转换器

使用Reprojector转换器将点变换为投影坐标系。

2.获取目的地点坐标:

  • 添加Bufferer转换器

以起点为圆心做buffer,半径可以根据需要设定,此处以100KM为例。

  • 添加2DGridAccumulator转换器

安装上一步生成的buffer范围,划分网格,并且设置创建的网格类型为点,这样就生成了目的地点。
此处按照设置的格子数量进行划分,将其划分为60×60的网格。

  • 添加Clipper转换器

按照生成的buffer范围裁剪点,得到buffer范围内的点。

  • 添加Reprojector转换器

因为此时生成的点的坐标为投影坐标,需要使用转换器转换为经纬度坐标。

  • 添加CoordinateExtractor转换器

使用CoordinateExtractor转换器获取生成的每个目的地点的坐标。

  • 添加AttributeManager转换器

使用转换器对属性进行整理,只保留坐标值字段即可。

3.将起点和目的地点相连:

  • 添加FeatureMerger转换器

将起点和目的地点连接起来,使得每个目的地点上够连接上起点坐标。

  • 添加Counter转换器

为了区分每个目的地点,使用Counter转换器为每个目的地点创建一个ID(从1开始)。

4.设置延迟处理:

为了安全起见,添加访问延迟处理。

  • 添加RandomNumberGenerator转换器

RandomNumberGenerator转换器会生成一个随机数,根据分别设置最小值、最大值、小数点位数。

  • 添加RandomNumberGenerator转换器

设置延迟时间,选择上一步生成的_random_number属性值。

5.构建访问url并解析返回结果:

  • 添加HTTPCaller转换器

构建访问API的URL。

  • 添加JSONFragmenter转换器

不知道为什么使用JSONExtractor转换器后运行会在某一处报服务器错误的错误,但是JSONFragmenter转换器就不会出现这种情况,所以这里推荐使用JSONFragmenter转换器。
对返回的JSON进行解析,这里需要注意下语法问题(与获取{}里面数据不同的是获取[]里面的所有数据需要在后面添加一个[*])以及记得暴露需要的属性。

  • 添加AttributeManager转换器

进行属性整理,删除多余属性。

此时已经得到起点与所有目的地点间的距离以及花费时间。

6.根据时间值做插值分析,得到等时圈:

根据每个目的地点的时间值做插值分析,生成等时圈图,和ArcGIS中的插值分析一样。需要注意的是在做插值分析之前,需要转为3D要素。

  • 添加3DForcer转换器

根据时间字段,将要素转为3维要素。

  • 添加Reprojector转换器

因为后续做插值分析时设置的像元大小是以米为单位,因此需要先将要素转换为投影坐标。

  • 添加SurfaceModeller转换器

在转换器参数对话框中进行相关设置,其中,
表面容差————当点不是很多时,可以设置为0,就是每个点都参与插值计算,当点很多时,可以根据需要设置其他值。
输出DEM单元格x轴间隔、输出DEM单元格y轴间隔————也就是输出的栅格文件的像元大小,可以根据需要进行设置。
输出等高线间隔————此处就是等时线间隔,此处我们以1800秒,也就是半小时为间隔。

  • 添加写模块

添加一个shapefile格式的写模块,因为输出的属性默认为elevation,可以将其name修改为时间type修改为long(整数)

添加一个TIF格式的写模块,

7.运行之后得到结果:

后续可以使用生成的TIFF文件在ArcGIS中做进一步处理。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,175评论 1 32
  • d3 (核心部分)选择集d3.select - 从当前文档中选择一系列元素。d3.selectAll - 从当前文...
    谢大见阅读 3,518评论 1 4
  • 【Android 动画】 动画分类补间动画(Tween动画)帧动画(Frame 动画)属性动画(Property ...
    Rtia阅读 6,289评论 1 38
  • 本文首发于个人博客:Lam's Blog - 【OpenGL ES】入门及绘制一个三角形,文章由MarkDown语...
    格子林ll阅读 7,422评论 2 18
  • 这是猫猫推送的第1首歌曲 关于远方和思念 不知道你听过没 郭斯 远方 一段歌词 如下 湫水等微风 我在等你啊 一叠...
    文案猫猫阅读 1,691评论 0 0