Skip to content

samvera-labs/geoserver-publish

Repository files navigation

Geoserver::Publish

CI Coverage Status

Simple client for publishing Shapefiles and GeoTIFFs to Geoserver.

Installation

Add this line to your application's Gemfile:

gem 'geoserver-publish'

And then execute:

$ bundle

Or install it yourself as:

$ gem install geoserver-publish

Usage

GeoTIFF

Geoserver::Publish.geotiff(workspace_name: "public", file_path: "file:///path/on/geoserver/raster.tif", id: "1234", title: "GeoTiff Title")

Shapefile

Because of a limitation in GeoServer, the layer id must be the same name as the shapefile without the extenstion. For example, if the file name is 1234.shp, the id must be 1234.

Geoserver::Publish.shapefile(workspace_name: "public", file_path: "file:///path/on/geoserver/1234.shp", id: "1234", title: "Shapefile Title")

Deleting

Geoserver::Publish.delete_geotiff(workspace_name: "public", id: "1234")
Geoserver::Publish.delete_shapefile(workspace_name: "public", id: "1234")

Styles

For users wanting to publish styles, this can be done using the GeoServer styles API.

Geoserver::Publish::Style.new.create(style_name: "raster_layer", filename: "raster_layer.sld")
sld = File.read("./spec/fixtures/files/payload/raster_layer.sld")
Geoserver::Publish::Style.new.update(style_name: "raster_layer", filename: "raster_layer.sld", payload: sld)

GeoWebCache

The GeoWebCache REST API can also be used. Note: there is usually a different url that is used.

c = Geoserver::Publish::Connection.new({"url" => "http://localhost:8080/geoserver/gwc/rest", "user"=>"admin",
"password"=>"geoserver"})
Geoserver::Publish::Geowebcache.new(c).masstruncate(layer_name: 'nurc:Pk50095')

Configuration

Default

To use the default GeoServer connection parameters, no further configuration is needed. These are useful for testing and development against a local GeoServer instance.

Environment Variables

GeoServer Connection parameters can be set using environment variables.

  • GEOSERVER_URL
  • GEOSERVER_USER
  • GEOSERVER_PASSWORD

Connection Object

A connection object can be instantiated with a parameter hash and passed into publishing methods.

new_conn = Geoserver::Publish::Connection.new({"url"=> "http://mygeoserver.com:8181/geoserver/rest", "user" => "admin_user", "password" => "supersecret"})
Geoserver::Publish.geotiff(connection: new_conn, workspace_name: "public", file_path: "file:///path/on/geoserver/raster.tif", id: "1234", title: "GeoTiff Title")

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/samvera-labs/geoserver-publish.

If you're working on a PR for this project, create a feature branch off of main.

This repository follows the Samvera Community Code of Conduct and language recommendations. Please do not create a branch called master for this repository or as part of your pull request; the branch will either need to be removed or renamed before it can be considered for inclusion in the code base and history of this repository.