【超详细】小白初探FME--获取等时圈

news2024/11/29 9:42:50

91b1ac5c706e13f71272499d8eb0e146.png

在规划分析过程中,往往会涉及等时圈的概念。什么是等时圈呢?小编帮你百度过了,网上的说法是:等时圈是指从某点出发,以某种交通方式在特定时间内能到达的距离覆盖的范围。比如我们在规划设计中接触到的15分钟生活圈就是等时圈的一个具象应用。说到这里有朋友就疑惑了,我们怎么去获取等时圈呢?获取等时圈的方法有很多种,最常见的就是以下几种:

(一)无中生有,自给自足。

自给自足,很明显就是自己生成。当然,巧妇难为无米之炊,因此我们必须要准备一些 基础数据,包括道路矢量数据以及我们的设施点,而煮饭的工具小编推荐用ArcGIS网络分析工具中的服务区分析。具体步骤可以参考这一篇文章(设施服务区分析——5分钟服务范围)。但这种方法对数据基础的要求很高,路网构建得越接近现实,分析结果越精确,但在实际过程中很难保证我们的路网能百分百模拟真实路况,因此我们需要借助大数据平台的算法,来尽可能获取最接近实际的结果,例如百度地图、高德地图、mapbox等在线地图平台。

(二)站在巨人的肩膀上,拿来吧你。

今天小编主要介绍一下用FME来获取高德地图等时圈的思路和具体步骤,主要参考这一篇博客https://blog.csdn.net/fmechina/article/details/105566627,这篇博客的思路非常清晰,但是很多细节都没有展现出来,本期小编就帮大家翻译一下,让这篇推文变得更加的通俗易懂。悄悄告诉你,后台回复“等时圈”获取模板。

3750df7c50b27e83c56aed121a1cc140.png

3ccd486ff131792f287d95c68fb94e4c.png

进入主题

bc1edbb54a5ab4ab2c0e46dd451423d5.png

【整体思路】

1.构建起点坐标对并创建用户参数;

2.构建终点坐标对;

3.发送调用服务请求并解析JSON

4.创建等时圈并导出为shp       

【具体步骤】

接下来我们以长沙火车站15分钟等时圈为例,来具体认识一下FME在获取网络数据中的魅力。本篇教程主要针对的是像我一样的小白,所以我会在流程中先讲解每一步的思路,再一一介绍我们用到的转换器,因此篇幅稍微长一点。

1

构建起点坐标和创建用户参数

6a86dc114a228aef968751e8e827299a.png

首先新建几个必要的用户参数。用户参数(user parameters)是FME为用户提供的参数,是为最终用户使用工作空间提供的输入接口。通俗一点讲,这些参数是贯穿整个程序的,因此我们提前准备好。我们只需右键导航窗口(Navigator)下的用户参数(user parameters),在弹出窗口中填入参数名称、别名、勾选必填,设置默认值为500(也可不设,不设的情况下在运行程序时会提醒设置)。依次添加OriginLonLat(起点经纬度)、Radius(预估半径)、Grid(网格密度)、Amap_Key(高德密钥)、Transportation(出行方案)等必填参数。其中,Amap_Key(高德密钥)需要去高德地图API控制台申请。

65bea3ae1939ee073a1924abe4ed3d67.png

be65e8a04da697100a8becec3b5ee5d6.png

其次在高德地图坐标拾取器https://lbs.amap.com/tools/picker中搜索我们的分析对象坐标,比如长沙火车站,将获取到的坐标复制到OriginLonLat(起点经纬度)参数中去。

73b6c065c957836de08045983693eb55.png

【Creator】用提供的参数来创建要素,并将这些要素发送到工作空间中进行处理。

c419794bd39a4731154bc9effc6466a2.png

【ParameterFetcher】给要素添加一个属性并用先前发布的参数赋值。这里我们主要是为了获取用户参数到要素中。

7cb16e26fa392d03ff6a9f5c5ca76ecb.png

【AttributeSplitter】把选择的属性分离成一个属性列表。列表中的每一项都包含一个从列表中分离出的单个令牌。例如,你可以用这个转换器,把一个含有分隔逗号列表的属性分离成其组件。这一步主要是为了将起始点坐标对隔开存入列表中备用。

46f2bbbc21c62130924f672e07638eca.png

