오픈 레이어에서 레이더 데이터에 애니메이션을 적용하는 가장 좋은 방법


9

레이더 데이터를지도에 표시하는 OpenLayers를 사용하는 프로젝트가 있습니다. 레이더 데이터 자체는 6 개의 가능한 색상 중 하나로 채워진 다각형입니다. 목표는지도에서 레이더를 애니메이션하는 것입니다. 각 파일에는 주어진 시간 동안 레이더 데이터가 포함되어 있으며 파일은 약 5 분 간격으로 분리되어 있으므로 현재 접근 방식은 모든 파일을 반복하여 하나씩 새 별도 레이어에로드하는 것입니다. 각 레이어가 생성되면 가시성이 false로 설정되고 맵에 추가됩니다. 그런 다음 한 레이어의 가시성을 켜고 이전 레이어의 가시성을 끄는 타이머를 사용하여 레이어에 애니메이션을 적용합니다. 현재 레이어는 모든 벡터 레이어이며 데이터는 KML 파일에서로드되지만 데이터 파일은이 프로젝트에 가장 적합한 형식 일 수 있습니다.

이 접근법의 문제점은 일단 상당히 큰 시간 범위 (약 3 시간 정도)에 해당하는 데이터 (약 36 개의 레이어와 같음)에 도달하면 메모리 소비가 상당히 높아진다는 것입니다 (약 250mb). 최종 제품은 한 번의 루프에서 최대 18 시간의 데이터를 처리 할 수 ​​있어야합니다. 위의 숫자를 기준으로 애니메이션에만 1GB 이상의 메모리가 필요하며 브라우저가 다운되거나 최소한 느려질 수 있습니다.

각 레이어에 WMS 레이어를 사용하여 동일한 작업을 시도했지만 다시 그리기가 너무 느려서 (애니메이션이 100ms마다 레이어를 변경 함) 메모리 소비가 벡터 버전보다 훨씬 나빴습니다.

나는이 작업을 수행하는 방법에 대한 예를 찾으려고 그물을 닦았지만 지금까지는 빈손으로 왔습니다. 이 작업을 수행하는 방법에 대한 제안이있는 사람이 있습니까? 나는 지금 몇 주 동안이 문제에 봉착 해 있었으므로 지금 당신이 가지고있는 아이디어를 보지 못할 것입니다.

답변:


9

일종의 슬라이딩 창을 사용해보십시오. 한 번에 10 개의 레이어를 버퍼링 할 수 있습니다. 10 개의 레이어에 도달하면 레이어를 삭제하고 DOM과 메모리에서 제거하십시오. 따라서 레이어 10에 도달하면 레이어 0-9가 파괴되고 레이어 20-30이 가시성을 거짓으로로드합니다. 이렇게하면 약 10 개의 레이어로 구성된 버퍼가 제공되지만 성능에 적합하다고 생각되면 허용 오차를 수정할 수 있습니다. 20 개의 레이어가 더 잘 작동한다고 생각되면 20으로 이동하십시오.

          {Destroy Layers} |10|11...19|20| {Start Loading Layers}
|---------------------------------------------------------------------------|
                           
        Timespan           Current Possition

당신은 천재입니다! 실제로 이것을 실제로 적용하지는 않았지만 작동하지 않는 이유는 보이지 않으며 조정 가능한 버퍼는 다양한 환경에 맞게 추가로 사용자 정의 할 수 있음을 의미합니다. 이 제안에 대해 충분히 감사하지 않습니다!
TheOx

고마워, 실제로 작동하기를 바랍니다. 어떻게 작동하는지 알려주세요.
CaptDragon

초기 테스트를 완료했는데 제대로 작동합니다! 코드에는 여전히 최적화의 여지가 있지만이 방법은 메모리 공간을 줄이며 클라이언트 시스템의 메모리 및 대역폭에 따라 구성 할 수 있습니다. 훌륭한 제안에 다시 한번 감사드립니다!
TheOx

잘 들었습니다.
CaptDragon

@CaptDragon : (또는 TheOx) 실제 예제를 게시 할 수 있습니까? 나는 요점에 대한 해결책을 이해하지만 간단한 예제와 코드를 보면 거의 같은 문제가 있기 때문에 크게 도움이 될 것입니다. 감사!
teknocreator

1

파일 크기를 줄이기 위해 벡터 레이어를 단순화하는 것을 고려 했습니까? 다각형에 디스플레이 목적에 필요한 것보다 더 많은 정점이 포함되어 있으면 단순화 (부드러움)하면 세부 정보가 줄어들어 파일 크기가 줄어 듭니다. 사용중인 소프트웨어가 확실하지 않지만 여러 GIS 데스크톱 응용 프로그램에는 기능을 단순화하는 지오 프로세싱 기능이 포함되어 있습니다.


좋은 생각이지만 불행히도 프로젝트는 데이터를 전체 해상도로 표시해야합니다. 그러나 그 트릭을 사용할 수있는 다른 데이터 계층에 대해서는이 점을 명심해야합니다.
TheOx

1

데이터를 단순화하는 것 외에 (많은 공간을 절약 할 수도 있음) MapServer를 사용하거나 데이터를 투명하게 타일로 바꾸고 배경 레이어 위에 놓을 맵 레이어를 만드는 다른 방법을 시도해 보았습니다. 수백에서 수십만 개의 다각형 (또는 마커)을 가진 choropleth 맵에서이 접근 방식을 보았지만 아직 서버 측 요구 사항으로 인해 직접 시도 할 수 없었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.