All Products
Search
Document Center

ApsaraDB RDS:Publish raster data

Last Updated:Sep 25, 2023

This topic describes how to publish raster data in a Ganos database by using GeoServer.

Add a data source

Note

The GeoServer web portal varies based on the GeoServer version. In this topic, GeoServer 2.23.2 is used.

  1. Run GeoServer. In the left-side navigation pane, click Stores.

    image.png
  2. On the Stores page, click Add New Store.image.png

  3. In the Raster Data Sources section of the dialog box that appears, select GanosRaster(PG/PolarDB).image.png

  4. Configure the connection parameters of the Ganos 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.

    • 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. Setthe type parameter to GanosRaster(PG/PolarDB), and set the url parameter to the connection information about the RDS instance or PolarDB cluster in the 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"
          }
        }