【VertexCreator】将坐标附加到空(Null)、点、文本、线和弧等几何对象上,或者用点对象替换现有图形对象。这一步就是为了创建起点要素。

985cf37b5909b446eae5470133fe248e.png

2

构建终点坐标对

构建终点坐标对的思路是基于我们的起点创建一个大致的缓冲区作为预估范围,缓冲区半径是根据我们分析需求来确定(比如我们想要获取15分钟骑行等时圈,则根据15分钟骑行大约3000米的标准来确定阈值),其次是在这个缓冲区范围内创建一个网格,提取其网格中心点作为出行的终点,网格的大小决定了等时圈的精度,但受调用次数的限制,我们退而求其次尽量取合适的精度。

4e3fe729b8c6c2a1ced8a7fbb865cd01.png

【EsriReprojector】使用ESRI重投影库,把要素的坐标系重投影到另一个坐标系统。这里是因为后面创建缓冲区和网格的时候需要在平面坐标系下进行。

9f532e37353b9c49ffdddcda80ed499e.png

【Bufferer】在输入几何对象周围或内部创建指定大小的缓冲区。

3a0219fab74dced3d49905ea5ffaac9e.png

【2DGridCreator转换器】用一个由二维点或者矩形形成的网格取代原来的输入要素,这些网格有指定的间距且覆盖所有进入此转换器的要素的整体外接区域。这里我们主要用于创建网格。

ec71cfa737e86d1e9eb32d813e8d8767.png

【SpatialFilter】根据空间关系过滤点、线、面或文字等要素。每个输入候选(CANDIDATE)要素与所有过滤(FILTER)要素进行比较,基于给定的空间测试条件来判断是否满足。这里主要用于提取缓冲区范围内的网格,可大幅减少后面调用高德服务的次数。

e2a272f2027ce0e6cf96ac35d71c35a8.png

这一步将投影转换回WGS84是为了提取十进制度坐标值(高德地图采用的是火星坐标,火星坐标系是在GSP原始定位数据的基础上经过加密算法加密之后的定位数据所属坐标系,GSP原始定位数据所属坐标系叫WGS-84坐标系,WGS-84坐标系是美国国防制图局于1984建立的世界大地坐标系(World Geodetic System)的简称,出于安全考虑,我国国家测绘局规定国内必须对原始GSP数据进行加密,加密之后的坐标系就是GCJ-02坐标系,又叫火星坐标系。)

045ee0b09f4ee2caefbcfee943b4e9d9.png

【CenterPointReplacer】用几何要素的中心点替换几何要素,该点或者位于要素范围的中心,或者位于要素的质心。这一步是为了生成网格中心点,将其作为路径的终点。

4c8636560eadd9686b47a18010781832.png

【CoordinateRounder】将要素坐标舍入到指定的小数位数。由于舍入而成为重复的任何连续点都将通过删除多余的点来细化。这一步是为了满足高德地图调用服务的条件(经纬度小数点不超过6位)。

a106f2a0afbe19685fb648527b75b7f3.png

【CoordinateExtractor】按指定的索引检索坐标点XYZ值存储到属性字段中。这里是为了将终点的XY值提取到属性表中。到此完成终点构建。

13b8eca8663383d35ca421a894f0be61.png

3

构建URL、调用服务并解析结果

完成起点和终点的构建后,就可以开始正式请求高德地图的服务了,模板如下。

0cf230a1bcb003d21df6656805059407.png

【AttributeCreator】给要素添加若干属性,并通过常量、属性值、表达式为属性赋值。属性值可以参考相邻的要素。这里我们主要用于构建URL(URL:统一资源定位符是WWW的统一资源定位标志,就是指网络地址)。

054766d75d5cb65acff603c67c51f34d.png

参照高德API调用示例将其属性值设置为:

“@Value(_transportation)origin=@Value(_OriginLonLat)&destination=@Value(destination{0}.x),@Value(destination{0}.y)&key=@Value(_Amap_Key)”。

57c457e5a7c18613a955345d0f2a3661.png

【HTTPCaller】通过HTTP或HTTPS访问URL,执行一个GET,PUT,POST,DELETE或HEAD操作。通过这一步去调用服务。请求URL设置为:

“https://restapi.amap.com/v4/direction/@Value(_URL)”,结果保留至属性即可。

