Вопросы по mapserver'у

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
jeveloper
Новоприбывший
Сообщения: 9
Зарегистрирован: 17 май 2010, 16:12
Репутация: 0

Вопросы по mapserver'у

Сообщение jeveloper »

Здравствуйте, я совсем новичок в работе с mapserver'ом, но по своей работе мне необходимо сделать wms сервер на его основе, причем так чтоб в зависимости от зума с клиента подменялись разные слои на сервере. Слои из себя представляют несколько растров размеров примерно по 60-80 мегабайт каждый.

В процессе изучения мапсервера у меня возникло несколько вопросов:

1) как я понял менять слои в зависимости от зума можно указывая minscale и maxscale у слоя, но что-то видимо я не совсем понимаю каким образом они задаются, не могли бы вы на примере подсказать и объяснить как это правильно делается?

2)тестовым образом настроив wms сервер и используя openlayer в качестве клиента я понял, что он безбожно тормозит при отображении моих растров, и тогда я задумался о том как можно оптимизировать сервер. Насколько я понимаю, можно взять растр и разрезать его на много маленьких кусочков, после gdaltindex создать по ним shp файл и использовать его как единый слой. Отсюда возникло несколько вопросов, есть ли еще способы оптимизации сервера при работе с растрами и как мне разрезать свой растр на много маленьких кусочков, ведь сейчас у меня есть растр и к нему файл привязки и если разрезать его на много маленьких кусочков, то по логике должно быть и много файлов привязок по 1 на каждый кусочек разрезанного растра. Как это можно сделать автоматически?

3) если я открою свой растр(tif) в любом вьвере картинок, то он выглядит нормально, но когда я вывожу его через мапсервер, wms или просто статическим слоем, качество изображения значительно портиться, с чем это связано и как это можно исправить?

Приношу прощения если мои вопросы звучат по глупому, но я еще совсем новичок в этом деле и нуждаюсь в помощи. Заранее благодарен.
Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Вопросы по mapserver'у

Сообщение Mavka »

1. MIN/MAXSCALE устарели, нужно использовать MIN/MAXSCALEDENOM. Например:

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

LAYER
    ...
    MAXSCALEDENOM    5000
    ...
END
В масштабе 1:500, 1:2000 слой будет виден. А если мельче чем 1:5000, то отключится.

2. Офф. маны Optimization.Raster. Растровые драйверы в UMN для меня полный сумрак. Есть как собственные, так и через gdal (и, кажется, еще через плагины). Читает ли он внутренние/внешние пирамиды - разберитесь и поделитесь с народом.

Правильные пацаны конечно делают красивые и быстрые WMS-ы, а лентяи берут автоматы типа GeoWebCache, GeoJazzy и т.п. (искать по кодовому слову "wms-c"). Если опробуете новенький MapProxy от Omniscale и скажете про него пару слов, то заработаете +10 в карму.

3. Связано это, вероятно, с простеньким алгоритмом линейной интерполяции и отключенным антиалиасингом.
лангольеры под окном жрали время ом-ном-ном
bim2010
Гуру
Сообщения: 977
Зарегистрирован: 27 янв 2009, 22:57
Репутация: 258

Re: Вопросы по mapserver'у

Сообщение bim2010 »

Отсюда возникло несколько вопросов, есть ли еще способы оптимизации сервера при работе с растрами и как мне разрезать свой растр на много маленьких кусочков, ведь сейчас у меня есть растр и к нему файл привязки и если разрезать его на много маленьких кусочков, то по логике должно быть и много файлов привязок по 1 на каждый кусочек разрезанного растра. Как это можно сделать автоматически?
TMS протокол в Openlayers (Т.е. вообще без WMS сервера).
Пирамида тайлов по координатам двух углов (файлы привязки для каждого тайла не нужны).
Еще поднять скорость - кэшированием на стороне клиента.
Автоматически нарезать можно с помощью GDAL/OGR, GDI+, Global Mapper.
jeveloper
Новоприбывший
Сообщения: 9
Зарегистрирован: 17 май 2010, 16:12
Репутация: 0

Re: Вопросы по mapserver'у

Сообщение jeveloper »

Здравствуйте, спасибо за ответы. Попробовал улучшить отображения растра путем добавления в слой
PROCESSING "RESAMPLE=BILINEAR". качество изображения стало лучше, но все же очень далеко от того какое оно в вьюверах, также пробовал добавлять в слой
CLASS
STYLE
ANTIALIAS TRUE
END
END

эффекта не последовало. Может кто знает, что еще можно сделать, для улучшения качества картинки?
Заранее благодарен.
jeveloper
Новоприбывший
Сообщения: 9
Зарегистрирован: 17 май 2010, 16:12
Репутация: 0

