다른 투영법으로 PostGIS Raster 데이터를 어떻게 관리해야합니까?


10

직사각형의 샘플 배열 인 래스터 이미지로 수집 된 고고 학적 지구 물리학 데이터 를 저장하고 관리해야 합니다.

  • 각 래스터는 보통 20x20 또는 30x30 부동 소수점 샘플이며 일반적으로 1m 간격으로 샘플링됩니다.
  • 설문 조사는 주어진 위치에있는 하나 이상의 이미지로 구성됩니다.
  • 서로 다른 국가 또는 다른 예측을 사용하는 영역에서 두 개의 다른 설문 조사가 발생할 수 있지만 각 설문 조사는 하나의 예측 만 사용합니다.
  • 그들은 함께 볼 가능성이 없으며 각 설문 조사는 대개 저절로 앉아 있습니다.
  • 데이터는 사용자 정의 프런트 엔드에서만 액세스하므로 사용자가 직접 psql또는 이와 유사한 데이터 를 직접 제어 할 수는 없습니다 .
  • 각 샘플은 수집 된대로 저장해야하므로 하나의 샘플이 원래 프로젝션보다 더 많거나 적은 면적을 차지할 수 있기 때문에 Web Mercator와 같은 일반적인 CRS에 다시 투영 할 수 없으며 분석을 수행해야합니다. 데이터에.

PostGIS Raster 데이터베이스에 데이터를 어떻게 저장해야합니까? 내가 생각해 낸 옵션은 다음과 같습니다.

  1. SRID 제약 조건을 무시하고 모든 데이터를 하나의 테이블에 저장하여 데이터를 일관된 방식으로 처리하는 프론트 엔드 코드를 작성하십시오.
  2. 모든 데이터를 하나의 테이블에 저장하고 SRID 제약 조건을 SRID와 측량 ID의 복합으로 다시 작성하십시오.
  3. 테이블 상속을 통해 새 SRID마다 새 테이블을 만듭니다.
  4. 테이블 상속을 통해 각 설문에 대한 새 테이블을 만듭니다.

1과 2는 PostGIS의 멋진 자동화 부분을 깨뜨 렸지만 프론트 엔드 코드에는 숨겨져 있습니다. 그러나 쿼리는 아마도 약간 더 오래 걸릴 것입니다.

3과 4는 FK 제약 조건 등을 관리하기 어렵게 만드는 폭발적인 테이블로 끝날 수 있습니다.

실제로 설문 조사당 래스터 수는 1에서 100 이상이며 조사 횟수는 수백 개에이를 것으로 보입니다. 그러나 뚜렷한 예측의 수가 매우 낮게 유지 될 가능성이 높으며 이는 3을 선호합니다.

답변:


7

나는 당신의 질문에 대한 생각을했으며 궁극적으로 각 설문 조사를 자체 데이터베이스에 저장할 것이라는 결론에 도달했습니다 .

참고 : 데이터베이스에 따르면 여기 에 주어진 postgres 용어에 따라 단일 postgres 데이터베이스 클러스터 내에 생성 된 데이터베이스를 의미하며 자체 사용자, template1 등으로 완전히 분리 된 postgres 프로세스가 아닙니다.

이것이 과도하게 들릴 수도 있지만 실제로 몇 가지 장점이 있습니다.

  • 관리 성 : 각 측량에는 하나의 래스터 테이블이 있으며, 이는 가능한 한 postgis 표준 데이터 관리 표준을 준수 할 수있게합니다 (예 : raster_columns 테이블 또는 FK 또는 제약 조건을 혼동하지 않습니다. 모든 postgis 기능은 여전히 ​​예상대로 작동 함)

  • 단순성 : 일관성있는 이름 지정 전략을 채택하고 시행하는 한 : 각 db를 srvy_ name 으로 호출 한 다음 모든 래스터 테이블 및 열에 대해 동일한 이름 (예 : surveydata )을 재사용하십시오 . 당신이 너무 예리한 경우 (내가 ;-) 알고 있음) 데이터베이스에 저장된 데이터 종류, 마지막 업데이트 시점 등을 설명하는 메타 데이터 테이블을 각 데이터베이스에 추가 할 수도 있습니다. 이러한 일관된 이름을 사용하여 데이터베이스 구조를 스크립팅 / 쿼리하는 것은 쉽습니다.

  • 각 측량이 자체 srid를 사용하는 한 요구 사항에 따라 작동합니다.

  • 확장 성 : I / O를 병렬화 할 수 있도록 데이터베이스를 다른 테이블 스페이스 에 할당하여 데이터베이스 를 다른 스핀들 (또는 스토리지 공급 업체에 따라 디스크, 풀, lun)로 이동할 수 있기 때문에 확장됩니다 . 동일한 데이터베이스에서 다른 디스크로 테이블을 옮기는 것이 훨씬 더 어려울 것입니다

  • 보안 : 데이터베이스 보안 (응용 프로그램 위의 추가 계층)을 활용하여 여러 설문에 다른 권한을 부여 할 수 있습니다.

  • 테스트 : 단일 인스턴스에 데이터베이스의 수천을 처리 포스트 그레스의가 있었다보고, 볼 참조에 대한

  • [이것은 테스트를 거쳐야 지오메트리에 적용되고 래스터에 대해서는 모른다는 것을 알고 있습니다] 다음과 같은 뷰를 생성하여 모든 래스터를 한 번에 쿼리하고 변환 할 수 있습니다.

create or replace view v_all_surveys_as_wgs84 as select ST_Transform(raster, 4326) as raster_wgs84 from srvy_number1.rasterdata union all select ST_Transform(raster, 4326) as raster_wgs84 from srvy_number2.rasterdata [...]

이에 대한 한 가지 가능한 주장은이 설정이 복잡하다는 것입니다. 그러나 첫 번째 데이터베이스가 설정 되면 복제하는 것이 매우 간단하며 적절한 이름 지정 정책이 적용되면 스크립팅에서 완전히 관리 할 수 ​​있다고 주장합니다.


고마워 unicoletti, 나는이 아이디어를 아주 많이 좋아합니다! 내가 할 수있는 일은 다른 고객이 중앙 서버에 설문 조사를 저장하도록하고 각 고객마다 별도의 데이터베이스를 가질 수 있기 때문에 각 설문 조사는 데이터베이스가 아닌 별도의 스키마로 수행하는 것입니다. 그러나 어느 쪽이든, 열 제약 조건에 대한 혼란을 확실히 극복합니다! 데이터베이스 수에 대한 실제 제한이 있는지 확실하지 않았지만 파일 시스템 제한에 의해서만 제한되었습니다.
MerseyViking

감사! 나는 database = schema가 database = instance가 아니라는 것을 의미했다. 용어는 약간 모호한 것입니다. 나는 대답을 명확히 할 것입니다.
unicoletti

또한 데이터를 다른 디스크로 분할하기 위해 테이블 ​​스페이스 사용에 대한 힌트를 추가했습니다.
unicoletti
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.