OpenLayers 벡터 레이어의 최대 포인트 피처 수


27

경험상 OpenLayers 벡터 레이어 (새 OpenLayers.Layer.Vector ( "Point Layer"))에 사용할 수없는 포인트 피처를 몇 개나 추가 할 수 있습니까?

내 유스 케이스는 데이터베이스 테이블의 포인트를 표시하는 것입니다. 사용자는 시각화 할 시간대를 결정할 수 있습니다. 따라서 그 결과는 매우 적거나 십만 점에이를 수 있습니다. 합리적인 제한을 도입하고 쿼리가 더 많은 기능을 반환하면 사용자에게 경고하고 싶습니다.


사용중인 표준 브라우저가 있습니까? 사용중인 브라우저에 따라 제한이 다를 수 있습니다.
데릭 스윙 리

대부분 Firefox. 오래된 IE에서는 작동하지 않아도됩니다.
underdark

1
사용자에게 경고하는 대신 벡터 데이터 요청에서 점을 WMS / 이미지로 반환하도록 전환 할 수 있습니다.
geographika

@ geographika : 보통 그렇게 할 것입니다. 그러나 사용자는 연결할 데이터베이스를 결정하게됩니다. 가능한 모든 데이터베이스를 알고 WMS를 통해 사용할 수 있어야합니다. 그들은 심지어 PostGIS를 설치하지 않았으며, 위도 / 경도 열만 가져옵니다.
underdark

답변:


38

나는 당신을위한 명확한 대답을 가지고 있지 않지만 OL지도에서 다른 수의 포인트로 놀 수있는 페이지를 작성했습니다 : http://derekswingley.com/lab/olpts/


5
데릭은이를위한 '실제적인 사례가있는 훌륭한 답변'배지가 있어야합니다. 속도 오버 포인트의 차이를 보는 것이 좋습니다.
Mapperz

3
매우 흥미로운! 그것은 지오 섬을 생각하게합니다. : 또는, 잘 테스트 성능으로 사용할 수 있습니다 craigmmills.com/geoipsum (다각형 수 제한이있는 경우 나도 몰라)
SIMO

1
@ So4ne 구글 앱 엔진 사이트가 어느 시점에서 죽었다는 것과 같은 코드 (거의 5 살)가 여기있다 : derekswingley.com/lab/olpts
Derek Swingley

1
@nospor가 https로 전환하는 데 실패하고 업데이트되었으며 사이트가 돌아 왔습니다.
Derek Swingley 2016 년

1
@DerekSwingley Leaflet, MapboxGL JS & OpenLayers 4 medium.com/@ThomasG77/을 사용하여 아이디어를 기반으로 업데이트 된 샘플을 만들었습니다. 샘플에 대한 크레딧을 제공합니다
ThomasG77

5

기능 번호가 너무 높아서 표시가 느려지면 표시 할 데이터가 줌 레벨에 적합하지 않은 것입니다. 일반적으로 피처 밀도가 너무 높아지면 더 이상 디스플레이를 읽을 수 없습니다 ( 이 예 참조 ). 처리 제한이없고 모든 디스플레이 장치가 작은 화면에서 0.001s로 1000000000000 개의 기능을 표시 할 수 있더라도 시각화는 불가능합니다.

Töpfer의 기수법에 따르면 피처 밀도는 줌 레벨에 관계없이 일정한 임계 값 아래로 유지되어야한다고 명시되어 있습니다. 이 문제를 해결하고 시각화 규모에 데이터를 적용하는 방법이 사용하여 변환하는 일반화 작업을 같이 이 하나 또는 이 다른 하나 .


: 동일한 주제에 대한 gis.stackexchange.com/q/4096/162
줄리앙

2
매우 사실입니다. Openlayers와 관련하여 클러스터 전략 을 사용 하여이를 처리합니다. 예보기 : openlayers.org/dev/examples/strategy-cluster.html
simo

1
현재 응용 프로그램의 경우 단순히 (GPS) 지점을 선 (트랙)에 연결했습니다. 이미 렌더링 시간이 상당히 향상되었습니다.
underdark

3

이 질문에 확실한 답을 줄 수는 없다고 생각합니다. 렌더링 포인트 / 폴리곤은 OpenLayers가 아닌 브라우저 및 하드웨어 (CPU 및 메모리)에 전적으로 의존합니다. Lake (Polygon) 렌더링 중 하나에서 Openlayers 및 IE6에 문제가있었습니다. 그러나 Firefox에서는 훌륭하게로드되었습니다. 가장 좋은 방법은 Chrome을 사용하여 메모리와 CPU 사용량을 모니터링하는 것입니다. 그렇지 않으면 일부 도구가 더 좋습니다.


1

다른 사람들과 마찬가지로, 나는 그 질문에 대한 답이 없지만 BBox 전략을 적용 하면 주어진 경계 상자 내에있는 기능 만 표시하므로 필요한 데이터를 유지하는 데 도움이 될 수 있습니다.


1

OpenLayers 6에는 시간 기반 필터링을 통해 수십만 개의 기능을 렌더링 할 수있는 WebGL 포인트 렌더러가 있습니다. https://openlayers.org/workshop/en/webgl/ 에서 공식 워크숍의 최신 버전을 확인하고 싶을 수 있습니다 .

더 이상 사용하지 않는 OpenLayers 2에서는 허용 가능한 프레임 속도의 최대 값이 수백 가지 기능에 불과합니다.


0

위의 요구 사항에 맞는지 확실하지 않지만 ClusteringOL 5에서는 내가 채택 한 것과 비슷한 유스 케이스를 발견 했습니다.

단어에서 알 수 있듯이 클러스터링은 점 그룹을 가져 와서 단일 점으로 병합합니다. 예를 들어 특정 도시에 100 점이 있으면 모든 점이 줌 확대에서 하나의 포인트로 표시 4되지만 줌 확대에서 개별 포인트로 표시됩니다 말 10줌이 때 당신이 할 수있는 것은, 그래서 4그것은 특정 지역에서 렌더링되는 점의 수를 줄이는 데 도움이 어떤이가하는, 당신은 하나 같이 그 점을 가입 할 수 있습니다.

다시 말해,지도에 10,000 점을 렌더링 할 때 서로 점이 가깝기 때문에 클러스터를 만들고 렌더링을 줄이고 사용자가 확대 할 때 클러스터를 계속 파괴 할 수 있습니다. 이렇게하면 렌더링이 줄어들고 성능이 향상됩니다.

만족스러운 성능. Openlayer의 클러스터링 예제에 연결


링크 된 페이지의 간단한 요약을 추가해 주시겠습니까? 시간이 지남에 따라 링크가 끊어 질 수 있으므로 현재 답변을 쓸모가 없습니다.
Kantan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.