城市开放数据获取与分析

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

2019-10-10  本文已影响0人  进击的码农设计师

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

总体思路如下:

1.创建起点:

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

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

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

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

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

2.获取目的地点坐标:

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

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

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

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

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

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

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

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

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

4.设置延迟处理:

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

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

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

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

构建访问API的URL。

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

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

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

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

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

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

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

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

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

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

7.运行之后得到结果:

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

上一篇下一篇

猜你喜欢

热点阅读