거대한 래스터 시계열을위한 웹 매핑 소프트웨어?


11

저는 웹 매핑의 세계로 처음 들어온 ArcGIS Desktop 사용자입니다. 여기 GIS.SE에 발견 조언에 따라, 나는에서 무료 튜토리얼을 시작 OpenGeo .

그러나 대부분의 데모와 예제가 벡터 데이터에 적합하다는 것을 깨닫기 시작했습니다. 내 주요 프로젝트는 5000 x 5000 픽셀 래스터의 300 프레임 시계열을 표시하는 것입니다. 내 데스크탑 컴퓨터에서 이들은 단일 5000x5000x300 16 비트 정수 BIP 바이너리에 저장되며 총 8GB입니다. 내 목표는 시계열의 단일 래스터 셀을 클릭하고 300 요소 시계열의 해당 픽셀 값을 보여주는 그래프를 표시하는 것입니다. 클릭 한 오버레이 맵은 손실 캐시 일 수 있지만 각 시계열 그래프에 사용 된 래스터 데이터는 손실없이 저장해야합니다.

OpenGeo보다이 프로젝트 (초보자 웹 GIS 개발자 용)에 더 적합한 것이 있습니까? 아니면이 설정으로 계속 진행해야합니까?

참고로 Python, Java 및 PHP에서 프로그래밍 경험이 있습니다. SQL에 대한 경험이별로 없습니다. 이 프로젝트는 개방형 프로젝트이므로 필요한 경우 새로운 언어를 배울 시간이 충분합니다. GoDaddy가 VPS를받지 않고 PostgreSQL을 지원하지 않기 때문에 이미 웹 서버가 있지만 호스트를 전환해야 할 수도 있습니다.

당신의 도움을 주셔서 감사합니다!

편집 : (1 월 13 일) 여전히 3 차원 16 비트 정수 BIP 래스터를 저장하고 단일 z 축 "열"데이터를 효율적으로 쿼리 할 수있는 방법에 대한 정보를 찾고 있습니다. 파일 크기를 현재 16 비트 형식에서 두 배로 늘리기 때문에 32 비트 형식으로 변환하고 싶지 않습니다.


2
웹 서버에 PostgreSQL / PostGIS를 넣을 수 있습니까? -확장 가능한 옵션을 찾고 있지 않으면 Amazon AWS (EC2 Relational Databases AMI) aws.amazon.com/running_databases 가 옵션이 아닌 경우 자체 서버를 사용하는 것이 좋습니다 .
Mapperz

1
이 스레드 에 따라 내 호스트 (GoDaddy)는 PostgreSQL을 지원하지 않습니다 . 확장 성이 필요하지 않습니다.이 프로젝트는 주로 몇몇 동료 연구원이 8GB 파일을 전송하여 ENVI에로드하는 것보다 내 데이터에 더 쉽게 액세스 할 수 있도록하는 것입니다.
dmahr

1
새로운 호스트를 고려하고 있다면 webfaction을 충분히 추천 할 수는 없습니다. 그들은 postgresql / postgis1.5를 제공하지만 래스터 기능을 위해서는 아마도 postgis2.0을 원할 것입니다. 이것은 공유 호스팅에도 있습니다.
djq

답변:


6

편집 : (1 월 13 일) 여전히 3 차원 16 비트 정수 BIP 래스터를 저장하고 단일 z 축 "열"데이터를 효율적으로 쿼리 할 수있는 방법에 대한 정보를 찾고 있습니다. 파일 크기를 현재 16 비트 형식에서 두 배로 늘리기 때문에 32 비트 형식으로 변환하고 싶지 않습니다.

이러한 래스터를 쿼리하면 실제로 큰 문제가되지 않아야합니다. 모든 프로그램 언어를 사용하여 이진 데이터를 직접 읽을 수 있으며 액세스가 빠릅니다. 모든 메타 데이터가 별도의 파일에있는 파일 형식으로 데이터를 저장하십시오. BIP는 그런 형식입니다

예를 들어 PHP에서 파일이 행 주요 순서 (그렇지 않으면 x와 y 스위치)라고 가정하고 $ x와 $ y가 그리드의 위치 (0에서 계산), $ nx, $ ny 및 $ nz의 픽셀 수 각 차원과 그리드 셀당 바이트 수 $ nb :

$fp = fopen('yourfile.bil', 'r');

fseek ($fp, $nz*$nb*($y*$nx +$x))//this is a very fast operation
// read some data
$data = fread($fp, $nz*nb);//this is also very fast

오른쪽 픽셀에 액세스했는지 확인하십시오 : 계산은 왼쪽 상단에서 시작하든 아니든 ...

추가 정보 : 데이터를 읽은 후 데이터를 부동 소수점으로 변환해야합니다. 예 :

$dataf=unpack("f*", $data);
print_r($dataf);

호스트가 큰 파일 업로드를 지원하지 않는 경우, 예를 들어 bip 파일을 8 개의 bip 파일로 분할 할 수 있습니다.

