Lập trình Geoserver 2.0.2 để thêm lớp lưu trữ dữ liệu raster và lớp mà không cần UI


15

Tôi có một thư mục hình ảnh raster sẽ được cập nhật liên tục. Từ hình ảnh này, tôi đang tạo Kim tự tháp hình ảnh bằng cách sử dụng tiện ích PyramidBuilder của Geotool. Tôi cần thiết lập một công việc định kỳ để tự động thêm kho dữ liệu raster và các lớp vào Geoserver mà không cần sử dụng UI.

Sau khi xem phần REST của sổ tay Geoserver, tôi đã có thể thêm không gian làm việc của mình, "testWS", nhưng thử tạo kho dữ liệu ImagePyramid không hoạt động.

Vì tôi có quyền truy cập vào kho dữ liệu, tôi đã mở rộng trên ví dụ shapefile và cố gắng

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"

Trong đó test_pyramid.pyr là cơ sở của ImagePyramid của tôi tại vị trí này.

Điều này đã cho tôi một lỗi "Không có kho dữ liệu như vậy: test_pyramid"

Có cách nào tốt hơn để thêm kho dữ liệu và lớp mới vào Geoserver mà không cần thêm từng cái thông qua UI không? Tôi cần trợ giúp trong việc tạo ra câu lệnh REST thích hợp sẽ thêm ImagePyramid hiện có dưới dạng kho dữ liệu và lớp.

Có một số mã Java có thể làm điều này? Tôi đã xem các phần mở rộng python của Geoserver nhưng chúng cũng không có cái này.


Bài đăng này từ Jan mail-archive.com/geoserver-users@lists.sourceforge.net/. mô tả gần như chính xác cùng một vấn đề. Không có giải pháp ở đó.
DaveParillo

1
Các tài liệu máy chủ địa lý tại docs.geoserver.org/urdy/en/user/restconfig/, ngụ ý rằng các kho dữ liệu duy nhất bạn có thể định cấu hình bằng phương pháp này là một tệp trong trường hợp của Shapefile, cơ sở dữ liệu trong trường hợp PostGIS hoặc a máy chủ trong trường hợp Dịch vụ Tính năng Web từ xa, nhưng các tài liệu có thể không đầy đủ.
DaveParillo

bạn có thể thêm những gì thực sự trong tập tin bạn đang gửi lên máy chủ không?
Ian Turton

Nhưng bạn phải xây dựng một tệp XML có chứa thông tin đó.
Ian Turton

những gì tôi đang cố gắng đăng là đường dẫn đến kho dữ liệu mà tôi muốn Geoserver tạo. Đường dẫn này là một tập hợp bên ngoài của các tệp raster (imagepyramid) trong một thư mục. Tất cả những gì tôi muốn là cho Geoserver tạo kho dữ liệu và lớp cho một hình ảnh ở vị trí này (trên cùng hệ thống tệp với máy chủ địa lý.)
rbrister

Câu trả lời:


20

Bạn có thể tạo một không gian làm việc, kho dữ liệu và lớp (coveragestore) cho GeoTiff với curl và xml từ bên ngoài UI như vậy:

  1. Tạo không gian làm việc.

    curl -u admin:geoserver -v -XPOST -H 'Content-type: text/xml' \
         -d '<workspace><name>wsgeotiff</name></workspace>' \
         http://localhost:8080/geoserver/rest/workspaces
  2. Sau đó tạo kho dữ liệu.

    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. Sau đó tạo Layer.

     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"

Khi hoàn thành tất cả, bạn có một kho dữ liệu trỏ đến hình ảnh bên ngoài 'image_wgs84.tif' và một lớp WMS để hiển thị vùng phủ sóng trong.

Những gì tôi không biết là liệu kỹ thuật này sẽ chuyển trực tiếp thành một kỹ thuật để tạo một kho dữ liệu kiểu kim tự tháp hình ảnh hay không.

Chúc may mắn.


Tôi có cùng một vấn đề chính xác như câu hỏi ở trên. Cảm ơn vì đã đặt nó một cách độc đáo, hầu hết các giải pháp đều khó hiểu. Tôi có một câu hỏi ở đây mặc dù. Trong câu trả lời của bạn, Hộp Bounding của raster cần được đưa ra làm đầu vào. Bây giờ tôi hiểu rằng nếu tôi đưa giải pháp trên vào một tập lệnh, tôi có thể sử dụng gdalinfo để tìm hộp giới hạn. Nhưng đó chỉ là công việc được thêm vào (phân tích cú pháp, vv). Câu hỏi của tôi là chúng ta có thể làm cho máy tính địa lý tự động tính toán các hộp giới hạn không? Chúng tôi biết nó có thể làm như vậy, bởi vì khi chúng tôi thêm một raster từ UI, nó sẽ tính Bounding Box!
Shaunak

3
Trên GeoServer 2.2 của tôi, bạn không cần chỉ định rõ ràng Bounding Box (và SRS, v.v.). Nó tự động phát hiện chúng từ tệp khi tạo lớp (được thử nghiệm cho GeoTIFF và ImageMosaic). Ngoài ra, bạn có thể đặt ?recalculate=nativebboxlại hộp giới hạn gốc được tính toán lại khi thay đổi chính sách chiếu hoặc chiếu. Xem docs.geoserver.org/ sóng / en / user / rest / api / từ
xandriksson

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.