skip to Main Content

Статистика и гистограмма растрового слоя

Метод: POST http://maps.kosmosnimki.ru/GetRasterStat

Запрос статистики по яркостям пикселей и гистограммы для одного или нескольких растровых слоёв. Позволяет накладывать фильтры, использовать несколько растровых слоёв и прочее.
Все параметры передаются в единственном параметре Request, в котором в формате JSON указаны все настройки.

Параметры запроса

apikey (тип: string )

Api ключ для авторизации. Вместо ключа могут использоваться куки или другие методы авторизации. Об авторизации.

Request (тип: string , обязательный параметр)

Настройки для расчёта в формате JSON. Request=JSON_text

Пример простого значения Request:

{
"Items":[
    {
        "Layers":["04DDB23F49F84B9A9122CBA6BC26D3ED"]
    }]
}

Items — раздел с перечнем отдельных подзапросов. Позволяет в одним HTTP запросом получить информацию сразу по нескольким отдельным растровым слоям.
Для каждого такого элемента в ответе будет отдельный раздел. Порядок ответов будет совпадать с порядком Items.

Максимально допускается использование до 100 элементов в одном запросе.

Layers — массив с идентификаторами растровых слоев или каталогами растров, как правило в этом массиве указывается только один слой,
но возможно указание сразу нескольких, тогда они будут считаться как одно целое,
склеены между собой в единое растровое изображение в порядке указанном в этом массиве.
Можно указывать отдельные снимки из каталога растров в формате "RC"+layerID+":"+rowId, где layerID идентификатор каталога растров, rowId идентификатор записи в нём.

Максимально допускается использование до 100 слоёв в одном запросе.

Пример в общем виде с дополнительными параметрами:

{
"Border":{"type":"POLYGON","coordinates":[[[80,50],[100,50],[100,80],[80,50]]]},
"BorderSRS":"EPSG:4326",
"Items":[
    {
        "BorderSRS":"EPSG:4326",
        "Name":"1",
        "Layers":["AQWW", "111"],
        "Bands":["r","g","b"],
        "NoData":[0,0,0],
        "Return":["Hist256", "Stat"],
        "Alpha":{
          "Layers":["id"],
          "PixelFormat":"Indexed8bit",
          "MissingValueAsNoData":true, 
          "NoData":[[0,1,5],[125,125,125]]
        }
    },
    {
        "Layers":["LayerID2"],
        "Bands":["r","g","b"],
        "Return":["Hist256", "Stat"],
        "NoData":[0,0,0]
    }]
}

Border — геометрия в формате GeoJSON которая задаёт границу обрезки изображения для расчёта.
Эта граница используется в дополнении к тем границам которые могут быть заданы в растровых слоях.
Параметр Border задаётся для всех Items.

BorderSRS — система координат границы в параметре Border. По умолчанию проекция EPSG:3395.
Для долготы-широты WGS-84 нужно указать значение EPSG:4326. Подробнее о проекциях читать здесь

Name — не обязательный параметр Name, он будет фигурировать в ответе, для сопоставления запросов и ответов.
Может пригодиться когда в одном запросе фигурирует несколько Items.
Можно не использовать, а сопоставлять по индексу в массиве ответов.

Bands — статистику по каких каналам возвращать в ответе. Доступные каналы: "r", "g", "b" (красный, зелёный, голубой). По умолчанию все каналы.

NoData — игнорируемые значения яркостей пикселей для расчёта статистики по отдельным каналам(по одному значению на канал).
Порядок каналов как указано в "Bands".

Return — Задаёт что именно расчитывать. Содержит "Hist256" и/или "Stat".
Hist256 — возвращает гистограмму, Stat — математическое ожидание и стандартное отклонение. По умолчанию передаются все данные.

Period — Если в параметре Layers указаны идентификаторы мультвременных каталогов растров, то с помощью этого параметра указывается временной
интервал для этих каталогов. В расчётах будут участвовать только растры из этого каталога для данного периода.
Содержит два значения, начальная дата и конечная. Условие BeginData <= date < EndDate. Т.е. чтобы получить данные за 11.06.2013 нужно указать "Period":["11.06.2013","12.06.2013"]

Alpha — параметры растров которые используются в качестве дополнительного альфа канала.
Этот растр как бы накладывается на основной и значимые пикселы этих растров означают значимые пикселы основного растра.
Прозрачные пикселы и NoData пикселы будут отсевиаться. В остальном пикселы этого растра никак не смешиываются с пикселами основного растра.

Свойства объекта Alpha

  • Layers — массив идентификаторов слоёв для дополнительного альфа канала.
  • PixelFormat — формат пиксела в котором производится сравнение.
    По умолчанию это "RGBA", альтернативное значение "Indexed8bpp".
    В этом случае в NoData указываются индексы цветов, например [[1],[2],[5]].
    Ограничения для данного режима: только один слой в разделе Alpha, проекция тайлов в Alpha и в основном слое(слоях) должна совпадать.
    Пикслы выходящие за границу Alpha растра должны быть отмечены в NoData этого раздела.
  • NoData — массив из одного или нескольких значений в формате RGB [[R,G,B],[R,G,B]].
    Для "PixelFormat"="Indexed8bpp" по одному значению на массив [[V],[V]]
  • MissingValueAsNoData (по умолчанию true) говорит о том как интерпретировать пикселы не покрываемые растром дополнительного альфа канала:

    true — пикселы не покрываемые доп. альфа каналом будут игонрироваться,

    false — будут считаться значимыми.

