This topic describes how to publish raster data in a GanosBase database by using GeoServer.
Add a data source
The GeoServer web portal varies based on the GeoServer version. In this topic, GeoServer 2.23.2
is used.
Run GeoServer. In the left-side navigation pane, click Stores.
On the Stores page, click Add new Store.
In the Raster Data Sources section of the dialog box that appears, select GanosRaster(PG/PolarDB).
Configure the connection parameters of the GanosBase database.
Parameter
Description
Example value
host
The IP address or the endpoint of the ApsaraDB RDS instance on which the database resides.
xxxxxxx.pg.rds.aliyuncs.com
port
The port number of the database.
3432
database
The name of the database.
rasterdb
username
The username of the account that is used to log on to the database.
pguser
password
The password of the account.
123456
schema
The schema of the table.
Default value: public.
table
The name of the table that stores the raster data.
raster_table
column name
The name of the raster column in the table.
raster_column
filter
The condition that is specified by the WHERE clause in the SQL statement to filter raster data. If more than one rasters meet the condition, the first raster is used.
id=1 or name='srtm'
name
The name of the raster that is displayed in GeoServer.
myraster
Use the RESTful API
Create a data source
Request URL: http://host:port/geoserver/rest/workspaces/{workspace}/coveragestores
Method: POST
Parameter description:
workspace: the name of the created workspace.
datastore body: the information about the data store. Keep the default value of the type parameter, and set the url parameter to the connection information of the ApsaraDB RDS for PostgreSQL or ApsaraDB for PolarDB instance in the JSON format. The following code snippet provides an example:
{ "coverageStore": { "name": "<datasource_name>", "type": "GanosRaster(PG/PolarDB)", "enabled":"true", "workspace":"<wokrspace>", "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}" } }
Obtain the data source.
Publish a raster layer.
Request URL: http://host:port/geoserver/rest/workspaces/{workspace}/coveragestores/{store}/coverages
Method: POST
Parameter description:
workspace: the name of the created workspace.
The following code snippet provides an example of the POST 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" } }