This topic describes how to publish raster data in an ApsaraDB RDS for PostgreSQL or ApsaraDB RDS for PolarDB instance that is powered by Ganos extensions by using GeoServer.
Add a data source
- 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 RDS instance.
The following table describes the parameters.
Parameter Description Example host The IP address or the endpoint of the RDS instance. xxxxxxx.pg.rds.aliyuncs.com port The port number of the RDS instance. 3432 database The name of the RDS instance. rasterdb username The username that is used to log on to the RDS instance. pguser password The password that is used to log on to the RDS instance. 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
REST 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 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" } }