テレマティクス - 電子フェンス技術

車の電子フェンスは何ですか

一般的に言えば、電子フェンスのように、このような北京、広東などの管理領域に応じて分割することができ、規則的または不規則領域の予め描写良いマネージャーです。

その目的は、管理を容易にすることである:指定された領域を残し車両は、事前に設定された条件に応じてシステムは、関連するハンドラ、タイムリーなアラートを起動して、チームマネージャーとなり、携帯電話側に通知を押してください。

ワークフロー

  1. GPSデバイスをインストールするために必要なオンボード機器、およびリアルタイムアクティブレポート作成に現在位置を特定することができます。
  2. 管理者は、車両が指定された領域で走行しているTSPシステムに設定され、車両が指定された領域のソリューションを離れるとうまく。
  3. 現在の車両位置情報TSPシステムの車両用伝送システムは、車両Wの位置データを記憶し、リアルタイムで分析し、4G / 5G通信網を介して車両の走行のバックアップパスを記録します。
  4. 車両が指定領域が設定されて離れる場合、TSPは、システムが管理者に通知するアラームを押します。

電子フェンスアルゴリズム

1.線法

一般的には多角形ジオフェンスは、どのようにポリゴンその中のポイントを決定するには?ポリゴン線法の内側にある点によって決定することができます。、内部ポリゴン(図を以下に示すように、より出発点は、X軸に沿って線順次各側面を決定する光線の交点を描画し、交差点の数が奇数である場合、交差点の数をカウントする。3つの交差点)、数はフォーカスが外側にある場合でも、線投影及び方法は、非凸多角形に適用可能であり、複雑さはO(N)です。

2.角度および方法

これらは、多角形の各角部に接続されていることを、少し外側多角形又は中、1.4図、角度設定、<1 <2 <3 <4 <5及び<6、これらの間の位相角角度を与えるために添加し、次いで、便宜上、この角度Aと呼ばれます。反時計方向に負の時計回りの回転方向を、前方に所定[4]。ときに!=2πは、ポリゴン外部判定点であった場合、場合=2π、ポリゴン内部の決定点がありました。

傾斜法のみ凸多角形を使用することができるが、フェンスの形状を変えて、それは凸多角形はまた、凹状の多角形であってもよいかもしれません。問題の広さから、線法は、最も適した方法です。

サンプルコード

import json
import math
lnglatlist = []

data = '[{"points":[{"lng":0,"lat":0},{"lng":2,"lat":0},{"lng":0,"lat":2}]}]'

data = json.loads(data)
if 'points' in data[0]:
    for point in data[0]['points']:
        lnglat = []
        lnglat.append(float(str(point['lng'])))
        lnglat.append(float(str(point['lat'])))
        lnglatlist.append(lnglat)

def windingNumber(point, poly):
    poly.append(poly[0])
    px = point[0]
    py = point[1]
    sum = 0
    length = len(poly)-1

    for index in range(0,length):
        sx = poly[index][0]
        sy = poly[index][1]
        tx = poly[index+1][0]
        ty = poly[index+1][1]

        #点与多边形顶点重合或在多边形的边上
        if((sx - px) * (px - tx) >= 0 and (sy - py) * (py - ty) >= 0 and (px - sx) * (ty - sy) == (py - sy) * (tx - sx)):
            return "on"
        #点与相邻顶点连线的夹角
        angle = math.atan2(sy - py, sx - px) - math.atan2(ty - py, tx - px)
        #确保夹角不超出取值范围(-π 到 π)
        if(angle >= math.pi):
            angle = angle - math.pi * 2
        elif(angle <= -math.pi):
            angle = angle + math.pi * 2
        #计算回转数并判断点和多边形的几何关系
    result = 'out' if int(sum / math.pi) == 0 else 'in'
    return result

point = [1, 1]
print(windingNumber(point,lnglatlist))

複数の基準 >> 電子フェンス技術説明

おすすめ

転載: www.cnblogs.com/xtuz/p/11670973.html