Low commit activity in last 3 years
There's a lot of open issues
A long-lived project that still receives updates
Simple client for publishing Shapefiles and GeoTIFFs to Geoserver
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

> 1.16.0, < 3
~> 10.0
~> 3.0

Runtime

~> 2.2
 Project Readme

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.