Сплющивание карты в MapServer
-
- Новоприбывший
- Сообщения: 10
- Зарегистрирован: 28 окт 2010, 14:18
- Репутация: 0
- Откуда: Москва
- Контактная информация:
Сплющивание карты в MapServer
Здравствуйте!
Необходимо в два раза уменьшить высоту выдаваемой карты (не контейнера, содержащего карту, не пропорционально все изображение, а именно, чтобы ширина осталась прежней, а высота уменьшилась вдвое).
Карта - массив векторных данных, взятый из PostGIS.
Очень хочется делать это именно MapServer'ом.
Подскажите, пожалуйста, в каком направлении копать?
Необходимо в два раза уменьшить высоту выдаваемой карты (не контейнера, содержащего карту, не пропорционально все изображение, а именно, чтобы ширина осталась прежней, а высота уменьшилась вдвое).
Карта - массив векторных данных, взятый из PostGIS.
Очень хочется делать это именно MapServer'ом.
Подскажите, пожалуйста, в каком направлении копать?
- Mavka
- Гуру
- Сообщения: 2060
- Зарегистрирован: 14 мар 2008, 17:36
- Репутация: 9
Re: Сплющивание карты в MapServer
Легко! Можно плющить и таращить:
Делаете WMS, запрашиваете BBOX, а ширину/высоту задаете любую:
Код: Выделить всё
http://server/mapserv.exe?SERVICE=WMS&LAYERS=world...&BBOX=-180,-90,180,90&WIDTH=200&HEIGHT=100
лангольеры под окном жрали время ом-ном-ном
-
- Новоприбывший
- Сообщения: 10
- Зарегистрирован: 28 окт 2010, 14:18
- Репутация: 0
- Откуда: Москва
- Контактная информация:
Re: Сплющивание карты в MapServer
Спасибо, это то, что нужно! Правда, если только речь идет о единичной загрузке при обращении к MapServer'у.
Как заставить OpenLayers отображать карту в таком же виде?
При конструировании слоя WMS передаю ему вот такие параметры:
Если посмотреть на URL'ы изображений, которые генерирует OpenLayers:
Видно, что какие-то параметры он берет (FORMAT), а какие-то игнорирует начисто...
Как заставить OpenLayers отображать карту в таком же виде?

При конструировании слоя WMS передаю ему вот такие параметры:
Код: Выделить всё
var wms = new OpenLayers.Layer.WMS( "kavmin",
"http://localhost/cgi-bin/mapserv?map=/home/prog2/www/qgis.map&",
{
VERSION: '1.3.0',
REQUEST: 'GetMap',
FORMAT: 'image/png',
LAYERS: 'kavmin',
STYLES: 'default',
CRS: 'EPSG:4326',
WIDTH: 10,
HEIGHT: 10,
BBOX: '1,1,1,1'
},
{
encodeBBOX: true
});
Код: Выделить всё
http://localhost/cgi-bin/mapserv?map=/home/prog2/www/qgis.map&LAYERS=kavmin&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application/vnd.ogc.se_inimage&FORMAT=image/png&SRS=EPSG:4326&BBOX=-90,0,0,90&WIDTH=256&HEIGHT=256
- Mavka
- Гуру
- Сообщения: 2060
- Зарегистрирован: 14 мар 2008, 17:36
- Репутация: 9
Re: Сплющивание карты в MapServer
То чего в классе нет он само-собой игнорирует. А какая задача? Вам все тайлы нужно плющить или загрузить один раз растр и просто двигать его? Если уж подменять параметры запросов к серверу, то лучше сделать враппер, я думаю.
лангольеры под окном жрали время ом-ном-ном
-
- Новоприбывший
- Сообщения: 10
- Зарегистрирован: 28 окт 2010, 14:18
- Репутация: 0
- Откуда: Москва
- Контактная информация:
Re: Сплющивание карты в MapServer
Собственно, стоит задача отображать карту в изометрической проекции.
Я уже поднимал эту тему здесь. В приведенном примере, однако, я не нашел объяснения, как, собственно, модифицировать саму карту. (Делать дома псевдо-трехмерными мне не надо, они будут отображаться простыми изображениями)
Я думаю, загружать один растр целиком будет довольно громоздко, так что лучше плющить тайлы (хотя тут вопрос спорный).
Не хочется изобретать велосипеды и делать что-то громоздкое. Задача, на мой взгляд, достаточно пустяковая.
Если, допустим, использовать вместо MapServer'a GeoServer, решение может быть проще?
Я уже поднимал эту тему здесь. В приведенном примере, однако, я не нашел объяснения, как, собственно, модифицировать саму карту. (Делать дома псевдо-трехмерными мне не надо, они будут отображаться простыми изображениями)
Я думаю, загружать один растр целиком будет довольно громоздко, так что лучше плющить тайлы (хотя тут вопрос спорный).
Не хочется изобретать велосипеды и делать что-то громоздкое. Задача, на мой взгляд, достаточно пустяковая.
Если, допустим, использовать вместо MapServer'a GeoServer, решение может быть проще?
- Mavka
- Гуру
- Сообщения: 2060
- Зарегистрирован: 14 мар 2008, 17:36
- Репутация: 9
Re: Сплющивание карты в MapServer
Нет, к сожалению, ничего не понял :'(
лангольеры под окном жрали время ом-ном-ном
-
- Новоприбывший
- Сообщения: 10
- Зарегистрирован: 28 окт 2010, 14:18
- Репутация: 0
- Откуда: Москва
- Контактная информация:
Re: Сплющивание карты в MapServer
Взглянем, например, вот сюда:
http://osm.kyblsoft.cz/3dmapa/?zoom=17& ... 8&layers=B
Под "картой" я понимаю "пол", на котором стоят параллелепипеды-дома. Чтобы все это вместе красиво отображалось в изометрической проекции, с "полом" тоже надо сделать определенные изменения - в простейшем случае, он должен быть "сплющен" по отношению к своему обычному состоянию примерно в два раза =)
В моем случае изометрии, домики-параллелепипеды не будут генерироваться автоматически, а будут сторонними, нарисованными "от руки" изображениями.
А карта-пол должна вести себя как обыкновенная (приближаться-отдаляться, скроллироваться), только будучи "сплющенной" в два раза.
Надеюсь, теперь стало понятно =)
http://osm.kyblsoft.cz/3dmapa/?zoom=17& ... 8&layers=B
Под "картой" я понимаю "пол", на котором стоят параллелепипеды-дома. Чтобы все это вместе красиво отображалось в изометрической проекции, с "полом" тоже надо сделать определенные изменения - в простейшем случае, он должен быть "сплющен" по отношению к своему обычному состоянию примерно в два раза =)
В моем случае изометрии, домики-параллелепипеды не будут генерироваться автоматически, а будут сторонними, нарисованными "от руки" изображениями.
А карта-пол должна вести себя как обыкновенная (приближаться-отдаляться, скроллироваться), только будучи "сплющенной" в два раза.
Надеюсь, теперь стало понятно =)
- Mavka
- Гуру
- Сообщения: 2060
- Зарегистрирован: 14 мар 2008, 17:36
- Репутация: 9
Re: Сплющивание карты в MapServer
Не нравится мне идея так издеваться на OpenLayers... Проще всего написать враппер, который будет плющить тайлы, но в OL ведь заготолено место для полного тайла. Как он их будет принимать?
Посмотрите еще: Isometric 3D map of Czech Republic (там есть ссылки на тех. описание)
Посмотрите еще: Isometric 3D map of Czech Republic (там есть ссылки на тех. описание)
лангольеры под окном жрали время ом-ном-ном
-
- Новоприбывший
- Сообщения: 10
- Зарегистрирован: 28 окт 2010, 14:18
- Репутация: 0
- Откуда: Москва
- Контактная информация:
Re: Сплющивание карты в MapServer
А можно, например, MapServer'ом как-то заранее плющить карту? Стиль там применить какой? Или, например, на этапе получения данных из PostGIS?
- Mavka
- Гуру
- Сообщения: 2060
- Зарегистрирован: 14 мар 2008, 17:36
- Репутация: 9
Re: Сплющивание карты в MapServer
У меня сейчас есть проект в работе. Вот там и размер картинки и bbox меняется во враппере. Но описать все времени нет. Смотрите в доках MapScript.
Допустим земля и здания у вас отдельно. Причем здания вы рисуете уже в изометрии с нужной ориентацией. Мне видится такой процесс:
Но зачем вам настоящая изометрия? На таких масштабах вполне подойдет косоугольная проекция. Какая разница в чем рисовать домики? Все равно они же не строго ориентированы север-юг. Вот пример у китайцев. Ну не верю я что улицы все строго ориентированы на север.
Допустим земля и здания у вас отдельно. Причем здания вы рисуете уже в изометрии с нужной ориентацией. Мне видится такой процесс:
- Берем bbox, добавляем поля что бы прихватить кусочки соседних зданий
- Выбираем сколько зданий в него попало
- Просим UMN MapServer нарисовать кусочек земли под этот bbox
- Поворачиваем тайл на 45 градусов
- Наклеиваем на него здания (несложная геометрия по вычислению координат) и обрезаем поля
- В итоге получаем набор тайлов, которые склеиваем и делаем ретайл что бы они стали неповернутыми
- Наносим на карту (OpenLayers)
Но зачем вам настоящая изометрия? На таких масштабах вполне подойдет косоугольная проекция. Какая разница в чем рисовать домики? Все равно они же не строго ориентированы север-юг. Вот пример у китайцев. Ну не верю я что улицы все строго ориентированы на север.
лангольеры под окном жрали время ом-ном-ном
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 8 гостей