GeoServer에 PostGIS 래스터를 게시 하시겠습니까?


23

GeoServer를 사용하여 PostGIS 래스터를 어떻게 게시합니까?

Image Mosaic JDBC를 사용하여 Raster 데이터 소스를 만들려고 많은 시간을 보냈지 만 운이 없습니다.

수행 된 단계 :
1. JDBC Image Mosaic 확장 프로그램 다운로드 및 설치 (정상 작동)
2. "연결 매개 변수"파일을 작성하십시오.

connect.postgis.xml.inc :

<connect>
  <dstype value="DBCP"/>
  <username value="postgres" />
  <password value="password" />
  <jdbcUrl value="jdbc:postgresql://localhost:5432/db1" />
  <driverClassName value="org.postgresql.Driver"/>
  <maxActive value="10"/>
  <maxIdle value="0"/>
</connect>


mapping.postgis.xml.inc :

<spatialExtension name="postgis"/>
<mapping>
    <masterTable name="mosaic" >
        <coverageNameAttribute name="name"/>
        <maxXAttribute name="maxX"/>
        <maxYAttribute name="maxY"/>
        <minXAttribute name="minX"/>
        <minYAttribute name="minY"/>
        <resXAttribute name="resX"/>
        <resYAttribute name="resY"/>
        <tileTableNameAtribute name="tiletable" />
    </masterTable>
    <tileTable>
        <blobAttributeName name="rast" />
    </tileTable>
</mapping>


osm.postgis.xml :

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE ImageMosaicJDBCConfig [
  <!ENTITY mapping PUBLIC "mapping"  "mapping.postgis.xml.inc">
  <!ENTITY connect PUBLIC "connect"  "connect.postgis.xml.inc">]>
<config version="1.0">
  <coverageName name="gfm"/>
  <coordsys name="EPSG:25832"/>
  <!-- interpolation 1 = nearest neighbour, 2 = bilinear, 3 = bicubic -->
  <scaleop  interpolation="1"/>
  <verify cardinality="false"/>
  &mapping;
  &connect;
</config>

여기서 "mosaic"은 하나의 행을 포함하는 테이블 (열 : name, titletable, minX, minY, maxX, maxY, resX, resY)입니다. "gfm, testrastertable,,,,,,,"

3. 구성 파일을에 저장했습니다. ./geoserver/data_dir/coverages/
4. 이미지 모자이크 JDBC 데이터 저장소를 추가하는 중에 다음 오류가 발생합니다.

Error: Could not list layers for this store, an error occurred retrieving them: Unable to acquire a reader for this coverage with format: ImageMosaicJDBC



업데이트 : 지오 서버 로그

2012-10-24 14:09:11,404 DEBUG [org.geoserver] - Thread 14 locking in mode WRITE
2012-10-24 14:09:11,404 DEBUG [org.geoserver] - Thread 14 got the lock in mode WRITE
2012-10-24 14:09:11,406 DEBUG [geoserver.config] - Persisting coverage store raster_store
2012-10-24 14:09:11,408 DEBUG [geoserver.config] - Persisted org.geoserver.catalog.impl.CoverageStoreInfoImpl to /opt/geoserver/data_dir/workspaces/raster/raster_store/coveragestore.xml
2012-10-24 14:09:11,416 DEBUG [geoserver.config] - Persisted $Proxy15 to /opt/geoserver/data_dir/global.xml
2012-10-24 14:09:11,438 ERROR [imagemosaic.jdbc] - 
2012-10-24 14:09:11,438 WARN [imagemosaic.jdbc] - 
java.io.IOException
    at org.geotools.gce.imagemosaic.jdbc.ImageMosaicJDBCReader.<init>(ImageMosaicJDBCReader.java:163)
    at org.geotools.gce.imagemosaic.jdbc.ImageMosaicJDBCFormat.getReader(ImageMosaicJDBCFormat.java:209)
....
2012-10-24 14:09:11,439 INFO [geoserver.web] - Getting list of coverages for saved store file:coverages/osm.postgis.xml
java.lang.RuntimeException: Could not list layers for this store, an error occurred retrieving them: Unable to acquire a reader for this coverage with format: ImageMosaicJDBC
    at org.geoserver.web.data.layer.NewLayerPageProvider.getItems(NewLayerPageProvider.java:115)
