2012-07-12 3 views
1

그래프보기에서 시각화를 위해 많은 양의 데이터를 압축하는 방법을 찾고 있습니다.방대한 양의 데이터를 빠르게 시각화하는 방법

나는 timestamp-value 쌍으로 구성된 이진 파일을 가지고있다. 이 파일은 실시간으로 증가하며 수 기가 바이트를 쉽게 초과 할 수 있습니다.

이제이 데이터를 그래프/플롯으로 표시하는보기가 여러 개 있습니다. 대부분의 경우 X 축에있는 픽셀보다 훨씬 많은 데이터가 있으므로이 데이터를 원하는 해상도로 압축해야합니다. 각보기는 화면의 크기에 따라 다른 해상도가 필요할 수 있습니다. 또한 확대/축소하면 해당 해상도가 빠르게 변경됩니다.

현재 알고리즘은 데이터를 동일한 길이의 섹션으로 나누고 최소값과 최대 값을 계산합니다. 이제 x 축에있는 각 픽셀에 대해 min에서 max 값까지 수직선을 그립니다. 이렇게하면 이상 치를 놓치지 않을 수 있습니다. (요구 사항입니다)

새로운 해상도가 필요할 때마다 우리는 다른 섹션 길이를 선택하고 전체 파일을 검토해야하므로 속도가 느려집니다.

해결 방법은 여러 가지 해상도의 데이터를 (일정한 시간에) 호출 할 수있게 해주는 일종의 캐싱 레이어를 만드는 것입니다. 불행히도 나는 우리에게 이상 치를 보여주는 방식으로 그러한 캐시를 구현하는 방법을 모른다.

이런 종류의 문제에 대한 접근법을 보여주는 힌트가 있습니까?

환경은 Microsoft .net이지만 일반적인 아이디어에 대한 내용이므로 차이가 없어야합니다.

미리 감사드립니다.

답변

2

내 접근 방식은 다음과 같이 여러 파일에 데이터를 저장하는 것입니다 :

  • [0] 파일의 {타임 스탬프 값을} 추가합니다.
  • for i = 0 ... MAX_REASONABLE :
    • FILE [i]의 샘플 계수 ZOOM이 0이 아니면 종료합니다.
    • FILE [i]에서 마지막으로 ZOOM 샘플을 가져옵니다.
    • 단일 샘플 (예 : 평균 시간 소인 - 최소 가져 오기?) 및 평균 샘플 데이터로 압축하십시오.
    • FILE [i + 1]이 존재하지 않으면 생성하십시오.
    • 새로 만든 샘플 파일에 기록 [I + 1]
    • 데이터의 총량 크기 * (1/(1- (1/ZOOM)))에 수렴

- 100 필요 ZOOM = 2 인 경우 추가 공간 %, ZOOM = 4 인 경우 33 %뿐입니다.

시각화 할 때 표시 할 가장 가까운 수준을 빠르게 선택합니다. ZOOM = 2 인 상태에서 600.000 개의 샘플이 포함 된 범위에서 800 픽셀을 시각화해야한다고 가정합니다. ZOOM의 대수로 나눈 600.000/800의 대수는 9.55입니다. 즉, 확대/축소 수준 9에 액세스해야합니다.

해당 파일이 ZOOM^9 = 512 배 줌으로 확대되어 600.000/512 = 1171 개의 샘플을 샘플링하여 1171 x H 이미지를 800 픽셀 너비로 다시 샘플링합니다.

총 기록 비용은 평균 300 %까지 증가합니다. 총 저장 공간 요구 사항이 최대 100 % 증가합니다. 이미지를 생성하려면 생성하는 화면 이미지의 너비에 따라 비용이 일정하거나 일정 해집니다.

저는지도 렌더링을 위해 이러한 시스템을 연구했으며, 실시간 화면 이동 및 확대/축소를 사용하여 테라 픽셀지도에서 직사각형 영역을 표시 할 수 있습니다 (네트워크 처리량 및 대기 시간 제외 : 즉, JPEG 품질).

+0

감사합니다. 대답은 매우 도움이되었습니다. 우리는 마침내 그런 식으로 구현하기로 합의했습니다. –

관련 문제