GML, KML, GeoJSON-3109 다각형의 속도 렌더링?


12

저는 Geoserver와 함께 미국의 48 개 카운티를 오픈 레이어 (3109 다각형-더 많은 정점)에 제공하고 있습니다. 카운티는 postgis 데이터베이스에로드됩니다. 많은 양의 정점을 클라이언트에 푸시하려고 할 때 개발자 경험이 궁금합니다.

어떤 WFS 형식으로 최상의 결과를 얻었습니까? Geoserver에 대한 추가 조정이 사용 되었습니까?

타일 ​​WMS가 더 빠르다는 것을 알고 있지만 openLayers를 사용하여 choropleth 맵에서 동적 변경을 허용하고 싶습니다. 사용자가 양식을 제출하면 Python 스크립트가 호출되고 개방 계층에 대해 맵 div를 다시로드하기 위해 새 데이터 저장소가 반환됩니다. 또한 오픈 레이어에서 다각형의 복잡성을 줄이기 전에 전체 해상도 형식으로 시도하고 싶습니다.

답변:


4

어쩌면 이것이 새로운 아이디어를 유발할 수 있습니다. 사용자가 많은 요소로지도를 편집 할 수있는 응용 프로그램이 실행 중입니다.

모든 데이터를 WFS로 보내는 대신 WMS 맵을 사용하고 사용자가 클릭하거나 선택을하면 선택한 항목을 WFS로 가져옵니다 .

서버로 업데이트를 보낸 후 WMS 계층을 새로 고칩니다.

이를 수행하는 방법을 보여주는 몇 가지 OpenLayers 예제가 있습니다. 아마도 약간 조정해야하지만 OpenLayers + GeoServer는 어려운 부분을 해결합니다. 데이터는 gzip으로 전송되므로 원래 형식은 그다지 중요하지 않습니다. 병목 현상이 아닙니다. OpenLayers와 GeoServer가 정보 교환에 어떤 형식을 사용하는지 파악하도록합니다.

이 접근법은 꽤 잘 확장됩니다. 연결 속도가 느리고 컴퓨터 속도가 느린 사람도이를 사용하여지도를 편집 할 수 있습니다. 수백 개의 요소를 가져 오는 것은 매우 빠르며 동시에 편집하는 데 그 이상이 필요하지 않을 수 있습니다.

마지막으로 .. 주 제외이지만 맵 데이터로 클라이언트 측 작업을 수행하려는 경우 : OpenLayers로 다각형을 그리려면 IE7 이하가 문제가 될 수 있습니다. OpenLayers는 클라이언트 측 드로잉에 SVG를 사용하며 IE7 및 하위 버전은 기본적으로 지원되지 않습니다. 이러한 사용자는 낡은 플러그인을 다운로드해야합니다. 다른 모든 브라우저는 괜찮습니다.


IE8은 거의 나쁠 것입니다. OpenLayers에는 여러 렌더러가 있으며 Canvas를 지원하지 않는 브라우저 또는 SVG는 IE7이 지원하는 VML에 의존합니다. 다른 렌더러는 서로 다른 장소에서 더 나은 성능을 제공합니다. 예를 들어 렌더링 대 마우스 오버 및 클릭 감지
tomfumb

3

GEOJSON은 제 생각에 최고의 형식이며, 읽기 쉽고 자바 스크립트에서 사용하기 쉽고 일반적으로 GML / KML보다 크기가 작습니다. 스타일에 대한 정보도 포함 할 수 있습니다 ( 여기 참조) .

공식 표준은 아니지만 전단지 및 오픈 레이어와 qgis와 같은 많은 gis-desktop 앱에서 지원됩니다.


2

GeoJSON을 사용하는 것이 시스템 속도를 높이는 좋은 시작이지만 충분하지 않을 수 있습니다. 확대 / 축소 레이어 당 하나씩 여러 버전의 데이터 레이어를 구축 하고 각 버전에 일반화 / 단순화 방법 을 적용 해야합니다. 클라이언트는 선택한 확대 / 축소 수준에 따라 관련 레이어를 요청해야합니다. 이렇게하면 서버와 클라이언트간에 교환되는 데이터의 세부 수준이 적절하게 유지되며 네트워크 전송과 렌더링이 모두 크게 향상됩니다. 더 나아가서이 문서 에서 설명한대로 벡터 타일링 및 공간 인덱싱을 사용하여 시스템을 확장 할 수는 있지만 오픈 레이어와 지오 서버가이를 처리 할 수 ​​있는지 확실하지 않습니다!

반드시 : GML을 잊어 버리십시오.


이것은 전체 해상도 WFS가 너무 느릴 때의 대체 방법입니다. 이 크기의 문제에 관심이 있으며 전체 해상도 속도와 필요한 경우 해상도 속도를 모두보고 할 수 있기를 원합니다.
Jay Laura

2

python 스크립트를 사용하여 새 SLD 파일을 작성하고 요청과 함께 WMS 서버로 보내십시오.

여기에 예가 있습니다 .


나는 이것을 고려했으며 속도에 대해이 옵션을 테스트 할 것입니다. 이것은 개발 용이 아니라 연구용이므로 WFS를 사용 해보고 싶습니다.
Jay Laura

1

나는 이미 비슷한 길을 두 번이나 가봤으며 클라이언트 측 렌더링은 적은 수의 점이나 단순한 다각형 이상을위한 것이 좋지 않습니다. 일단 당신이 그 아키텍처에 자신을 묶고 나면 비용이 많이 들고 프로젝트에서 비용이 많이 듭니다. 다양한 이해 당사자 / 관리자가 시스템의 능력을보기 시작함에 따라 요구 사항의 변화 나 데이터 양의 증가를 보게 될 것입니다. 브라우저 기반 클라이언트 측 렌더링 방식은 확장되지 않습니다.

동적 렌더링을 원한다면 두 번째 @iant의 접근 방식입니다. 나는 이전에 다른 그러나 관련 문제에 대한 옵션을 설명 여기 . 또한 클라이언트 측 렌더링을 지원하기 위해 다각형 일반화를 사용했으며 확실히 도움이되지만 사용자가 더 확대 할 때 일반화되지 않은 다각형을 끌어 내리려는 경우와 같이 더 어려운 문제가 발생합니다.

알려진 플랫폼 (예 : 모든 클라이언트의 하드웨어, 브라우저 버전 및 플러그인을 알고 있음)을 사용하는 경우에도 해당 클라이언트에 어떤로드가 있는지 알 수 없습니다. 이런 종류의 접근 방식을 사용하려면 브라우저가 많은 CPU 시간을 가져 와서 사용자 경험을 유동적으로 유지하고 다른 어떤 것도 사용자를 성가 시게해야합니다.

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