52b8db810d2ee278e1506d084c530828.png

b73c08c53053cd96532c85ac979d58de.png

上一步跑完后,如果成功的返回的值就会保存在“_response_body”字段中,这时我们需要对其进行解析,用到【JSONFragmenter】转换器,提取部分JSON格式化文本到新的FME的要素中。从示例中可以分析出,我们需要的时间藏在了“data”下面的“paths”中,因此,“JSON Query”的值设置为“json["data"]["paths"][*]["duration"]”,运行后,“_response_body”的值直接会被替换为"duration"(总用时)。到此就完成了数据的获取。

47e9262a257190772b1f56e9ece50e31.png

c62c64dd634e9914d668348eca5850a2.png

【AttributeRemover】从要素中删除选定的属性和列表属性。这一步是为了删除冗余的字段,提高运行速度。

ebf2b911652ab6148323d56e1bb522e2.png

4

构建等时圈并导出shp

完成数据获取后,我们得到了起点到每个终点对应的出行时间,但网格点是离散的,因此我们需要将其模拟成连续的表面,再来提取等值线作为等时圈,这就跟高程点生成等高线一个道理,模板如下:

08586db139b143811b83ef6f790564e0.png

【3DForcer】通过给每个坐标添加z值,把二维数据转换为三维数据。这里是为了将“duration”赋值给网格点的z值,使其具有三维属性。

9b0c91653850b363a692d09d70973c56.png

这一步是为了将其投影至平面坐标系,方便模拟运算。

72263f00ee045724d69be42fdd95881a.png

【SurfaceModeller】基于输入的点和断裂线构建Delaunay三角格网。当需要同一模型多个表达形式时这个转换器很有效。这里就是生成连续表面的过程,有几种输出结果,我们需要其中的“contour”,也就是等值线。

a04861cc220d39a5f13cbc4dfb1c64d6.png

【AreaBuilder】获取一系列拓扑上连接的线,当线形成首尾闭合时创建拓扑正确的多边形要素。这一步是为了将封闭的等值线筛选出来并转换成面要素。到这一步我们已经得到了预估范围内的所有等时圈。

71f21f824316d0da9f50fde0362e5070.png

【Tester】执行要素的一个或多个测试条件,根据测试的结果决定要素的输出。判断可由任何FME允许的操作符组成。这一步是为了筛选出我们所需要的等时圈,比如15分钟(900秒),我们只需筛选出“_elevation”小于等于900的即可。

a93d43a2fddf5a8a8c31c10540285bab.png

最后通过写模块将结果输出为shp,大功告成,打完收工d653558ecde81b8d910ec35460fa2e38.png4c984b43c5ad753c80d0cbc5bf3b66cd.png6a18810f944384ae3709146191cd3801.png

5c63e92e116d96a83b635150d6eb8e0b.png

最后看一看效果,可以直观地了解火车站的15分钟骑行圈。

8c8eda9aad57ff5ab481615546cbec41.png

再次悄悄告诉你,后台回复“等时圈”可以获取模板8053fb2e8fbe322ece2e51907d4ae55b.png

5529ad5953e3ca26f16af4ded7149f26.png

点个在看你最好看

另外我悄悄地创建了一个知识星球供大家交流学习,本知识星球致力于分享GIS软件知识干货,并结合实际案例,让小白上手快。日常分享规划知识,并结合GIS在规划场景中的应用案例,不管是规划中的GISER,还是GIS路上的规划人,永远不迷路。

在这里你将有3大收获:

1.系统全面地了解和学习GIS软件操作及应用; 

2.可个性化定制专属服务; 

3.与广大同行朋友进行深入交流,交换知识。

0e948c04ec3fd1a0454f82a75a3a317b.png

还有限量大额优惠券限时供应,冲冲冲!

71e28f73e523cfeeab8f7e7681403061.png

更有来自不同领域的嘉宾为您现场解答,还在等什么,快加入进来和大佬们一起探索吧!!!

7a23bac2fcfe357a2e3e0ca1b71378c4.jpeg

format,png

format,png

往期精彩推荐

format,png

format,png

format,png

地形图制作

交通可达性分析

设施服务区分析

人口重心迁移地图

ArcGIS制图之桂林山水

outside_default.png

扫描二维码获取

更多精彩

outside_default.png

