Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hishamkaram/geoserver
geoserver is a Go library for manipulating a GeoServer instance via the GeoServer REST API.
https://github.com/hishamkaram/geoserver
catalog geography geoserver geoserver-instance gis go golang mapping workspace
Last synced: about 2 months ago
JSON representation
geoserver is a Go library for manipulating a GeoServer instance via the GeoServer REST API.
- Host: GitHub
- URL: https://github.com/hishamkaram/geoserver
- Owner: hishamkaram
- License: mit
- Created: 2018-03-26T21:36:49.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-02-28T08:00:05.000Z (almost 2 years ago)
- Last Synced: 2024-07-31T20:51:45.666Z (5 months ago)
- Topics: catalog, geography, geoserver, geoserver-instance, gis, go, golang, mapping, workspace
- Language: Go
- Homepage:
- Size: 4.37 MB
- Stars: 86
- Watchers: 3
- Forks: 22
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-go - geoserver - geoserver Is a Go Package For Manipulating a GeoServer Instance via the GeoServer REST API. (Geographic / Search and Analytic Databases)
- awesome-go - geoserver - geoserver is a Go library for manipulating a GeoServer instance via the GeoServer REST API. - ★ 13 (Geographic)
- awesome-go-extra - geoserver - 03-26T21:36:49Z|2022-07-13T18:22:16Z| (Geographic / Advanced Console UIs)
README
[![Go Report Card](https://goreportcard.com/badge/github.com/hishamkaram/geoserver)](https://goreportcard.com/report/github.com/hishamkaram/geoserver)
[![GitHub license](https://img.shields.io/github/license/hishamkaram/geoserver.svg)](https://github.com/hishamkaram/geoserver/blob/master/LICENSE)
[![GitHub issues](https://img.shields.io/github/issues/hishamkaram/geoserver.svg)](https://github.com/hishamkaram/geoserver/issues)
[![Coverage Status](https://coveralls.io/repos/github/hishamkaram/geoserver/badge.svg?branch=master&service=github)](https://coveralls.io/github/hishamkaram/geoserver?branch=master&service=github)
[![Build Status](https://travis-ci.org/hishamkaram/geoserver.svg?branch=master)](https://travis-ci.org/hishamkaram/geoserver)
[![Documentation](https://godoc.org/github.com/hishamkaram/geoserver?status.svg)](https://godoc.org/github.com/hishamkaram/geoserver?)
[![GitHub forks](https://img.shields.io/github/forks/hishamkaram/geoserver.svg)](https://github.com/hishamkaram/geoserver/network)
[![GitHub stars](https://img.shields.io/github/stars/hishamkaram/geoserver.svg)](https://github.com/hishamkaram/geoserver/stargazers)
[![Twitter](https://img.shields.io/twitter/url/https/github.com/hishamkaram/geoserver/edit/master/README.md.svg?style=social)](https://twitter.com/intent/tweet?text=Wow:&url=https%3A%2F%2Fgithub.com%2Fhishamkaram%2Fgeoserver%2Fedit%2Fmaster%2FREADME.md)
# Geoserver
geoserver Is a Go Package For Manipulating a GeoServer Instance via the GeoServer REST API.---
## How to install:
- `go get -v gopkg.in/hishamkaram/geoserver.v1`
- now you can import the package from `gopkg.in/hishamkaram/geoserver.v1`, example:
```
import (
...
"gopkg.in/hishamkaram/geoserver.v1"
...
)
```
---## usage:
- Create new Catalog (which contains all available operations):
- `gsCatalog := geoserver.GetCatalog("http://localhost:8080/geoserver13/", "admin", "geoserver")`
- Use catalog Methods to Perform a Geoserver REST Operation:
- Create New workspace:
```
created, err := gsCatalog.CreateWorkspace("golang")
if err != nil {
fmt.Printf("\nError:%s\n", err)
}
fmt.Println(strconv.FormatBool(created))
```
output if created:
```
INFO[31-03-2018 16:26:35] url:http://localhost:8080/geoserver13/rest/workspaces response Status=201
true
```
output if error:
```
INFO[31-03-2018 16:26:37] url:http://localhost:8080/geoserver13/rest/workspaces response Status=401
WARN[31-03-2018 16:26:37] HTTP Status 401 – Unauthorizedh1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} h2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} h3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} body {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} b {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} p {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;} a {color:black;} a.name {color:black;} .line {height:1px;background-color:#525D76;border:none;}HTTP Status 401 – Unauthorized
Type Status Report
Message Workspace 'golang' already exists
Description The request has not been applied because it lacks valid authentication credentials for the target resource.
Apache Tomcat/9.0.6
Error:Unauthorized
false
```
- Get Layers through GetLayers take workspace as paramter if empty workspace will be ignored and geoserver will return all public layers
```
layers, err := gsCatalog.GetLayers("")
if err != nil {
fmt.Printf("\nError:%s\n", err)
}
for _, lyr := range layers {
fmt.Printf("\nName:%s href:%s\n", lyr.Name, lyr.Href)
}
```
output:
```
INFO[31-03-2018 19:04:44] url:http://localhost:8080/geoserver13/rest/layers response Status=200Name:tiger:giant_polygon href:http://localhost:8080/geoserver13/rest/layers/tiger%3Agiant_polygon.json
Name:tiger:poi href:http://localhost:8080/geoserver13/rest/layers/tiger%3Apoi.json
Name:tiger:poly_landmarks href:http://localhost:8080/geoserver13/rest/layers/tiger%3Apoly_landmarks.json
Name:tiger:tiger_roads href:http://localhost:8080/geoserver13/rest/layers/tiger%3Atiger_roads.json
Name:nurc:Arc_Sample href:http://localhost:8080/geoserver13/rest/layers/nurc%3AArc_Sample.json
Name:nurc:Img_Sample href:http://localhost:8080/geoserver13/rest/layers/nurc%3AImg_Sample.json
Name:nurc:Pk50095 href:http://localhost:8080/geoserver13/rest/layers/nurc%3APk50095.json
Name:nurc:mosaic href:http://localhost:8080/geoserver13/rest/layers/nurc%3Amosaic.json
......
```
- Get Specific Layer from Geoserver:
```
layer, err := gsCatalog.GetLayer("nurc", "Arc_Sample")
if err != nil {
fmt.Printf("\nError:%s\n", err)
} else {
fmt.Printf("%+v\n", layer)
}
```
output:
```
INFO[31-03-2018 20:12:07] url:http://localhost:8080/geoserver13/rest/workspaces/nurc/layers/Arc_Sample response Status=200
{Name:Arc_Sample Path:/ Type:RASTER DefaultStyle:{Class: Name:rain Href:http://localhost:8080/geoserver13/rest/styles/rain.json} Styles:{Class:linked-hash-set Style:[{Class: Name:raster Href:http://localhost:8080/geoserver13/rest/styles/raster.json}]} Resource:{Class:coverage Name:nurc:Arc_Sample Href:http://localhost:8080/geoserver13/rest/workspaces/nurc/coveragestores/arcGridSample/coverages/Arc_Sample.json} Queryable:false Opaque:false Attribution:{Title: Href: LogoURL: LogoType: LogoWidth:0 LogoHeight:0}}
```
- You can find more examples by check testing files
- You can find all supported operations on [Godocs](https://godoc.org/github.com/hishamkaram/geoserver)
---### TESTING
| | Go Version | Geoserver Version | Tested |
|---|------------|-------------------|--------------------|
| 1 | 1.13.x | 2.13.x | :heavy_check_mark: |
| 2 | 1.13.x | 2.14.x | :heavy_check_mark: |
| 3 | 1.14.x | 2.13.x | :heavy_check_mark: |
| 4 | 1.14.x | 2.14.x | :heavy_check_mark: |
| 5 | 1.15.x | 2.13.x | :heavy_check_mark: |
| 6 | 1.15.x | 2.14.x | :heavy_check_mark: |___
### [Documentation](https://godoc.org/github.com/hishamkaram/geoserver)