2013-06-12 3 views
1

PostgreSQL에 래스터로로드하려는 메모리에 비트 맵이 있습니다.PostgreSQL에서 메모리가 아닌 비트 맵에서 래스터를로드하는 방법

바람직하지 않은 옵션은 비트 맵을 파일로 저장 한 다음 raster2pgsql을 사용하는 것이지만 우리는 에 고속으로 이미지를 생성하는 여러 대의 카메라가 있기 때문에 DB에 삽입하기 위해 파일에 파일을 저장할 여유가 없습니다.

메모리에서 직접 비트 맵을로드하는 솔루션을 찾고 있습니다. 어떤 제안?

저는 Windows 7에서 PostGIS2.0을 사용하여 PostgreSQL 9.2를 사용하고 있습니다. 이미지는 중요한 회색 음영입니다.

+0

당신의 이름 봤어 - 그것에 raster2pgsql 및 배관 출력을 ""? 그런데 - 플랫 파일에 저장할 디스크 I/O가 없다면 데이터베이스에 많은 기쁨을 저장하지 않고 나중에 쿼리 할 수 ​​있습니다. –

답변

1

PostGIS 전용 API를 통해 이미지를 변환 할 필요가 없다고 가정하면이 API는 PostgreSQL 대형 객체 API를위한 것입니다.

사용중인 프로그래밍 언어에 대해서는 언급하지 않았으므로보다 자세히 설명하기가 어렵습니다. C를 사용한다고 가정하면 libpqlo_write 등을 사용할 수 있습니다. large objects in the manual을 참조하십시오.

잘라내 지 않으면 raster2pgsql 도구에 파이프를 열고 스트리밍 쓰기를 수행해야 할 수 있습니다. 모든 프로그램이 파이프에서 읽는 것에 대처할 수있는 것은 아니며, 일부는 파일에 대한 임의 액세스가 필요하며,이 경우 임시 파일을 쓰는 데 어려움을 겪을 수 있습니다. raster2pgsql 문서를 간략하게 살펴보면 SQL을 작성하기 때문에 생성 된 SQL 코드를 살펴 보시기 바랍니다. 라이브러리로 링크하고 코드 내에서 사용할 수 있는지 확인하거나 파이프에서 읽을 수 있도록 수정하십시오. 공유 메모리 영역을 파일로 (UNIX의 경우) 액세스 할 수 있으며이를 가리킬 수도 있습니다.

GDAL 라이브러리를 사용하여 착륙시켜 앱 안에서 raster2pgsql과 동일한 작업을 수행 할 것으로 판단됩니다.

(BTW, 사물의 PostGIS와 특정 측면에 대한 당신이 https://gis.stackexchange.com/ 더 많은 행운이있을 수 있습니다)

+0

답장을 보내 주셔서 감사합니다. C++ (Visual Studio 2010, windows 7)로 쓰고 있습니다. 답장에서 가정 한 것처럼 이미지를 변형 할 필요는 없지만 위치와 SRID를 정의해야합니다. libpq의 lo_write를 사용할 때이를 수행하는 방법을 모른다. 그 일을하는 무언가가 있어야한다고 생각했습니다. 나는 raster2pgsql 코드를 살펴볼 것이다. 생성 된 SQL은 파일에서 데이터를 읽으므로 좋지 않습니다. –