凌晨GIS

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/416739.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTML5支持的视频文件格式和音频文件格式有哪些?

在 HTML5 标准中, 我们有了新的 <audio> 和 <video> 标签, 分别可以引入视频和音频文件的标签 那么这些标签又可以支持哪些文件格式呢 ? 格式支持 视频文件格式 MP4&#xff1a;MPEG-4 Part 14&#xff0c;支持H.264编码。几乎所有的浏览器都支持该格式。 Web…

springboot+netty+mqtt实现

具体实现前言MQTT协议概念组成部分实现mqtt协议测试其他前言 首先说明一下&#xff0c;netty实现并封装了mqtt协议&#xff0c;同时也为其写好了编解码器&#xff0c;但是再了解并搭建之前&#xff0c;尤其是还不了解netty和mqtt的同学&#xff0c;必须要清楚一件事&#xff1…

2023MathorCup数学建模比赛的思路汇总帖

更新时间【4.13 19&#xff1a;45】ABCD均已更新&#xff0c;选题指导已更新&#xff0c;速看&#xff01;后续会出各题详细思路及代码&#xff01; 这里是小云的2023MathorCup数学建模比赛的思路汇总帖&#xff0c;比赛开始后将实时更新~ 竞赛共4道题目&#xff08;A题、B题…

ELF 文件格式 ------- 符号表

