2016-08-17 14 views
5

私は、ヒートマップを設定するための緯度と経度のデータセットを持っています。データが大きすぎるため、日々増え続けています。ヒートマップのパフォーマンスにあまり影響を与えずにデータの量を減らす必要があります。私は、「体重」のためにもう1つのフィールドを追加し、2つの近点を組み合わせて、最初の2つの合計としての「体重」を持つ新しい点を形成することができると理解する。しかし、私はどこに新しいポイントを植えるのか混乱しています。私はこれが私の問題を解決するための標準的な方法ではないと思います。私は実装にgolangを使用していますが、すべてのアイデアを歓迎します。ありがとうございました。ジオコードのデータセットを集計してヒートマップの数値を減らすにはどうすればよいですか?

+2

加重平均の重みを使用し、少しポイントを移動置きます。例えばA点が0.9、B点が0.1の場合、A点とB点を結ぶ線のうち、A点とB点を結ぶ直線の約0.1になります。 –

+2

2つの重要な質問:1.ヒートマップは何を表しますか? - 損失の結果ですか?一度それを定義すると、問題2は次のようになります。1からのどのような逸脱を受け入れることができますか? –

+0

@RafałDowgirdヒートマップは、車両の動きを表します。 –

答えて

0

コメント者が述べたように、たとえばポイントの加重平均を使用することを検討してください。

ポイントを集約する近接しきい値を選択します。これらの点のそれぞれについて、座標が他の点の平均(中央値)であり、重みが問題の点の数である合成点を生成する。近接しきい値を調整してデータ量を減らすことができるように、ヒートマップを生成する際に合成加重ポイントのみを含めます。例えば

type Point struct{ X, Y float32 } 

type WeightedPoint struct{ Weight, X, Y float32 } 

func GetWeightedPoint(ps []Point) WeightedPoint { 
    n := float32(len(ps)) 
    wp := WeightedPoint{Weight: n} 
    if n > 0 { 
     for _, p := range ps { 
      wp.X += p.X 
      wp.Y += p.Y 
     } 
     wp.X /= n 
     wp.Y /= n 
    } 
    return wp 
} 

func main() { 
    ps := []Point{{0.0, 0.0}, {1.0, 0.0}, {0.5, 1.0}} 
    fmt.Printf("OK: %#v\n", GetWeightedPoint(ps)) 
    // OK: main.WeightedPoint{Weight:3, X:0.5, Y:0.33333334} 
} 
関連する問題