내가 웹 사이트의 나머지 부분을 수행하는 방법에 대한 추가 정보 : 데이터가 정적이므로 gdal2tiles 및 openlayers를 사용하여 작은 mapviewer를 생성 할 수 있습니다. http://www.gdal.org/gdal2tiles.html 사실, "확장 성이 필요하지 않습니다.이 프로젝트는 주로 몇몇 동료 연구원들이 8GB 파일을로드하여 ENVI에로드합니다. "webgis 도구 상자를 사용하지 않고도 할 수 있습니다 : 사용자가 이미지를 클릭하고 좌표를 잡도록 허용하십시오 : http://www.emanueleferonato.com/2006/09/02/click -이미지 및 가져 오기 좌표 -javascript /

(5000x5000 이미지를 멋지게 표현하는 방법을 찾아야하지만)


굉장히 유용한 설명입니다. 후속 조치 :이 바이너리를 PostGIS에 저장해야합니까? PHP 또는 Python으로 쿼리하기 전에 서버가 데이터베이스에서 전체 이진 파일을 가져와야하는 상황을 피하고 싶습니다. 그것은 엄청나게 느린 단계 일 것입니다.
dmahr

아니요, 파일은 파일 시스템에 있어야합니다. 데이터베이스를 사용할 필요가 없습니다. 연결을 여는 것만으로도 위의 코드보다 시간이 더 걸릴 것입니다.
johanvdw

7

이는 인프라 중 하나, 아키텍처 중 하나 및 이벤트 처리 중 하나의 세 가지 개별 문제처럼 보입니다. 가능한 한 가지 방법을 제시 할 것이지만, 제 대답은 반드시 일반적인 것입니다.

하부 구조

서버에 Linode (www.linode.com)와 같은 VPS 호스팅 서비스를 사용하는 것이 좋습니다. 이를 통해 전문적으로 유지 관리되는 서버에 대한 전체 (즉, 루트) 액세스 권한을 얻을 수 있습니다. 전원이 나가거나 인터넷 연결이 끊어 질 염려가 없습니다.

건축물

여기에는 너무나 많은 옵션이있어 정말 압도적 일 수 있습니다. 예를 들어, GeoServer 및 OpenLayers를 사용하여 두 개의 시스템을 실행합니다. GeoServer는 Tomcat 7에서 제공합니다. OpenLayers / jQuery 프론트 엔드는 Apache2에서 제공합니다. 벡터 데이터를 저장하기 위해 Postgres / PostGIS를 포함 할 수 있지만 래스터 데이터에는 적합하지 않습니다. 다소 간단한 컨트롤러를 위해 Django 또는 web.py (http://webpy.org/)를 사용하여 Python 시스템을 설정할 수도 있습니다. GeoServer를 사용하면 다음 형식으로 래스터 데이터를 저장할 수 있습니다.

  • ArcGrid-아크 그리드 범위 형식
  • GeoTIFF-지리 정보가있는 태그가 지정된 이미지 파일 형식
  • Gtopo30-Gtopo30 범위 형식
  • ImageMosaic-이미지 모자이크 플러그인
  • WorldImage-공간 데이터 파일이 첨부 된 래스터 파일

이벤트 처리

사용자가지도를 클릭하면 해당 시점에서 필드 데이터의 시계열 그림이 팝업됩니다. 먼저, 위도 및 경도로 URL 요청을 수신하는 Python 또는 Java로 작성 될 수있는 컨트롤러를 설정하십시오. 이 컨트롤러는 서버에서 렌더링 된 정적 이미지 또는 클라이언트 (jQuery)가 플롯으로 변환 할 수있는 json 데이터를 반환합니다.

다음으로지도에서 XY 데이터를 얻으려면 다음과 같은 기능을 사용할 수 있습니다 ( http://dev.openlayers.org/releases/OpenLayers-2.11/examples/click-handler.html 참조 ).

onClick: function(evt) {
    var clickSpot = evt.xy;
    // pass clickSpot to the controller ...
}

도움이 되길 바랍니다.


작성해 주셔서 감사합니다! 8GB가 넘는 3 차원 래스터를 만들기 위해 이러한 파일 형식을 사용한 적이 있습니까? 예를 들어 GeoTIFF는 4GB를 초과 할 수 없습니다. 그리고 서버 소프트웨어가 단일 z 축 시계열 데이터를 효율적으로 쿼리 할 수 ​​있습니까?
dmahr

이미지 피라미드를 살펴보십시오 . 파일 크기 문제에 도움이 될 수 있습니다. 클릭 이벤트를 처리 할 때 코드 (컨트롤러)는 XY 데이터를 수신 한 다음 300 개의 타임 스탬프 된 이미지 각각에서 z- 값을 검색하고 추출합니다. 처리 및 디스크 IO가 많으므로 시간이 오래 걸릴 수 있습니다. "브 루트 포스"방법이 너무 오래 걸리면 대체 알고리즘 및 / 또는 시계열 저장 체계를 살펴볼 수 있습니다.
katahdin

"브 루트 포스"방법은 내가 원하는 것보다 느리다 (데스크톱 컴퓨터에서는 느리다). 내가 찾을 수있는 최상의 대체 스토리지 체계를 중심으로 전체 웹 매핑 서비스를 구성하는 데 관심이 있다고 생각합니다.
dmahr

1

귀하의 질문을 올바르게 이해하면 MapServer와 같은 시간 WMS 서비스를 작성합니다 .

이렇게하면 각 날짜 시간에 대한 올바른 래스터 (GetMap 요청 사용)를 쉽게 표시하고 지정된 날짜 시간 범위 (GetFeatureInfo 요청 사용)의 셀 값을 쉽게 요청할 수 있습니다.

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