...
Caused by: java.lang.Exception: Unable to acquire a reader for this coverage with format: ImageMosaicJDBC
    at org.geoserver.catalog.CatalogBuilder.buildCoverage(CatalogBuilder.java:812)
    at org.geoserver.web.data.layer.NewLayerPageProvider.getItems(NewLayerPageProvider.java:82)
    ... 95 more
2012-10-24 14:09:11,441 DEBUG [geoserver.config] - Removing coverage store raster_store
2012-10-24 14:09:11,446 DEBUG [geoserver.config] - Persisted $Proxy15 to /opt/geoserver/data_dir/global.xml
2012-10-24 14:09:11,459 DEBUG [org.geoserver] - Thread 14 releasing the lock in mode WRITE

로깅을 상세하게 설정하고 로그 파일을 확인하십시오
Ian Turton

방금 로그로 업데이트 ... 너무 많은 말을하지 않습니다
asp

아무도 도와 줄 수없는 것처럼 GeoServer 메일 링리스트를 시도해 볼 수 있습니다. geoserver.org/display/GEOS/Mailing+Lists
GIS-Jonathan

이 질문에 대한 업데이트가 있습니까?
Pablo

1
업데이트 없음 ... 지오 서버에서 JDBC 이미지 모자이크를 만들 수 없기 때문에 JDBC 이미지 모자이크를 만드는 아이디어를 포기해야했습니다. 현재 ImagePyramid 저장소를 사용하고 있으며 파일은 디스크에 보관됩니다.
asp

답변:


7

OP와 비슷한 지오 서버에서 postgis 래스터를 사용하려고하는 몇 가지 문제를 해결했습니다. 아래는 래스터 데이터를 성공적으로로드 한 방법입니다.

사전 구성 : FME에서 생성 된 BNG geotiff 레이어를를 사용하여 postgis로 가져 왔습니다 raster2pgsql. 사용 된 명령은 다음과 같습니다.

raster2pgsql -s 27700 -I -M -C {geotiffName}.tif -t 100x100 -l 2,4,6 {schema}.{tableName} | psql -U {user} -d {database}

이것은 피라미드 테이블과 함께 래스터 테이블을 만들었습니다.

현재 내 서버에는의 인스턴스가 Geoserver 2.6.2있습니다. Postgis 래스터를 사용하려면 http://geoserver.org/release/2.6.2/ 에서 다운로드 할 수있는 확장 JDBC 이미지 모자이크가 필요합니다.

그런 다음 확장자 .jar을로 추출했습니다 WEB-INF/lib. 그러면 지오 서버가 postgis의 래스터를 사용할 수있게됩니다. 그러나 데이터에 액세스하려면 몇 가지 설정을 구성해야합니다.

http://docs.geotools.org/latest/userguide/library/coverage/pgraster.html 의 지침을 따르지만 약간 조정되었습니다.

create table {schema}.MOSAIC (NAME varchar(254) not null,
     TileTable varchar(254)not null,
     minX FLOAT8,minY FLOAT8, maxX FLOAT8, maxY FLOAT8,resX FLOAT8, resY FLOAT8, primary key (NAME,TileTable))

이제 예에서 oek라는 "coverage"에 대한 레코드를 삽입하십시오. 이들은 마스터 테이블과 피라미드 테이블입니다.

insert into {schema}.MOSAIC (name, tiletable) values ('oek', {Main raster table name});
insert into {schema}.MOSAIC (name, tiletable) values ('oek', {raster pyramid 2 table name});
insert into {schema}.MOSAIC (name, tiletable) values ('oek', {raster pyramid 4 table name});
insert into {schema}.MOSAIC (name, tiletable) values ('oek', {raster pyramid 6 table name});

또한 문서에 따르면 Postgis JDBC 드라이버 <버전 9의 경우 데이터베이스에서 속성을 설정해야합니다.

ALTER DATABASE dbname SET bytea_output TO 'escape'

이제 지오 서버 구성 :

Geoserver 데이터 디렉토리 내에 디렉토리를 작성하십시오. 여기 /data/coverages에는 3 개의 파일이 포함되어야합니다.connect.pgraster.xml.inc, mapping.pgraster.xml.inc, oek.pgraster.xml

