Publish raster data stored in a GanosBase database as a web map service using GeoServer. You can connect GeoServer to a GanosBase raster table through the web portal UI or the GeoServer RESTful API.
The GeoServer web portal varies by version. The examples in this topic use GeoServer 2.23.2.
Prerequisites
Before you begin, ensure that you have:
A running GeoServer instance
A GanosBase database with raster data loaded into a table
The following connection details for your GanosBase database: host, port, database name, username, and password
Add a data source using the web portal
Connect GeoServer to your GanosBase raster table through the web portal. Before you start, gather the required and optional connection parameters listed in step 4.
Open the GeoServer web portal and click Stores in the left navigation pane.

On the Stores page, click Add new Store.

Under Raster Data Sources, select GanosRaster(PG/PolarDB).

Enter the connection parameters for your GanosBase database.
Required parameters:
Parameter Description Example hostIP address or endpoint of the database instance xxxxxxx.pg.rds.aliyuncs.comportPort number of the database 3432databaseName of the database rasterdbusernameUsername for the database account pguserpasswordPassword for the database account 123456tableName of the table that stores raster data raster_tablecolumn nameName of the raster column in the table raster_columnOptional parameters:
Parameter Description Default Example schemaSchema of the table publicpublicfilterSQL WHERE clause to select a specific raster. If multiple rasters match, the first result is used. — id=1orname='srtm'nameDisplay name for the raster in GeoServer — myraster
Use the RESTful API
Use the GeoServer RESTful API to create a coverage store, list existing stores, and publish a raster layer programmatically. All requests use the base path /geoserver/rest/.
Create a data source
Create a coverage store that connects GeoServer to your GanosBase raster data.
Endpoint:
http://<host>:<port>/geoserver/rest/workspaces/{workspace}/coveragestoresMethod: POST
Replace {workspace} with the name of your GeoServer workspace. In the request body, set type to GanosRaster(PG/PolarDB) and encode the database connection details as a JSON string in the url field.
Request body template:
{
"coverageStore": {
"name": "<datasource_name>",
"type": "GanosRaster(PG/PolarDB)",
"enabled": "true",
"workspace": "<workspace>",
"url": "{\"column\":\"<raster_column>\",\"database\":\"<database_name>\",\"filter\":\"<raster_filter>\",\"host\":\"<pg_host>\",\"name\":\"<public_name>\",\"password\":\"<user_password>\",\"port\":<pg_port>,\"schema\":\"<schema_name>\",\"ssl\":false,\"table\":\"<raster_table_name>\",\"userName\":\"<user_name>\",\"valid\":true}"
}
}Example:
{
"coverageStore": {
"name": "srtm",
"type": "GanosRaster(PG/PolarDB)",
"enabled": "true",
"workspace": "test",
"url": "{\"column\":\"rast\",\"database\":\"test_db\",\"filter\":\"name='srtm'\",\"host\":\"pgm-xxxxxxxx.pg.rds.aliyuncs.com\",\"name\":\"srtm_image\",\"password\":\"xxxx\",\"port\":3432,\"schema\":\"public\",\"ssl\":true,\"table\":\"raster_table\",\"userName\":\"raster_user\",\"valid\":true}"
}
}List existing data sources
List all coverage stores in a workspace.
Endpoint:
http://<host>:<port>/geoserver/rest/workspaces/{workspace}/coveragestoresMethod: GET
Replace {workspace} with the name of your GeoServer workspace. The response lists all coverage stores and their detail URLs.
Example response:
{
"dataStores": {
"dataStore": [
{
"name": "txxxxx_shp_filter",
"href": "http://11.xxx.xxx.xxx:8080/geoserver/rest/workspaces/tianxun/datastores/txxxxx_shp_filter.json"
},
{
"name": "yxxxxx_shape1",
"href": "http://11.xxx.xxx.xxx:8080/geoserver/rest/workspaces/tianxun/datastores/yxxxxx_shape1.json"
},
{
"name": "yxxxxxn_shape2",
"href": "http://11.xxx.xxx.xxx:8080/geoserver/rest/workspaces/tianxun/datastores/yxxxxxn_shape2.json"
}
]
}
}Publish a raster layer
Publish a coverage (raster layer) from an existing coverage store.
Endpoint:
http://<host>:<port>/geoserver/rest/workspaces/{workspace}/coveragestores/{store}/coveragesMethod: POST
Replace {workspace} with the workspace name and {store} with the coverage store name. The request body defines the layer metadata, coordinate reference system (CRS), bounding box, and interpolation settings.
Example request body:
{
"coverage": {
"abstract": "Digital elevation model for the Spearfish region.\r\n\r\nsfdem is a Tagged Image File Format with Geographic information",
"defaultInterpolationMethod": "nearest neighbor",
"description": "Generated from sfdem",
"dimensions": {
"coverageDimension": [
{
"description": "GridSampleDimension[-9.999999933815813E36,-9.999999933815813E36]",
"name": "GRAY_INDEX",
"range": {
"max": -9.999999933815813e+36,
"min": -9.999999933815813e+36
}
}
]
},
"enabled": true,
"grid": {
"@dimension": "2",
"crs": "EPSG:26713",
"range": {
"high": "634 477",
"low": "0 0"
},
"transform": {
"scaleX": 30,
"scaleY": -30,
"shearX": 0,
"shearY": 0,
"translateX": 589995,
"translateY": 4927995
}
},
"interpolationMethods": {
"string": [
"nearest neighbor",
"bilinear",
"bicubic"
]
},
"keywords": {
"string": [
"WCS",
"sfdem",
"sfdem",
"type\\@language=fr\\;\\@vocabulary=test\\;"
]
},
"latLonBoundingBox": {
"crs": "EPSG:4326",
"maxx": -103.62940739432703,
"maxy": 44.5016011535299,
"minx": -103.87108701853181,
"miny": 44.370187074132616
},
"metadata": {
"entry": [
{
"@key": "elevation",
"dimensionInfo": {
"enabled": false
}
},
{
"$": "10",
"@key": "cacheAgeMax"
},
{
"@key": "time",
"dimensionInfo": {
"defaultValue": "",
"enabled": false
}
},
{
"$": "true",
"@key": "cachingEnabled"
},
{
"$": "sfdem_sfdem",
"@key": "dirName"
}
]
},
"name": "sfdem",
"namespace": {
"href": "http://localhost:8075/geoserver/restng/namespaces/sf.json",
"name": "sf"
},
"nativeBoundingBox": {
"crs": {
"$": "EPSG:26713",
"@class": "projected"
},
"maxx": 609000,
"maxy": 4928010,
"minx": 589980,
"miny": 4913700
},
"nativeCRS": {
"$": "PROJCS[\"NAD27 / UTM zone 13N\", \n GEOGCS[\"NAD27\", \n DATUM[\"North American Datum 1927\", \n SPHEROID[\"Clarke 1866\", 6378206.4, 294.9786982138982, AUTHORITY[\"EPSG\",\"7008\"]], \n TOWGS84[2.478, 149.752, 197.726, 0.526, -0.498, 0.501, 0.685], \n AUTHORITY[\"EPSG\",\"6267\"]], \n PRIMEM[\"Greenwich\", 0.0, AUTHORITY[\"EPSG\",\"8901\"]], \n UNIT[\"degree\", 0.017453292519943295], \n AXIS[\"Geodetic longitude\", EAST], \n AXIS[\"Geodetic latitude\", NORTH], \n AUTHORITY[\"EPSG\",\"4267\"]], \n PROJECTION[\"Transverse_Mercator\", AUTHORITY[\"EPSG\",\"9807\"]], \n PARAMETER[\"central_meridian\", -105.0], \n PARAMETER[\"latitude_of_origin\", 0.0], \n PARAMETER[\"scale_factor\", 0.9996], \n PARAMETER[\"false_easting\", 500000.0], \n PARAMETER[\"false_northing\", 0.0], \n UNIT[\"m\", 1.0], \n AXIS[\"Easting\", EAST], \n AXIS[\"Northing\", NORTH], \n AUTHORITY[\"EPSG\",\"26713\"]]",
"@class": "projected"
},
"nativeFormat": "GeoTIFF",
"nativeName": "sfdem",
"requestSRS": {
"string": [
"EPSG:26713"
]
},
"responseSRS": {
"string": [
"EPSG:26713"
]
},
"srs": "EPSG:26713",
"store": {
"@class": "coverageStore",
"href": "http://localhost:8075/geoserver/restng/workspaces/sf/coveragestores/sfdem.json",
"name": "sf:sfdem"
},
"supportedFormats": {
"string": [
"ARCGRID",
"IMAGEMOSAIC",
"GTOPO30",
"GEOTIFF",
"GIF",
"PNG",
"JPEG",
"TIFF"
]
},
"title": "Spearfish elevation"
}
}