第8页
第4排
我在当地政府工作,我正在使用垃圾收集车的远程信息处理数据和我们的垃圾处理合作伙伴的地磅数据构建一份BI报告,以分析特定地理位置的居住垃圾的成分。
我们的垃圾收集车队上的远程信息处理系统可用于生成关于每个被提升的住宅垃圾箱位置的报告,包括日期时间,车辆登记和WGS84经纬度。
车辆每天在垃圾处理厂卸载几次,提供机票号码和重量,我们定期通过电子邮件接收的单个负载的类型和质量。这包括车辆登记和日期时间。
使事情复杂化;根据排队和故障情况,车队之间经常会交换车辆,可以帮助其他时间,反之亦然,有时还会使用备用车辆。这意味着不足以简单地将每天的垃圾箱提升总量与日期和车辆进行匹配。
我的解决方案是加入每个远程信息处理记录,其中一个箱子从地磅上被提升到特定的票上,当车辆下一次清空时,随着时间的推移,这将允许空间分析,指出将不可回收废物放入回收收集中的特定区域。
简而言之,我希望每个特定的垃圾箱升降机的点数据与装载货物的票号相结合。
我的主要问题是基于多个条件的连接,基于小于日期时间的联接,以及如何将两者结合起来。
如有任何帮助,我们将不胜感激。
远程通信数据:
日期时间,车辆登记,纬度,经度
地磅数据:
日期时间,车辆登记,重量,质量
我可能会和一个在线询问者一起去,尽管不确定在更大的数据集和SQL上的性能,但要正确处理它有点困难,而且要先转换为fme datetime比在inlinequerier imo中获得正确的语法更容易。
这将获取遥测数据,并将正确的票号/地磅信息合并到该数据上。
选择T1.*,t2.“票号”,t2.质量,(从“weighbridge_info”t2中选择“weighbridge time”,其中t2。“truck”=t1。“vehicle”和“weighbridge time”-“datetime”>0按“weighbridge time”-“datetime”asc limit 1排序)作为“telematics”t1中的t2_最近日期,“weighbridge_info”t2,其中t2_最近日期=t2。“weighbridge time”和t1.vehicle=T2.卡车
真的。对于一个有趣的项目来说,这是一个有趣的问题。
所以,我的第一个想法是-如果这是我-我会尝试将两个数据集合并成一个数据集,然后使用相邻的记录属性进行“连接”。
让我解释一下——记住,我在写作的时候会思考这个问题。
假设你有两辆卡车。他们的取货记录如下…
2018年12月31日上午10:00,卡车1,X,Y31/12/2018 10:05,卡车2,X,Y31/12/2018 10:10,卡车1,X,Y31/12/2018 10:15,卡车2,X,Y31/12/2018 10:20,卡车1,X,Y
然后你有他们的地磅数据记录…
2018年12月31日上午10:18,卡车2100,BAD31/12/2018 10:30,卡车1000,良好
读取所有数据并将其累积到一个流中。然后按卡车ID(车辆登记)和日期时间(按相反顺序)排序:
现在你有了这个:
2018年12月31日上午10:30,卡车1000,Good31/12/2018 10:20,卡车1,X,Y31/12/2018 10:10,卡车1,X,Y31/12/2018 10:00,卡车1,X,Y31/12/2018 10:18,卡车1000,BAD31/12/2018 10:15,卡车2,X,Y31/12/2018 10:05,卡车2,X,Y
你看到了吗?现在,您有了一个结构化的数据集,其中卡车的每个垃圾场后面都有它的每个皮卡。如果卡车交换路线,或者有一辆替换卡车,或者一辆卡车又出来了(如下图所示)。然后它仍然可以正常工作:
2018年12月31日2018年12月31日下午1:30,卡车1500,古德31/12/2018年12月31日下午1:20,卡车1,X,Y31/12/2018年12月31日下午1:10,卡车1,X,Y31/12/2018年12/31 31 31/12/2018年12月31 31 31 31 31/12/2018 1:30,卡车1000,卡车1000,古德31/12/2018年12月31/12/2018年12/31 31/12/2018 1:30,卡车1500,古德31/12/2018年12/31/12/2018 1:20/2018 1:20,1:20,2018年12/2018年12/31/12/2018 1:10:10:30,X,卡车1:10:10:10:10:10:10:10:10 2018年10:05,卡车2,X,Y
使用该数据结构,您可以通过一个attributeManager运行每个记录。启用相邻特征属性,并设置先前特征的数量=1。将缺少的值设置为值999(例如)。
现在创建一个新属性。设置为有条件的。让我们给它起个新名字(皮卡重量)。
您可以设置条件,这样如果重量为[-1]!=999,则皮卡重量=重量[-1](即如果前一行是一个称重,那么这必须是一个点,所以给它称重的值)。
如果weight[-1]=999,则前一行是一个拾取(而不是一个称重),因此给出与前一点相同的称重值(设置拾取weight=Pickupweight[-1])
为皮卡质量做同样的事情。
(注意:您必须创建一个新的属性名,如pickupweight。你不能说在点特征上也创建一个称为权重的属性,因为这会干扰先前的价值测试)
这样就可以:
2018年12月31日2018年12月31日2018年12月31日2018年12月31日1:30下午1:30,卡车1500,货物,99999999999 31/12/2018年12月31日2018年12月31日2018年12月31日31:31下午1:30下午1:20下午1:30下午1:30下午1:30下午1:30下午1:30下午1:30下午1:30,卡车1500,卡车1500,货物1500,货物1500,货物1500,货物500,良好,9999999 31/12/31/12/2018年12/31/12/2018年12月31/12日下午1:10:30,卡车1,X,X,X,X,X,Y,Y,500,货物31/12/2018年12月31/12/2018年10:30上午10:30上午10:30,卡车21000,坏,999999 31/12/2018 10:15,卡车2,X,Y,1000,BAD31/12/2018 10:05,卡车2,X,Y,1000,坏
设置一个测试仪来过滤掉称重(即重量大于0或质量的地方!=null)最后得到一个点特征列表,每一个都有在运行时收集的重量和负载质量,这就是我认为你的目标。
我认为这会更容易些,因为否则——正如你的问题说明的那样——你必须尝试根据相关日期进行连接,我认为这很棘手(我不知道SQL*那*嗯,但我以前从未见过这样的结合)。
希望有帮助。我认为可能需要做一些细微的调整(比如重新设定日期以便能够排序)。但总的来说,我认为这是一个可行的解决方案。
之后。。。我会将地址分配给一个定义的区域(比如邮政编码),并在此基础上汇总/平均结果。但这是一个空间分析的决定,不是FME问题,我想你已经知道了。要在FME中执行此操作,请尝试PointOnAreaOverlayer/StatisticScaleCalculator组合或类似的组合。
您好!@威廉姆马丁尼8,请
感谢您发布有趣的数据问题!
如果您熟悉SQL,那么应该能够使用inlinequerier创建复杂的连接(例如。使用join语句或多个where子句)。或者,有时将多个特性连接在一起,或者将特性合并可以实现类似的连接。也,别忘了我们还有强大的滤波变压器,比如测试仪,测试过滤器,和属性过滤器。可以在这些变压器中设置多个测试条款,所以你可以组合过滤器和加入以获得最终结果。
为了全面了解我们所有的空间和非空间连接变压器,阅读以下知识中心文章:
-https://knowledge.亚搏在线safe.com/articles/83808/performing-space-joins-and-merges.html
-https://knowledge.亚搏在线safe.com/articles/34619/working-with-database-transformers-1.html网站
希望这有帮助!
内森
?2019安全亚搏在线软件公司|法律