Страница 1 из 2

Смешения тайликов относительно векторной информации

Добавлено: 09 июл 2012, 20:49
out2002
Есть векторный слой рендрится mapserver'ом из postgis
Есть тайлики сделаные MapTiler
При отрисовке openlayer получается не стыковка векторного слоя и растровых тайлов, смешение. Подскажите куда смотреть?

Re: Смешения тайликов относительно векторной информации

Добавлено: 09 июл 2012, 22:04
Denis Rykov
А исходный растр (не тайлированный) совпадает с вектором?

Re: Смешения тайликов относительно векторной информации

Добавлено: 09 июл 2012, 22:10
out2002
В аркгисе смотрю все совпадает

[ Сообщение с мобильного устройства ]

Re: Смешения тайликов относительно векторной информации

Добавлено: 10 июл 2012, 05:13
Denis Rykov
Растр, который вы разбиваете на тайл - он в каком формате, где прописана привязка? Если можно - выложите куда-нибудь данные, а то так долго гадать можно.

Re: Смешения тайликов относительно векторной информации

Добавлено: 10 июл 2012, 07:13
out2002
Растр GeoTIFF, MapTiler определяет привязку правильно. файлики довольно таки огромные. постараюсь ужать и скинуть. Я так понимаю что проблема в maxExtent: OpenLayers.Bounds(). он был прописан для векторного слоя, а когда я подключаю растровый слой ему надо указать свою позицию что ли.

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

       function overlay_getTileURL(bounds) {
                var res = this.map.getResolution();
                var x = Math.round((bounds.left - this.maxExtent.left) / (res * this.tileSize.w));
                var y = Math.round((bounds.bottom - this.maxExtent.bottom) / (res * this.tileSize.h));
                var z = this.map.getZoom();
		if (x >= 0 && y >= 0) {
	            return this.url + z + "/" + x + "/" + y + "." + this.type;				
		} else {
                    return "http://www.maptiler.org/img/none.png";
		}
	    }

	        // avoid pink tiles
	        OpenLayers.IMAGE_RELOAD_ATTEMPTS = 3;
	        OpenLayers.Util.onImageLoadErrorColor = "transparent";
var map = new OpenLayers.Map({
    div: "map",
maxExtent: new OpenLayers.Bounds(3268906.637700, 5371766.708000, 3319656.299400, 5414472.816700),
           minResolution: "auto",
           projection:"EPSG:1",
    layers: [

        new OpenLayers.Layer.TMS("TMS Layer",
                                 "/test/",
                                 {
                                   url: '', serviceVersion: '.', layername: 'boundary', alpha: true,
                                   type: 'png', getURL: overlay_getTileURL}
            ),
        new OpenLayers.Layer.WMS("OSM (with buffer)",
                                 "http://localhost/cgi-bin/mapserv.fcgi?",
                                {
                                  layers : "boundary",
                                  map    : "/var/www/test.map",
                                  format: 'png',
                                  transparent: "true"
                                },
                                {
                                  isBaseLayer: false
                                }
            )
    ],
    controls: [
        new OpenLayers.Control.Navigation({
            dragPanOptions: {
                enableKinetic: true
            }
        }),
        new OpenLayers.Control.PanZoomBar(),
        new OpenLayers.Control.Attribution(),
        new OpenLayers.Control.MousePosition(),
        new OpenLayers.Control.ScaleBar()
    ]
});

map.addControl(new OpenLayers.Control.LayerSwitcher());
map.zoomToMaxExtent();

Re: Смешения тайликов относительно векторной информации

Добавлено: 10 июл 2012, 09:54
out2002
Вот как выглядит растрик в ArcGIS вот как выглядит этот же растрик потайленый в openlayers

Re: Смешения тайликов относительно векторной информации

Добавлено: 10 июл 2012, 11:21
Denis Rykov
Зачем вы пишете собственную функцию overlay_getTileURL?

Re: Смешения тайликов относительно векторной информации

Добавлено: 10 июл 2012, 11:26
out2002
Не знаю )) а как? я ее выцепил из того что сгенерил мне MapTiler. Я уже вижу что в ней проблема.
У меня тайлики просто на диске хранятся. я функцией формирую урл по которому беру с сервера тайлик.

Re: Смешения тайликов относительно векторной информации

Добавлено: 10 июл 2012, 11:48
Denis Rykov
В качестве предположения, попробуйте заменить OpenLayers.Layer.TMS на OpenLayers.Layer.XYZ.

Re: Смешения тайликов относительно векторной информации

Добавлено: 10 июл 2012, 11:55
out2002
Поменял, никаких изменений

Re: Смешения тайликов относительно векторной информации

Добавлено: 10 июл 2012, 11:58
Denis Rykov
Ну тогда остаётся вам скинуть мне данные, чтобы я сам посмотрел, похоже что-то не так с функцией getURL.

Re: Смешения тайликов относительно векторной информации

Добавлено: 10 июл 2012, 21:14
Denis Rykov
Получил ваши данные и сделал следующее:

1) Перепроецировал вектор и растр в EPSG:900913, чтобы можно было использовать совместно с каким-нибудь публичным сервисом, например, OSM;
2) На базе векторного слоя поднял WMS сервис (MapServer);
3) Растр опубликовал по протоколу TMS, используя TileCache, скормив ему на входе tif-файл. То есть тайлы создаются на лету из растра и при этом кэшируются.

Результат можно посмотреть здесь. Как видно, такого смещения, как в вашем примере, не наблюдается.

P.S. Попытки протайлировать растр с использованием gdal2tiles (бэкенд MapTiler-а) и подключить тайлы, используя OpenLayers.Layer.XYZ пока к результату не привели, будем продолжать разбираться.

Re: Смешения тайликов относительно векторной информации

Добавлено: 10 июл 2012, 22:17
out2002
А можно настройки перепроицирования. И всех конфигов. Я почту вам кину в личку. Доберусь до компа. Буду разбиратся. Спасибо огромное.

[ Сообщение с мобильного устройства ]

Re: Смешения тайликов относительно векторной информации

Добавлено: 12 июл 2012, 20:20
Denis Rykov
Ещё актуально? Есть подозрения, что в gdal2tiles закрался какой-то баг, который случается когда на вход подаётся растр в меркаторе, потому как у меня до разбивики на тайлы растр ложиться куда надо, а после тайлирования - улетает, причём это происходит не на всех растрах, разбираюсь. Перепроецировал растр к EPSG:4326 и потаилил - никаких проблем. Свой пример обновил.

Re: Смешения тайликов относительно векторной информации

Добавлено: 15 июл 2012, 12:28
out2002
Denis Rykov писал(а):Перепроецировал растр к EPSG:4326.
Вот это интересует, как вы это сделали? )