1. 符号的数据结构 typedef struct elf64_sym {Elf64_Word st_name; /* 该符号的名字在字符串表中的起始下标 */unsigned char st_info; /* 该符号的类型以及作用域信息 */unsigned char st_other; /* 暂未使用 */Elf64_Half st_shndx; /* 该符号所在的 section 的下标&…

IDEA安装spotbugs插件替代findbugs插件

相信最近想在IDEA上安装findbugs插件的朋友&#xff0c;遇到与我一样的问题&#xff0c;findbugs与IDEA不兼容&#xff1a; https://plugins.jetbrains.com/plugin/3847-findbugs-idea 主要是FindBugs插件已经不更新了&#xff0c;它最新版本停留在2016年发布的1.0.1&#xff0…

百度文心一言可以完胜ChatGPT的4点可能性

文心一言&#xff0c;百度全新一代知识增强大语言模型&#xff0c;文心大模型家族的新成员&#xff0c;能够与人对话互动&#xff0c;回答问题&#xff0c;协助创作&#xff0c;高效便捷地帮助人们获取信息、知识和灵感。但说实话&#xff0c;很多人拿他与ChatGPT相对比&#x…

RabbitMQ( 发布订阅模式 ==> DirectExchange)

本章目录&#xff1a; 何为DirectExchangeDirectExchange具体使用一、何为DirectExchange 在上一篇文章中&#xff0c;讲述了FanoutExchange&#xff0c;其中publish向交换机发送消息时&#xff0c;我们并没有指定routkingKey&#xff0c;如下图所示 我们看看官方文档 之前使…

【教学类-32-01】十二生肖1.0版(绘画+手工+排序+分类+玩牌)(中班:偏科学-数)

作品展示 背景需求——从数字到图片 最佳孩子们做Python纸类&#xff08;数学&#xff09;的频率比较高。但都是数字类&#xff08;加减法、门牌号、火车箱、电话号码等&#xff09;我想翻新花样&#xff0c;设计新的内容&#xff0c;就想到了水果图片、动物图片。 百度图片找…

大数据技术之DataX

目录 第一章 业务数据同步策略 1.1 全量同步策略 1.2 增量同步策略 1.3 数据同步策略的选择 第2章 DataX介绍 2.1 DataX概述 第3章 DataX架构原理 3.1 DataX的设计理念 3.2 DataX框架设计 3.3 DataX支持的数据源 3.4 DataX运行流程 3.5 DataX调度策略思路 3.6 Data…

数据结构和算法学习记录——二叉树的存储结构二叉树的递归遍历(顺序存储结构、链表存储结构、先序中序后序递归遍历)

目录 顺序存储结构 链表存储结构 二叉树的递归遍历 先序递归遍历 中序递归遍历 后序递归遍历 先序遍历路线图 中序遍历路线图 后序遍历路线图 设想一下二叉树要用什么样的方式来存储&#xff0c;一种是用数组&#xff0c;一种是用链表。 顺序存储结构 用数组&…

IDEA新手入门常用快捷键,方便软件构造

1. Ctrlo快速找方法 2. Alt EnTER 对这个代码快速智能补全trycatch 对这个快速加入要写的接口方法show 3. 使用Ctrl /&#xff0c; 添加行注释 4. 输入psvm 按Tab&#xff0c;自动生成void main 输入souf 按Tab就是System.out.printf() 5. CtrlF12 查看参考代码内部方法…

「她时代」背后的欧拉力量

2018年大热电视剧《北京女子图鉴》&#xff0c;讲述了一群在北京打拼的职业女性&#xff0c;她们背井离乡&#xff0c;被现实包裹&#xff0c;被压力、责任困扰&#xff0c;但依旧用倔强的个性、不屈的进取心和深厚的知识技能努力营造、交织出一片励志的天空&#xff0c;既激昂…

HIT 计统实验2 二进制炸弹(gdb破解版) 拆弹过程

CSAPP 实验2是一个很好玩的实验,网上有很多参考资源写的都很好&#xff0c;本文增加了一些具体细节。 想要我的炸弹可以私信我。 还得看形式语言 &#xff0c; 炸弹6 7 有时间再拆 第1章 实验基本信息 1.1 实验目的 熟练掌握计算机系统的ISA指令系统与寻址方式熟练掌握Linu…

ChatGPT/InstructGPT论文(一)

文章目录一. GPT系列1. in-context learning&#xff08;情景学习&#xff09;二. ChatGPT背景介绍&#xff08;Instruct? Align? 社会化?&#xff09;三. InstructGPT的方法四. InstructGPT工作的主要结论五. 总结六. 参考链接一. GPT系列 基于文本预训练的GPT-1&#xff…

LeetCode 218. 天际线问题

城市的 天际线 是从远处观看该城市中所有建筑物形成的轮廓的外部轮廓。给你所有建筑物的位置和高度&#xff0c;请返回 由这些建筑物形成的 天际线 。 每个建筑物的几何信息由数组 buildings 表示&#xff0c;其中三元组 buildings[i] [lefti, righti, heighti] 表示&#xf…

76-TCP协议,UDP协议以及区别

TCP协议,UDP协议,SCTP协议一.TCP协议1.什么是TCP协议2.TCP协议的特点3.TCP头部结构4.TCP状态转移5.TCP超时重传二.UDP协议1.什么是UDP协议2.UDP协议的特点三.TCP和UDP的区别一.TCP协议 1.什么是TCP协议 TCP(Transmission Control Protocol)协议即为传输控制协议,是一种面向连…

4.12~(小组成员对话预习)

注意我们这里观察的是XP的kernel32.dll&#xff0c;到win10是有变化的 看了这个函数&#xff0c;似乎是让BasepExeLdrEntry不存在的时候初始化一遍&#xff0c;然后进行对比是否已经加载过这个dll&#xff0c;那么如果加载下一个dll的时候&#xff0c;BasepExeLdrEntry是不是还…

05-vue3的生命周期

文章目录1.生命周期定义钩子函数2.vue3中的生命周期1.普通写法2.setup中写生命周期区别1.生命周期定义 每个 Vue 实例在被创建时都要经过一系列的初始化过程。 例如&#xff1a;从开始创建、初始化数据、编译模板、挂载Dom、数据变化时更新DOM、卸载等一系列过程。 我们称 这一…

【MyBatis】你还不会使用MyBatis逆向工程来提高你的开发效率吗?

文章目录MyBatis逆向工程1、快速入门2、逆向工程配置文件参数详解3、QBC查询MyBatis逆向工程 正向工程&#xff1a;先创建Java实体类&#xff0c;由框架负责根据实体类生成数据库表&#xff08;Hibernate是支持正向工程的&#xff09;逆向工程&#xff1a;先创建数据库表&#…

Vue3技术2之ref函数、reactive函数、Vue3中的响应式原理

Vue3技术2ref函数处理基本类型App.vue处理对象类型App.vue总结&#xff1a;ref函数reactive函数只能修改对象类型App.vue完善代码App.vue总结&#xff1a;reactive函数Vue3.0中的响应式原理回顾Vue2的响应式原理Vue3响应式原理模拟Vue2中实现响应式index.html模拟Vue3中实现响应…