Есть альтернативный синтаксис. Когда требуется для каждого подзапроса определить собстенное значение Border. Тогда все элементы нужно обернуть в массив.

Пример такого запроса:

[
  {
    "Border":{"type":"POLYGON","coordinates":[[[80,50],[100,50],[100,80],[80,50]]]},
    "BorderSRS":"EPSG:4326",
    "Items":[
        {
            "BorderSRS":"EPSG:4326",
            "Name":"1",
            "Layers":["AQWW", "111"],
            "Bands":["r","g","b"],
            "NoData":[0,0,0],
            "Return":["Hist256", "Stat"],
            "Alpha":{
              "Layers":["id"],
              "PixelFormat":"Indexed8bit",
              "MissingValueAsNoData":true, 
              "NoData":[[0,1,5],[125,125,125]]
            }
        }]
  },
  {
    "Border":{"type":"POLYGON","coordinates":[[[80,50],[100,50],[100,80],[80,50]]]},
    "BorderSRS":"EPSG:4326",
    "Items":[
        {
        "Layers":"LayerID1",
        "Period":["01.01.2001", "02.02.2010"],
        "Bands":["r","g","b"],
        "Return":["Hist256", "Stat"],
        "NoData":[0,0,0]
    }]
  }          
]

Примеры ответов сервера

Примечание:

ValidPixels + BackgroundPixels + NoDataPixels = общее количество пикселей внутри Border, или внутри границы растра, если Border не задан.

Запрос

http://maps.kosmosnimki.ru/GetRasterStat?

&apikey=apikey

&Request=[{"Border":{"type":"POLYGON","coordinates":[[[80,50],[100,50],[100,80],[80,50]]]},"BorderSRS":"EPSG:4326","Items":{"Layer":"FFAA"}},{"Border":{"type":"POLYGON","coordinates":[[[80,50],[100,50],[100,80],[80,50]]]},"BorderSRS":"EPSG:4326","Items":{"Layer":"BB123"}}]

Ответ.

Статус: 200

[
{
"Name"
Название (идентификатор) ответа. Совпадает с тем что был указазан в параметре Name запроса.
: "1", "BackgroundPixels"
количество пикслей за границей растра, но в пределах Border фильтра.
: 449664, "NoDataPixels"
количество NoData пикселей внутри границ растра и Border
: 57066, "ValidPixels"
количество значимых пикслей (не подподающих под NoData), участвовавших в расчётах на пересечении Border и границы растров
: 410774, "Bands"
Статистика по отдельным каналам
: {
"r"
Красный канал
: {
"Hist256"
гистограмма
: [
0.1, 0.2, 0.3 ], "Min"
Минимальное значение яркости
: 0, "Max"
Максимальное значение яркости
: 1, "Mean"
среднее значение
: 0.4, "StdDev"
стандартное отклонение
: 0.3
}, "g"
Зелёный канал
: {
"Hist256"
гистограмма
: [
0.1, 0.2, 0.3 ], "Mean"
среднее значение
: 0.4, "Min"
Минимальное значение яркости
: 0, "Max"
Максимальное значение яркости
: 1, "StdDev"
стандартное отклонение
: 0.3
}, "b"
Синий канал
: {
"Hist256"
гистограмма
: [
0.1, 0.2, 0.3 ], "Min"
Минимальное значение яркости
: 0, "Max"
Максимальное значение яркости
: 1, "Mean"
среднее значение
: 0.4, "StdDev"
стандартное отклонение
: 0.3
}
}
}, {
"Bands"
Статистика по отдельным каналам
: {
"r"
Красный канал
: {
"Hist256"
гистограмма
: [
0.1, 0.2, 0.3 ], "Min"
Минимальное значение яркости
: 0, "Max"
Максимальное значение яркости
: 1, "Mean"
среднее значение
: 0.4, "StdDev"
стандартное отклонение
: 0.3
}, "g"
Зелёный канал
: {
"Hist256"
гистограмма
: [
0.1, 0.2, 0.3 ], "Min"
Минимальное значение яркости
: 0, "Max"
Максимальное значение яркости
: 1, "Mean"
среднее значение
: 0.4, "StdDev"
стандартное отклонение
: 0.3
}, "b"
Синий канал
: {
"Hist256"
гистограмма
: [
0.1, 0.2, 0.3 ], "Min"
Минимальное значение яркости
: 0, "Max"
Максимальное значение яркости
: 1, "Mean"
среднее значение
: 0.4, "StdDev"
стандартное отклонение
: 0.3
}
}
}
]
Back To Top