All Products
Search
Document Center

PolarDB:Publish raster data

Last Updated:Jul 26, 2023

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

  1. Run GeoServer. In the left-side navigation pane, click Stores.
  2. On the Stores page, click Add New Store. In the Raster Data Sources section of the dialog box that appears, select GanosRaster(PG/PolarDB).
  3. Configure the connection parameters of the RDS instance.

    The following table describes the parameters.

    ParameterDescriptionExample
    hostThe IP address or the endpoint of the RDS instance.xxxxxxx.pg.rds.aliyuncs.com
    portThe port number of the RDS instance.3432
    databaseThe name of the RDS instance.rasterdb
    usernameThe username that is used to log on to the RDS instance.pguser
    passwordThe password that is used to log on to the RDS instance.123456
    schemaThe schema of the table.Default value: public.
    tableThe name of the table that stores the raster data.raster_table
    column nameThe name of the raster column in the table.raster_column
    filterThe 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'
    nameThe 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.
    • Request URL: http://host:port/geoserver/rest/workspaces/{workspace}/coveragestores
    • Method: GET
    • 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 about the RDS for PostgreSQL or RDS for PolarDB instance in JSON format. The following code snippet provides an example:
        {
          "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.
    • 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"
          }
        }