직사각형의 샘플 배열 인 래스터 이미지로 수집 된 고고 학적 지구 물리학 데이터 를 저장하고 관리해야 합니다.
- 각 래스터는 보통 20×20 또는 30×30 부동 소수점 샘플이며 일반적으로 1m 간격으로 샘플링됩니다.
- 설문 조사는 주어진 위치에있는 하나 이상의 이미지로 구성됩니다.
- 서로 다른 국가 또는 다른 예측을 사용하는 영역에서 두 개의 다른 설문 조사가 발생할 수 있지만 각 설문 조사는 하나의 예측 만 사용합니다.
- 그들은 함께 볼 가능성이 없으며 각 설문 조사는 대개 저절로 앉아 있습니다.
- 데이터는 사용자 정의 프런트 엔드에서만 액세스하므로 사용자가 직접
psql
또는 이와 유사한 데이터 를 직접 제어 할 수는 없습니다 . - 각 샘플은 수집 된대로 저장해야하므로 하나의 샘플이 원래 프로젝션보다 더 많거나 적은 면적을 차지할 수 있기 때문에 Web Mercator와 같은 일반적인 CRS에 다시 투영 할 수 없으며 분석을 수행해야합니다. 데이터에.
PostGIS Raster 데이터베이스에 데이터를 어떻게 저장해야합니까? 내가 생각해 낸 옵션은 다음과 같습니다.
- SRID 제약 조건을 무시하고 모든 데이터를 하나의 테이블에 저장하여 데이터를 일관된 방식으로 처리하는 프론트 엔드 코드를 작성하십시오.
- 모든 데이터를 하나의 테이블에 저장하고 SRID 제약 조건을 SRID와 측량 ID의 복합으로 다시 작성하십시오.
- 테이블 상속을 통해 새 SRID마다 새 테이블을 만듭니다.
- 테이블 상속을 통해 각 설문에 대한 새 테이블을 만듭니다.
1과 2는 PostGIS의 멋진 자동화 부분을 깨뜨 렸지만 프론트 엔드 코드에는 숨겨져 있습니다. 그러나 쿼리는 아마도 약간 더 오래 걸릴 것입니다.
3과 4는 FK 제약 조건 등을 관리하기 어렵게 만드는 폭발적인 테이블로 끝날 수 있습니다.
실제로 설문 조사당 래스터 수는 1에서 100 이상이며 조사 횟수는 수백 개에이를 것으로 보입니다. 그러나 뚜렷한 예측의 수가 매우 낮게 유지 될 가능성이 높으며 이는 3을 선호합니다.
답변
나는 당신의 질문에 대한 생각을했으며 궁극적으로 각 설문 조사를 자체 데이터베이스에 저장할 것이라는 결론에 도달했습니다 .
참고 : 데이터베이스에 따르면 여기 에 주어진 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
[...]
이에 대한 한 가지 가능한 주장은이 설정이 복잡하다는 것입니다. 그러나 첫 번째 데이터베이스가 설정 되면 복제하는 것이 매우 간단하며 적절한 이름 지정 정책이 적용되면 스크립팅에서 완전히 관리 할 수 있다고 주장합니다.