Статистика и гистограмма растрового слоя
Метод: POST http://maps.kosmosnimki.ru/GetRasterStat
Запрос статистики по яркостям пикселей и гистограммы для одного или нескольких растровых слоёв. Позволяет накладывать фильтры, использовать несколько растровых слоёв и прочее.
Все параметры передаются в единственном параметре Request, в котором в формате JSON указаны все настройки.
Параметры запроса
apikey (тип: string )
Request (тип: string , обязательный параметр)
Пример простого значения 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" : "1",
"BackgroundPixels" : 449664,
"NoDataPixels" : 57066,
"ValidPixels" : 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
}
}
}
]