Re: Вопросы по mapserver'у

Сообщение jeveloper »

Пирамида тайлов по координатам двух углов (файлы привязки для каждого тайла не нужны).
Еще поднять скорость - кэшированием на стороне клиента.
Автоматически нарезать можно с помощью GDAL/OGR, GDI+, Global Mapper.
Не могли бы вы подробнее рассказать о пирамиде тайлов, что из себя представляет и как должна работать и как автоматически можно её сделать через gdal или дать ссылку на информацию об этом, желательно русскоязычную.

Прошу прощения за навязчивость. Заранее благодарен.
Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Вопросы по mapserver'у

Сообщение Mavka »

С антиалиасингом я, помнится, намучился достаточно. Включить его для встроенного рендера у меня так и не получилось, поэтому перешел на AGG. Примерно так:

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

MAP
    ...
OUTPUTFORMAT
    NAME "png"
    DRIVER AGG/PNG
    MIMETYPE "image/png"
    IMAGEMODE RGBA
    EXTENSION "png"
    FORMATOPTION "INTERLACE=OFF"
END

LAYER
    ...
END
END
Подключать WMS по формату PNG, для других (JPEG, GIF) будет использоваться встроенный.
лангольеры под окном жрали время ом-ном-ном
jeveloper
Новоприбывший
Сообщения: 9
Зарегистрирован: 17 май 2010, 16:12
Репутация: 0

Re: Вопросы по mapserver'у

Сообщение jeveloper »

Mavka писал(а): Подключать WMS по формату PNG, для других (JPEG, GIF) будет использоваться встроенный.
Разъясните пожалуйста, чт овы имеет ввиду под подключением WMS по формату png?
Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Вопросы по mapserver'у

Сообщение Mavka »

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

layer = new OpenLayers.Layer.WMS('layer',
    url_server + '/geoserver/wms/',
    {layers: 'my_layer', format: 'image/png'},
    {isBaseLayer: false}
); 
В QGis в окне подключения к WMS есть переключатель форматов.

P.S. Не по теме - появился OpenLayers.Layer.WMS.Post. Ё моё, где ж они раньше то были?!
лангольеры под окном жрали время ом-ном-ном
jeveloper
Новоприбывший
Сообщения: 9
Зарегистрирован: 17 май 2010, 16:12
Репутация: 0

Re: Вопросы по mapserver'у

Сообщение jeveloper »

[quote="Mavka"]

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

MAP
    ...
OUTPUTFORMAT
    NAME "png"
    DRIVER AGG/PNG
    MIMETYPE "image/png"
    IMAGEMODE RGBA
    EXTENSION "png"
    FORMATOPTION "INTERLACE=OFF"
END

LAYER
    ...
END
END
Сделал как вы сказали, однако качество изображения осталось на прежнем уровне, ну т.е на том когда я ставил PROCESSING "RESAMPLE=BILINEAR" . Может у кого еще есть какие варианты как улучшить качество отображения растра в tiff формате?
Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Вопросы по mapserver'у

Сообщение Mavka »

Остальные методы пробовали?

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

PROCESSING "RESAMPLE=AVERAGE"
PROCESSING "RESAMPLE=BICUBIC" 
лангольеры под окном жрали время ом-ном-ном
jeveloper
Новоприбывший
Сообщения: 9
Зарегистрирован: 17 май 2010, 16:12
Репутация: 0

Re: Вопросы по mapserver'у

Сообщение jeveloper »

Да, пробовал. При разных RESAMPLE качество меняется, однако все равно не хватает как будто антиалиасинга, особенно если на отдалении смотреть, линии "портятся"
Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Вопросы по mapserver'у

Сообщение Максим Дубинин »

вот тут еще было обсуждение и пример с антиалиасингом
viewtopic.php?f=19&t=4123
пристегивайтесь, турбулентность прямо по курсу
alma.azik
Новоприбывший
Сообщения: 9
Зарегистрирован: 23 апр 2011, 23:10
Репутация: 1

Re: Вопросы по mapserver'у

Сообщение alma.azik »

По поводу несоответствия вмс оригинальному изображению. У меня такая ситуация возникала когда в исходном тифе каналы были более 8 бит на пиксел, тогда мапсервер их пытался привести к 8 битовому, но както очень странно. Он либо пытался масштабировать их до 8 бит , либо срезал значения более 8 бит. так же глюки были при нецелочисленных значениях канала. Помогло сохранение данных в 8 битовых целочисленных РГБ.

Нарезать геопривязанные растры можно при помощи gdalwarp с ключом -te , там же в случае необходимости можно поменять разрешение изображения (-tr).
Ответить

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

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

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