GeoServer прозрачный Nodata

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
xsxVeNxsx
Новоприбывший
Сообщения: 3
Зарегистрирован: 31 май 2015, 05:42
Репутация: 0

GeoServer прозрачный Nodata

Сообщение xsxVeNxsx »

GeoServer 2.6.2, PostgreSQL 9.4 + PostGis 2.1. Также установлен Python 2.7 + GDAL 1.11.2.
Имеется большой набор tiff растров, которые вместе представляют собой карту. Стоит задача создать на их основе мозаику в GeoServer с помощью плагина Image Mosaic JDBC.
По гайду link всё было сделано и работает, но возникла проблема с перекрывающимися участками тайлов. Опишу процесс создания мозаики:
1) Исходные растры - это tiff файлы ~ 4000х3000, 3х канальный цвет различного типа (Byte, U16Int), NoData = 255. Каждый из них при помощи gdal_warp я перевожу в Byte, добавляю Альфа канал и устанавливаю значение Nodata = 0.
gdal_info одного из растров после операции gdal_warp:

Код: Выделить всё

Driver: GTiff/GeoTIFF
Files: oo2.tif
Size is 4085, 3771
Coordinate System is:
PROJCS["Pulkovo_1995_GK_Zone_23N",
    GEOGCS["GCS_Pulkovo_1995",
        DATUM["Pulkovo_1995",
            SPHEROID["Krassowsky 1940",6378245,298.2999999999985,
                AUTHORITY["EPSG","7024"]],
            AUTHORITY["EPSG","6200"]],
        PRIMEM["Greenwich",0],
        UNIT["degree",0.0174532925199433]],
    PROJECTION["Transverse_Mercator"],
    PARAMETER["latitude_of_origin",0],
    PARAMETER["central_meridian",135],
    PARAMETER["scale_factor",1],
    PARAMETER["false_easting",500000],
    PARAMETER["false_northing",0],
    UNIT["metre",1,
        AUTHORITY["EPSG","9001"]]]
Origin = (256692.450150862600000,4878306.704238589900000)
Pixel Size = (20.293822000000080,-20.293822000000080)
Metadata:
  AREA_OR_POINT=Area
Image Structure Metadata:
  COMPRESSION=LZW
  INTERLEAVE=PIXEL
Corner Coordinates:
Upper Left  (  256692.450, 4878306.704) (131d57'59.80"E, 43d59'57.48"N)
Lower Left  (  256692.450, 4801778.701) (132d 0' 3.85"E, 43d18'41.33"N)
Upper Right (  339592.713, 4878306.704) (132d59'57.73"E, 44d 1'19.43"N)
Lower Right (  339592.713, 4801778.701) (133d 1'19.63"E, 43d20' 1.35"N)
Center      (  298142.582, 4840042.703) (132d29'50.18"E, 43d40' 4.09"N)
Band 1 Block=4085x1 Type=Byte, ColorInterp=Red
  NoData Value=0
Band 2 Block=4085x1 Type=Byte, ColorInterp=Green
  NoData Value=0
Band 3 Block=4085x1 Type=Byte, ColorInterp=Blue
  NoData Value=0
Band 4 Block=4085x1 Type=Byte, ColorInterp=Alpha
  NoData Value=0
2)Каждый из полученных растров я рублю на тайлы с помощью утилиты gdal_retile:

Код: Выделить всё

gdal_retile -co "COMPRESS=LZW" -r bilinear -ps 512 512 -levels 3 -targetDir tiles 1.tif
3) Полученные папки с тайлами различных уровней пирамид я загружаю в PG утилитой raster2pgsql:

Код: Выделить всё

raster2pgsql -I -M -F -N 0 -s 2482 *.tif public.forum | psql -U postgres -d gis_db
4)После загрузки слоя в GeoServer проявляется проблема. Nodata одного из растров не прозрачный, а белый и перекрывает другой растр (Белая полоса между квадратами растров):
Изображение

Однако при загрузки верхнего уровня пирамиды (одной из таблиц в PG) в QGIS через менеджер БД таких проблем нету:
Изображение

Также подключался через QGis к WMS геосервера, проблема была аналогичная. Кроме того оказалось, что эта белая полоса - прозрачная (по крайней мере в QGis через неё виден фон). Как я себе это представляю: GeoServer, формируя мозаику, берет тайлы из одной из 4х таблиц, представляющих уровни пирамиды, в порядке, в котором они были загружены. Участки с NoData он делает прозрачными, как только их встретил и ему всё равно, что после появляются тайлы, часть важной информацией которых перекрывает NoData. Хотя по идеи она должна быть видна, т.к. перекрывающий её NoData прозрачный (или должен им быть).
По всей видимости всё это связано именно с настройками GeoServer и WMS. В настройках слоя, из относящихся к делу, есть разве что BackgroundColor и OutputTransparentColor. Их изменения ни то, что не помогают, но, кажется, вообще никак не влияют на слой.
Уже неделю гуглю и по-разному кручу эти тайлы и растры, ничего не помогает.
Аватара пользователя
Филиппов Владислав
Гуру
Сообщения: 1035
Зарегистрирован: 17 фев 2006, 06:28
Репутация: 144
Ваше звание: Геннадич
Откуда: Новосибирск
Контактная информация:

Re: GeoServer прозрачный Nodata

Сообщение Филиппов Владислав »

SLD для растрового слоя нужно создать свой, по дефолту используется встроенный SLD "raster"

http://docs.geoserver.org/stable/en/use ... sters.html
xsxVeNxsx
Новоприбывший
Сообщения: 3
Зарегистрирован: 31 май 2015, 05:42
Репутация: 0

Re: GeoServer прозрачный Nodata

Сообщение xsxVeNxsx »

Филиппов Владислав писал(а):SLD для растрового слоя нужно создать свой, по дефолту используется встроенный SLD "raster"

http://docs.geoserver.org/stable/en/use ... sters.html
Попробовал добавить SLD как тут написано.
Появился черный фон, проблема не исчезла:
Изображение
Также я создал группу слоев с текущей мозаикой + оранжевый квадрат:
Изображение

Как видно, NoData участки прозрачные в превью геосервера (даже без SLD). Но вместе с ним прозрачные и участки правого растра полезной информации, которые перекрываются NoData левого.
Аватара пользователя
Филиппов Владислав
Гуру
Сообщения: 1035
Зарегистрирован: 17 фев 2006, 06:28
Репутация: 144
Ваше звание: Геннадич
Откуда: Новосибирск
Контактная информация:

Re: GeoServer прозрачный Nodata

Сообщение Филиппов Владислав »

xsxVeNxsx
Новоприбывший
Сообщения: 3
Зарегистрирован: 31 май 2015, 05:42
Репутация: 0

Re: GeoServer прозрачный Nodata

Сообщение xsxVeNxsx »

Филиппов Владислав писал(а):а если так http://docs.geoserver.org/stable/en/use ... hannel.sld
Так ведь нельзя, ColorMap не работает с многоканальными растрами.
Аватара пользователя
Филиппов Владислав
Гуру
Сообщения: 1035
Зарегистрирован: 17 фев 2006, 06:28
Репутация: 144
Ваше звание: Геннадич
Откуда: Новосибирск
Контактная информация:

Re: GeoServer прозрачный Nodata

Сообщение Филиппов Владислав »

Снимок.png
Снимок.png (672.7 КБ) 7491 просмотр
такая же беда, надо разбираться
Ответить

Вернуться в «Веб-картография»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя