Страница 1 из 1
Создание тайлов OSM в WGS84
Добавлено: 26 авг 2014, 16:30
serefimov
Есть задача: нарезать OSM в проекции 4326.
По
инструкции создал тайловый сервер.
Поменял в osm.xml в теге Map значение srs на
Код: Выделить всё
+proj=eqc +lat_ts=0 +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs
Это параметры проекции plate carree.
И проблема в том, что тайлы отрисовываются только в западном полушарии:
- map_only_west.PNG (17.41 КБ) 8122 просмотра
Тайлы на восток не отрисовываются.
Думаю, дело в параметрах тайловой сетки.
У WGS84 на нулевом уровне 2 тайла, например:
А у меня 0/1/0.png не рисуется (проверял напрямую), т.к. в Гугломеркаторе на 0 уровне только один тайл ( т.к. карта квадратная).
Подскажите, как поменять параметры разграфки? Чтоб отрисовывался восток.
Re: Создание тайлов OSM в WGS84
Добавлено: 26 авг 2014, 20:05
ericsson
Хм, если речь именно о схеме тайлов OSM TMS, то разве эта схема не является фиксированной?
Re: Создание тайлов OSM в WGS84
Добавлено: 27 авг 2014, 09:42
serefimov
Разобрался.
Чтобы тайлы генерировались 2 к 1 нужно в файле /etc/renderd.conf в разделе [default] добавить:
Тайл 0/1/0.png рисуется!
Но...
Как теперь отобразить эти тайлы на карте ol3?
Где задать параметры разграфки XYZ?
ericsson писал(а):Хм, если речь именно о схеме тайлов OSM TMS, то разве эта схема не является фиксированной?
Схема-то фиксированная. Вопрос был в том, как их нефиксированно нарезать, а теперь - как отобразить ))
Re: Создание тайлов OSM в WGS84
Добавлено: 28 авг 2014, 13:18
serefimov
Удалось отобразить тайлы в openlayers 2.
- wgs84_msk_lol.PNG (136.27 КБ) 8019 просмотров
Выглядит карта конечно очень странно )
Может кому-то пригодится код подключения TMS:
Код: Выделить всё
var baseUrl = "http://10.46.2.166/osm/";
function getTileUrl (bounds) {
// рассчитываем параметры x,y,z
var res = this.map.getResolution();
var x = Math.round ((bounds.left - this.maxExtent.left) / (res * this.tileSize.w));
var y = Math.round ((this.maxExtent.top - bounds.top) / (res * this.tileSize.h));
var z = this.map.getZoom();
// прописываем урл
var path = z + "/" + x + "/" + y + "." + this.type;
var url = this.url;
if (url instanceof Array) {
url = this.selectUrl(path, url);
}
return url + path;
}
var map = new OpenLayers.Map( 'map', {maxResolution: 180/256});
//maxResolution - разрешение тайла нулевого уровня (180º/256 пикс.)
var layer = new OpenLayers.Layer.TMS( "TMS", baseUrl, { type:'png', getURL:getTileUrl});
map.addLayer(layer);
map.setCenter(new OpenLayers.LonLat(37, 55), 6);
Нужно только поменять baseUrl на свой.
Re: Создание тайлов OSM в WGS84
Добавлено: 28 авг 2014, 21:13
ericsson
Естественно, вам пришлось писать свою функцию, потому что TMS не предполагает этой схемы, то что вы сделали - некий костыль.
А какова цель отображения данных в этой проекции?
Re: Создание тайлов OSM в WGS84
Добавлено: 01 сен 2014, 13:51
serefimov
ericsson писал(а):Естественно, вам пришлось писать свою функцию, потому что TMS не предполагает этой схемы, то что вы сделали - некий костыль.
А какова цель отображения данных в этой проекции?
Исторически неудачный выбор проекции отображения остальных покрытий.
Re: Создание тайлов OSM в WGS84
Добавлено: 01 сен 2014, 21:04
ericsson
Сочувствую.