OpenLayers에 PostGIS 래스터 표시 옵션


12

이 질문은 웹 맵에 벡터 데이터를 표시하는 것에 대한 이전 질문 과 유사합니다 . OpenLayers를 사용하고 Google과 같은 기본 맵을 사용하여 현재 PostGIS에있는 래스터 데이터를 표시 할 수있는 기본 웹 인터페이스를 원합니다. 래스터 라이브러리와 함께 PostGIS2.0을 설치했으며 JPEG, GeoTIFF 및 PNG와 같은 데이터를 출력하는 몇 가지 옵션이 문서 에서 참조하십시오 . 사용하기에 권장되는 형식입니까?

벡터 데이터를 표시하기 위해 현재 자바 스크립트를 사용하여 사용자 브라우저에서 내 서버로 좌표를 보낸 다음 PostGIS에서 PHP / SQL을 사용하여 쿼리를 수행하고 있습니다. 그러면 결과가베이스 맵에 오버레이 될 수있는 GeoJSON으로 반환됩니다. 래스터를 사용하여 유사한 접근 방식을 적용 할 수 있을지 궁금했지만 어떤 래스터 형식이 가장 적합한 지 또는 고려해야 할 다른 제약이 있는지 모르겠습니다.

GeoServer에 대한 많은 참조를 보았지만이 프로젝트에 필요한지 확실하지 않습니다 (GeoServer를 언제 사용해야하는지 확실하지 않습니다).

답변:


13

래스터 images 이므로 최상의 형식은 이미지 형식입니다 (png / jpg / etc). Geojson은 벡터에 적합한 형식입니다. 예를 들어, 페이스 북 프로필 사진이 순수한 json으로 다시 전송되는 것을 볼 수 없습니다. 물론 json으로 이미지에 URL을 반환하는 것은 매우 다릅니다 :)

jpeg vs png 대 다른 이미지 형식 토론에 관해서는 그것에 대해 많은 다른 의견이 있습니다 . 요약하자면 일부 이미지 형식은 손실없고 다른 이미지 형식 은 손실이 없습니다 . 결정은 데이터로 무엇을할지에 달려 있습니다. 분석을 위해 손실을 용납하지는 않지만 웹에 물건을 표시하는 경우가 있습니다.

PostGIS 2.0에서 이미지를 생성 할 수 있습니까? 확실한. 상기 봐 래스터 출력 섹션을 참조하십시오.

이것이 좋은 생각입니까? 정말 정말 당신이하고있는 일에 달려 있습니다. 때때로 이미지를 생성하는 데 실제로 시간이 오래 걸릴 수 있으며 웹 환경을 통해 요청할 때마다 이미지를 생성하는 비용을 지불하지 않기 위해 이미지를 캐시하려고합니다. PostGIS 측에서 수행 할 수있는 유일한 "캐싱"은 결과를 다른 테이블에 저장 한 다음 필요할 때 테이블을 쿼리하는 것입니다. 지오 서버는이를위한 전체 인프라 ( GeoWebCache )를 가지고 있습니다.

당신이 할 필요 GeoServer, 아마를 - 그러나 그것은 훨씬 쉽게 사용하여 모든 데이터 노출이 미들웨어 때 생활을하게 OGC 웹 서비스 , 캐싱을 수행 , 벡터와 래스터의 스타일링 왕창 더 일을 .


PostGIS를 사용하여 이미지를 생성하는 방법을 알고 있습니다. 이해하려는 것은 Openlayers에 이미지를로드하는 가장 좋은 방법입니다. 예를 들어, ST_AsPNG ()를 사용하는 경우에도이 이미지가있는 위치의 상단 및 하단 좌표를 식별해야합니다. 필자는 개방형 레이어에 직접로드 할 수있는 자체 포함 된 이미지를 깔끔하게 반환 할 수 있다고 생각했습니다 (지오 서버 사용 제외).
djq

예, st_aspng에서 열린 레이어로 직접로드 할 수 있지만 추가 작업이 필요합니다. 그런 다음 bbox를 추적해야하며 구체적으로로드 할 때 dev.openlayers.org/apidocs/files/OpenLayers/Layer/Image-js.html 믿습니다 . 긴 길입니다. 지오 서버 나 맵 서버가 그렇게하는 것이 좋습니다. 그것들은 WMS / WMTS를 돌려주고 두 줄의 코드를 사용하여 그것을 오픈 레이어에 추가합니다.
Ragi Yaser Burhum

4

Mapserver 는 postgis 래스터를 지원하며 기본 설정 방법은 여기 에 나와 있습니다 (항목 9.9).

귀하의 경우 Postserver 래스터를 일반 WMS 레이어로 반환하도록 Mapserver를 WMS 서버 로 작동하도록 설정 합니다. 그런 다음 WMS 레이어 객체를 사용하여 OpenLayers 맵에 레이어를 추가하는 것은 거의 사소한 일 입니다.

이러한 종류의 솔루션은 모두 OpenSource 소프트웨어를 기반으로하며 입증 된 스택이며 광범위한 미들웨어를 필요로하지 않기 때문에 최상의 옵션 일 것입니다. 모든 맵 서버 요구는 cgi 스크립트를 실행할 수있는 웹 서버 (아마 PHP에 이미 사용중인 아파치가 괜찮습니다)입니다. 성능이 중요한 문제가 아닌 경우 (타일) 캐시 사용을 피하고 매번 맵 서버가 즉시 레이어를 렌더링하도록 할 수 있습니다.

서버로드를 최소화하고 응답 시간을 개선하기 위해 타일을 캐시하려면 mapcache 또는 tilecache 사용을 고려 하십시오 . MapcacheMapserver의 여동생 프로젝트이지만 아파치 모듈로 실행될 때 다른 모든 캐시보다 성능 뛰어납니다.

Ubuntu 사용자의 경우 Mapserver의 종속성을 설치하는 가장 쉬운 방법은 시스템에 Ubuntu GIS PPA 를 추가하는 것입니다.


Mapserver는 GeoServer의 훌륭한 대안입니다 (다른 프로젝트에는 사용합니다). 일반적으로 인터페이스가 사용하기 쉬운 고객을 위해 지오 서버를 선택합니다. 그럼에도 불구하고 타일 캐시를 제공하는 것은 정적 컨텐츠를 제공하고 있으며 nginx 또는 다른 비 차단 서버를 기반으로하는 모든 솔루션은 프로세스 기반 격리 또는 스레드 모드에서 아파치 솔루션보다 훨씬 빠릅니다.
Ragi Yaser Burhum

감사합니다 @unicoletti. 사용자 쿼리를 기반으로 래스터를 생성하려는 경우 맵 서버를 사용할 수 있습니까? 예를 들어 사용자가 특정 경계 내에서 영역을 지정하도록 허용하면 해당 영역의 공간 쿼리를 수행 할 수 있습니까?
djq

@celenius Mapserver와 GeoServer 둘 다 그렇게 할 수 있습니다.
Ragi Yaser Burhum

1
@RagiYaserBurhum mapcache를 다른 캐시와 비교합니다. 정적 타일은 캐시를 엄격하게 말하지 않습니다.
unicoletti

0

모든 것이 다릅니다. 이미지 크기, 캐싱, 사용 가능한 라이브러리 (예 : 일부 독점 jp2k 드라이버)

여기 스테로이드에 관한 멋진 pdf , Geoserver에 대한 링크가 있습니다. 다양한 형식, 장단점 및 기본 설정을 안내합니다.

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