경험상 OpenLayers 벡터 레이어 (새 OpenLayers.Layer.Vector ( "Point Layer"))에 사용할 수없는 포인트 피처를 몇 개나 추가 할 수 있습니까?
내 유스 케이스는 데이터베이스 테이블의 포인트를 표시하는 것입니다. 사용자는 시각화 할 시간대를 결정할 수 있습니다. 따라서 그 결과는 매우 적거나 십만 점에이를 수 있습니다. 합리적인 제한을 도입하고 쿼리가 더 많은 기능을 반환하면 사용자에게 경고하고 싶습니다.
경험상 OpenLayers 벡터 레이어 (새 OpenLayers.Layer.Vector ( "Point Layer"))에 사용할 수없는 포인트 피처를 몇 개나 추가 할 수 있습니까?
내 유스 케이스는 데이터베이스 테이블의 포인트를 표시하는 것입니다. 사용자는 시각화 할 시간대를 결정할 수 있습니다. 따라서 그 결과는 매우 적거나 십만 점에이를 수 있습니다. 합리적인 제한을 도입하고 쿼리가 더 많은 기능을 반환하면 사용자에게 경고하고 싶습니다.
답변:
나는 당신을위한 명확한 대답을 가지고 있지 않지만 OL지도에서 다른 수의 포인트로 놀 수있는 페이지를 작성했습니다 : http://derekswingley.com/lab/olpts/
기능 번호가 너무 높아서 표시가 느려지면 표시 할 데이터가 줌 레벨에 적합하지 않은 것입니다. 일반적으로 피처 밀도가 너무 높아지면 더 이상 디스플레이를 읽을 수 없습니다 ( 이 예 참조 ). 처리 제한이없고 모든 디스플레이 장치가 작은 화면에서 0.001s로 1000000000000 개의 기능을 표시 할 수 있더라도 시각화는 불가능합니다.
Töpfer의 기수법에 따르면 피처 밀도는 줌 레벨에 관계없이 일정한 임계 값 아래로 유지되어야한다고 명시되어 있습니다. 이 문제를 해결하고 시각화 규모에 데이터를 적용하는 방법이 사용하여 변환하는 일반화 작업을 같이 이 하나 또는 이 다른 하나 .
OpenLayers 6에는 시간 기반 필터링을 통해 수십만 개의 기능을 렌더링 할 수있는 WebGL 포인트 렌더러가 있습니다. https://openlayers.org/workshop/en/webgl/ 에서 공식 워크숍의 최신 버전을 확인하고 싶을 수 있습니다 .
더 이상 사용하지 않는 OpenLayers 2에서는 허용 가능한 프레임 속도의 최대 값이 수백 가지 기능에 불과합니다.
위의 요구 사항에 맞는지 확실하지 않지만 ClusteringOL 5에서는 내가 채택 한 것과 비슷한 유스 케이스를 발견 했습니다.
단어에서 알 수 있듯이 클러스터링은 점 그룹을 가져 와서 단일 점으로 병합합니다. 예를 들어 특정 도시에 100 점이 있으면 모든 점이 줌 확대에서 하나의 포인트로 표시 4되지만 줌 확대에서 개별 포인트로 표시됩니다 말 10줌이 때 당신이 할 수있는 것은, 그래서 4그것은 특정 지역에서 렌더링되는 점의 수를 줄이는 데 도움이 어떤이가하는, 당신은 하나 같이 그 점을 가입 할 수 있습니다.
다시 말해,지도에 10,000 점을 렌더링 할 때 서로 점이 가깝기 때문에 클러스터를 만들고 렌더링을 줄이고 사용자가 확대 할 때 클러스터를 계속 파괴 할 수 있습니다. 이렇게하면 렌더링이 줄어들고 성능이 향상됩니다.
만족스러운 성능. Openlayer의 클러스터링 예제에 연결