Publish raster data

更新时间:
复制 MD 格式

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.

  1. Open the GeoServer web portal and click Stores in the left navigation pane.

    image.png

  2. On the Stores page, click Add new Store.

    image.png

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

    image.png

  4. Enter the connection parameters for your GanosBase database.

    Required parameters:

    ParameterDescriptionExample
    hostIP address or endpoint of the database instancexxxxxxx.pg.rds.aliyuncs.com
    portPort number of the database3432
    databaseName of the databaserasterdb
    usernameUsername for the database accountpguser
    passwordPassword for the database account123456
    tableName of the table that stores raster dataraster_table
    column nameName of the raster column in the tableraster_column

    Optional parameters:

    ParameterDescriptionDefaultExample
    schemaSchema of the tablepublicpublic
    filterSQL WHERE clause to select a specific raster. If multiple rasters match, the first result is used.id=1 or name='srtm'
    nameDisplay name for the raster in GeoServermyraster

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}/coveragestores

  • Method: 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}/coveragestores

  • Method: 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}/coverages

  • Method: 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"
  }
}