发布栅格数据

通过GeoServer发布Ganos中的栅格数据。

添加数据源

说明

不同的GeoServer版本,打开的GeoServer Web Portal可能存在差异,本文以GeoServer 2.23.2为例。

  1. 打开GeoServer Web Portal,选择stores

    image.png
  2. 单击add new Storeimage.png

  3. 选择GanosRaster(PG/PolarDB)image.png

  4. 填写Ganos数据库的连接信息。

    参数名称

    描述

    示例

    host

    数据库地址(IP或RDS连接地址)。

    xxxxxxx.pg.rds.aliyuncs.com

    port

    数据库端口号。

    3432

    database

    数据库名称。

    rasterdb

    username

    数据库用户名。

    pguser

    password

    数据库密码。

    123456

    schema

    表所在的schema。

    默认为public

    table

    栅格所在表名。

    raster_table

    column name

    栅格列名称。

    raster_column

    filter

    栅格对象过滤条件,为SQL语句中的where条件。 如果符合条件的栅格有多个,总是使用第一个。

    id=1或name='srtm'

    name

    geoserver显示的栅格名称。

    myraster

REST API

  • 创建数据源

    • 接口:http://host:port/geoserver/rest/workspaces/{workspace}/coveragestores

    • 方法:POST

    • 参数:

      • workspace:已经创建好的workspace名称。

      • datastore body:示例如下,其中type为固定写法,url中填写阿里云PG/PolarDB的连接参数(json格式)。

        {
          "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}"
          }
        }
    • 创建数据源示例

      {
        "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}"
        }
      }
  • 获取数据源

    • 接口:http://host:port/geoserver/rest/workspaces/{workspace}/coveragestores

    • 方法:GET

    • 参数:

      • workspace:已经创建好的workspace名称。

      • datastore body:示例如下,其中type为固定写法,url中填写阿里云pg/polardb的连接参数(json格式)。

        {
          "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"
              }
            ]
          }
        }
  • 发布栅格图层

    • 接口:http://host:port/geoserver/rest/workspaces/{workspace}/coveragestores/{store}/coverages

    • 方法:POST

    • 参数:

      • workspace:已经创建好的workspace名称。

      • post的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"
          }
        }