首页城市开放数据基于路径规划API,使用F...

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

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

总体思路如下:

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

1.创建起点:

1.1 添加Creator转换器

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

1.2 添加AttributeManager转换器

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

1.3 添加VertexCreator转换器

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

1.4 添加CoordinateSystemSetter转换器

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

1.5 添加Reprojector转换器

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

2.获取目的地点坐标:

2.1 添加Bufferer转换器

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

2.2 添加2DGridAccumulator转换器

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

2.3 添加Clipper转换器

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

2.4 添加Reprojector转换器

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

2.5 添加CoordinateExtractor转换器

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

2.6 添加AttributeManager转换器

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

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

3.1 添加FeatureMerger转换器

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

3.2 添加Counter转换器

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

4.设置延迟处理:

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

4.1 添加RandomNumberGenerator转换器

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

4.2 添加RandomNumberGenerator转换器

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

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

5.1 添加HTTPCaller转换器

构建访问API的URL。

5.2 添加JSONFragmenter转换器

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

5.3 添加AttributeManager转换器

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

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

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

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

6.1 添加3DForcer转换器

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

6.2 添加Reprojector转换器

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

6.3 添加SurfaceModeller转换器

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

6.4 添加写模块

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

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

7.运行之后得到结果:

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

RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments