23.6 电子围栏的使用

电子围栏需要配合APP地图定位来使用。

创建电子围栏坐标模板

  • 此模板为了将电子围栏信息写入到总表中存储。
  • 主表中需要3个数据项:电子围栏名称、电子围栏形状、车辆最大进入数量。
  • 明细表中需要3个数据项:经度、纬度、圆形半径。
  • 创建完成后,命名为:电子围栏坐标,并保存模板。

创建管理电子围栏模板

  • 此模板用来新建电子围栏,并显示电子围栏在地图上的位置。
  • 新建一个模板,选中表格1,然后添加浏览器,添加成功后,再删除表格1。
  • 填表公式:
  • 在新建打开表单后事件和修改打开表单后事件中,添加公式:设置控件属性。
  • 在设置空间属性中,添加浏览器,属性选择URL,值为:../map/ElectronicFence.html
  • 创建完成后,命名为:管理电子围栏,并保存模板。

电子围栏的使用

电子围栏的创建

  • 双击打开管理电子围栏模板。
  • 点击新增按钮。
  • 选择“圆形”按钮,框选需要的区域。
框选区域后,输入电子围栏名称和电子围栏区域内允许进入的最大数量。

电子围栏的使用

  • 电子围栏要配合APP车辆定位来使用,可以设置为,当电子围栏内进入的车辆超过限定允许车辆最大进入数量后,进行短信提醒或推送。

创建模板

  • 可以创建一个模板通过车辆坐标、电子围栏坐标、电子围栏半径计算当前电子围栏内的车辆数量。
  • 如新建一个模板:电子围栏车辆数量监控
  • 主表中需包含:电子围栏名称、电子围栏半径、电子围栏中心经度、电子围栏中心纬度、电子围栏最大车辆数等数据项。
  • 明细表中需包含:车牌号、经度、纬度距离电子围栏中心距离、是否在电子围栏区域、是否推送、车主姓名等数据项。

创建数据接口

  • 在刚刚新建的模板中(电子围栏车辆数量监控模板)创建数据接口
  • 第一个数据接口,用来合计有多少辆车在电子围栏中。
  • 如命名为:计数在电子围栏内车辆数量
  • 表达式为:合计( 本模板.明细.是否在电子围栏区域 )
  • 过滤条件中创建一个自定义参数:电子围栏名称
  • 过滤条件为:自定义参数.电子围栏名称 = 本模板.电子围栏名称 并且 本模板.明细.是否在电子围栏区域 = 常量.是
  • 第二个数据接口,用来找出超出电子围栏最大数量的车辆。
  • 如命名为:查找电子围栏内车辆车牌号
  • 距离电子围栏中心距离的数据类型选择小数,排序方式为降序。
  • 过滤条件中添加一个参数:电子围栏名称
  • 过滤条件为:自定义参数.电子围栏名称 = 本模板.电子围栏名称 并且 本模板.明细.是否在电子围栏区域 = 常量.是 并且 (本模板.明细.是否推送 = 常量.否 或者 本模板.明细.是否推送 = 常量.空 或者 本模板.明细.是否推送 = "" )
  • 并设置为只查找一条数据。
  • 第三个数据接口,找出需要推送的车牌号对应的车主姓名。
  • 过滤条件中创建一个参数:电子围栏名称
  • 过滤条件为:自定义参数.电子围栏名称 = 本模板.电子围栏名称 并且 本模板.明细.是否推送 = 常量.是
  • 在车辆坐标中新建一个数据接口:查询车辆坐标,用来查询所有车辆的经纬度信息。不用写过滤条件。

创建业务公式

  • 创建第一个业务公式:对电子围栏车辆数量监控表单进行更新,用来更新数据、计算距离。
  • 更新时操作同样如此。
  • 对明细进行操作。
  • 先删除明细信息,然后再重新插入。
  • 计算距离公式为:
  • 求次冥( 求次冥(( 电子围栏车辆数量监控.明细.经度 - 电子围栏车辆数量监控.电子围栏中心经度 ), 2) + 求次冥(( 电子围栏车辆数量监控.明细.纬度 - 电子围栏车辆数量监控.电子围栏中心纬度 ), 2), 0.5 ) * 105539.1756
  • 更新操作时同样如此。可直接将新建时的情况直接复制到更新时中。
  • 创建第二个业务公式:对电子围栏车辆数量监控表单进行更新,用来判断车辆是否在电子围栏区域。
  • 对明细进行操作。
  • 更新的记录时,操作同样如此,可直接复制。
  • 创建第三条业务公式:对电子围栏车辆数量监控表单进行更新,用来判断是否需要推送。
  • 更新时同样如此。
  • 对明细进行操作。
  • 注意:需要用到3个数据源,首先第一个数据源用来判断,电子围栏内的车辆数量是否超出了限制,第二个用来判断有几个超出了限制,第三个用来判断哪几个车辆距离最远,然后用来推送。
  • 更新时操作同样如此。
  • 匹配条件为:计数在电子围栏内车辆数量.是否在电子围栏区域 > 电子围栏车辆数量监控.电子围栏最大车辆数 并且 查找电子围栏内车辆车牌号.车牌号 = 电子围栏车辆数量监控.明细.车牌号
  • 创建第四个业务公式,对APP待发送消息进行操作,要来给超过限制车辆的车主发送推送消息(若发送短信,则对待发送消息进行操作)。
  • 更新时操作同样如此。

操作

  • 在电子围栏车辆数量监控模板中新建一张表单,输入电子围栏名称,在保存时即可生效,对输入名称的电子围栏内车辆进行判断。
  • 但真正使用时,不能让某个用户一直新建表单,这样不现实,所以需要用计划任务来操作,但计划任务不能赋值初始值,所以要在模板中写死一个电子围栏名称,如:
  • 但这样,这个模板就只能判断这一个电子围栏内的车辆情况,想判断其他电子围栏时,还需要创建其他模板。
  • 大家可以参考此案例自己进行发挥,打造一个更合理的系统。

附录

  • 经纬度计算距离公式为(X为经度,Y为纬度)):
  • 求次冥( 求次冥(( 本表单.x1  -  本表单.x2 ), 2) +  求次冥(( 本表单.y1  -  本表单.y2 ), 2) , 0.5) * 105539.1756
2022-02-09
42 40