Kullanıcı arabirimi olmadan raster veri deposu ve katman eklemek için Geoserver 2.0.2'yi programlama


15

Sürekli güncellenecek olan raster görüntüleri dizini var. Bu görüntülerden, Geotool'un PyramidBuilder yardımcı programını kullanarak Görüntü Piramitleri yapıyorum. Kullanıcı arabirimini kullanmadan Geoserver'a raster veri depoları ve katmanları otomatik olarak eklemek için bir cron işi ayarlamam gerekiyor.

Geoserver kılavuzunun REST bölümüne baktıktan sonra çalışma alanımı "testWS" ekleyebildim, ancak bir ImagePyramid veri deposu oluşturmaya çalışmadım.

Veri deposuna erişebildiğim için şekil dosyası örneğini genişlettim ve

curl -u admin:geoserver -XPUT -H 'Content-type: text/plain' \ 
   -d '/opt/geoserver_data_dir/2.0.2/data/test_pyramid.pyr' \
    "http://localhost:8080/geoserver/rest/workspaces/testWS/datastores/test_pyramid.pyr/external.imagepyramid?configure=all"

Burada test_pyramid.pyr bu konumda ImagePyramid'imin temelini oluşturur.

Bu bana "Böyle bir veri deposu yok: test_pyramid" hatası verdi

Her birini kullanıcı arayüzü aracılığıyla manuel olarak eklemeden Geoserver'a yeni bir veri deposu ve katman eklemenin daha iyi bir yolu var mı? Bir veri deposu ve katman olarak genişleyen ImagePyramid ekleyecek uygun REST deyimi işçiliği konusunda yardıma ihtiyacım var.

Bunu yapabilen bazı Java kodları var mı? Geoserver python uzantılarına baktım ama onlar da yoktu.


Jan mail-archive.com/geoserver-users@lists.sourceforge.net/… ' den gelen bu yazı neredeyse aynı sorunu açıklamaktadır. Orada çözüm yok.
DaveParillo

1
En geoserver docs docs.geoserver.org/stable/en/user/restconfig/... bu yöntemi kullanarak yapılandırabilirsiniz sadece DataStores a Şekil dosyası halinde dosya, PostGIS durumunda bir veritabanı veya geçerli olduğunu belirtiyorsa sunucusunu uzak bir Web Özelliği Hizmeti durumunda, ancak dokümanlar basitçe eksik olabilir.
DaveParillo

sunucuya POSTing yaptığınız dosyada ne olduğunu ekleyebilir misiniz?
Ian Turton

Ancak bu bilgileri içeren bir XML dosyası oluşturmanız gerekir.
Ian Turton

ne göndermeye çalışıyorum Geoserver oluşturmak istiyorum veri deposunun yoludur. Bu yol, tek bir dizindeki harici bir tarama dosyaları kümesidir (imagepyramid). Tek istediğim, Geoserver'ın bu konumda bir imagepyramid için veri deposu ve katmanı (geoserver ile aynı dosya sisteminde) oluşturması
rbrister

Yanıtlar:


20

UI dışından curl ve xml içeren bir GeoTiff için çalışma alanı, veri deposu ve katman (coveragestore) oluşturabilirsiniz:

  1. Çalışma alanını oluşturun.

    curl -u admin:geoserver -v -XPOST -H 'Content-type: text/xml' \
         -d '<workspace><name>wsgeotiff</name></workspace>' \
         http://localhost:8080/geoserver/rest/workspaces
  2. Ardından veri deposunu oluşturun.

    curl -u admin:geoserver -v -XPOST -H 'Content-type: text/xml' \
         -d '<coverageStore>
             <name>wsgeotiff_imageGeoTiffWGS84_1298678792699</name>
             <workspace>wsgeotiff</workspace>
             <enabled>true</enabled>
             <type>GeoTIFF</type>
             <url>/home/gis/image_wgs84.tif</url>
             </coverageStore>' \
         "http://localhost:8080/geoserver/rest/workspaces/wsgeotiff/coveragestores?configure=all"
  3. Ardından, Katmanı oluşturun.

     curl -u admin:geoserver -v -XPOST -H 'Content-type: text/xml' \
          -d '<coverage>
              <name>imageGeoTiffWGS84</name>
              <title>imageGeoTiffWGS84</title>
              <nativeCRS>GEOGCS[&quot;WGS 84&quot;,DATUM[&quot;World Geodetic System 1984&quot;,SPHEROID[&quot;WGS 84&quot;,6378137.0, 298.257223563, AUTHORITY[&quot;EPSG&quot;,&quot;7030&quot;]],AUTHORITY[&quot;EPSG&quot;,&quot;6326&quot;]],PRIMEM[&quot;Greenwich&quot;, 0.0, AUTHORITY[&quot;EPSG&quot;,&quot;8901&quot;]],UNIT[&quot;degree&quot;, 0.017453292519943295],AXIS[&quot;Geodetic longitude&quot;, EAST],AXIS[&quot;Geodetic latitude&quot;, NORTH],AUTHORITY[&quot;EPSG&quot;,&quot;4326&quot;]]</nativeCRS>
              <srs>EPSG:4326</srs>
              <latLonBoundingBox><minx>-179.958</minx><maxx>-105.002</maxx><miny>-65.007</miny><maxy>65.007</maxy><crs>EPSG:4326</crs></latLonBoundingBox>
              </coverage>' \
          "http://localhost:8080/geoserver/rest/workspaces/wsgeotiff/coveragestores/wsgeotiff_imageGeoTiffWGS84_1298678792699/coverages"

Tüm bunlar yapıldığında, 'image_wgs84.tif' harici görüntüsüne işaret eden bir veri deponuz ve kapsamı görüntülemek için bir WMS katmanınız olur.

Bilmediğim, bu tekniğin bir görüntü piramit tipi veri deposu oluşturmak için doğrudan bir tekniğe dönüşüp dönüşmeyeceğidir.

İyi şanslar.


Yukarıdaki soru ile aynı problemim var. Güzelce koyduğunuz için teşekkürler, çoğu çözüm kafa karıştırıcı. Yine de burada bir sorum var. Cevabınızda, raster Sınırlama Kutuları girdi olarak verilmelidir. Şimdi anlıyorum eğer yukarıdaki çözümü bir senaryoya koyarsam, sınırlayıcı kutuyu bulmak için gdalinfo kullanabilirim. Ama bu sadece iş (ayrıştırma vb.) Ekledi. Benim sorum geoserver'ın sınırlayıcı kutuları otomatik olarak hesaplamasını sağlayabilir miyiz? Bunu yapabileceğini biliyoruz, çünkü UI'den bir raster eklediğimizde Sınırlayıcı Kutusu hesaplar!
Shaunak

3
GeoServer 2.2'imde Sınırlayıcı Kutusu (ve SRS vb.) Açıkça belirtmeniz gerekmez. Katman oluşturulduktan sonra bunları dosyadan otomatik olarak algılar (GeoTIFF ve ImageMosaic için test edilmiştir). Ayrıca ?recalculate=nativebbox, projeksiyon veya projeksiyon politikası değiştirildiğinde yerel sınırlama kutusunun yeniden hesaplanmasını ayarlayabilirsiniz . Bkz. Docs.geoserver.org/stable/tr/user/rest/api/…
xandriksson

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.