이름과 내용은 http://docs.geotools.org/latest/userguide/library/coverage/pgraster.html 을 따르십시오 . 데이터베이스 연결 문자열과 사용자 이름 / 암호 설정을connect.pgraster.xml.inc

mapping.pgraster.xml.inc 래스터 테이블을 올바르게 참조해야합니다.

<spatialExtension name="pgraster"/>
 <mapping>
  <masterTable name="MOSAIC" >
          <coverageNameAttribute name="name"/>
          <maxXAttribute name="maxX"/>
          <maxYAttribute name="maxY"/>
          <minXAttribute name="minX"/>
          <minYAttribute name="minY"/>
          <resXAttribute name="resX"/>
          <resYAttribute name="resY"/>
          <tileTableNameAtribute  name="tiletable" />
  </masterTable>
  <tileTable>
          <blobAttributeName name="rast" />
  </tileTable>
</mapping>

따라서 이것은 우리가 MOSAIC 테이블에 추가 한 값을 얻을 것입니다. name값은의 열이며 MOSAIC래스터 테이블과 피라미드 테이블에 연결됩니다. rast래스터 테이블의 래스터 열 이름입니다.

oek.pgraster.xml있는지 확인 SRS가 제대로이 경우, 27,700 BNG 설정됩니다.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE ImageMosaicJDBCConfig [
  <!ENTITY mapping PUBLIC "mapping"  "mapping.pgraster.xml.inc">
  <!ENTITY connect PUBLIC "connect"  "connect.pgraster.xml.inc">
]>

<config version="1.0">
  <coverageName name="oek"/>
  <coordsys name="EPSG:27700"/>
  <!-- interpolation 1 = nearest neighbour, 2 = bipolar, 3 = bicubic -->
  <scaleop  interpolation="1"/>
<axisOrder ignore="false"/>
  &mapping;
  &connect;
</config

Geoserver에서 이제 새로운 데이터 저장소를 추가 할 수 있습니다.

새 저장소 추가로 이동하십시오.

ImageMosaicJDBC 선택

이름을 지정하고 URL을 file:coverages/oek.pgraster.xml

이것을 저장하면 손가락이 넘어 가서 오류가 반환되지 않습니다. 그렇다면 지오 서버 로그를 확인하여 문제가 무엇인지, 희망적으로 오타 또는 명명 문제를 나타낼 것입니다.

새 레이어를 추가하고 새 래스터 데이터 저장소를 선택하십시오.

oek라는 새 레이어 / 커버리지를 선택하고 게시하십시오.

그런 다음 레이어 설정에서 좌표계와 경계 상자를 적절하게 조정하십시오.

래스터의 스타일을 지정하려면 다음 문서를 따르십시오. http://docs.geoserver.org/latest/en/user/styling/sld-reference/rastersymbolizer.html

스타일을 추가했습니다.

<RasterSymbolizer>
 <Opacity>1.0</Opacity>
  <ColorMap>
   <ColorMapEntry color="#ffffff" quantity="1" label="label1" opacity="1"/>
   <ColorMapEntry color="#0000ff" quantity="200" label="label2" opacity="1"/>
  </ColorMap>
</RasterSymbolizer>

이것은 가치가있는 곳에서 내 래스터를 파란색으로 채색했습니다.

그런 다음 사용 가능한 레이어가 있어야합니다.

면책 조항 : 나는 GIS 전문가가 아니며, 내가 겪은 많은 일은 시행 착오였습니다. 더 좋은 방법이 있다는 것은 의심의 여지가 없지만, 당분간은 postgis에서 래스터 데이터를 사용할 수있는 기능이 있는지 확인하기 위해 개념 증명 작업을 진행하고 있습니다. 래스터 값 및 스타일링과 같은 세부적인 세부 사항은 여전히 ​​해결해야 할 부분입니다. 더 진행하면 답변이 업데이트됩니다.


2

PostGIS 래스터 플러그인 의 구성 지침 에 따라 교체를 시도해야합니다

<spatialExtension name="postgis"/>

<spatialExtension name="pgraster"/>

구성 파일에서 mapping.postgis.xml.inc.

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