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

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
out2002
Интересующийся
Сообщения: 17
Зарегистрирован: 25 июн 2012, 13:24
Репутация: 0

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

Сообщение out2002 » 09 июл 2012, 20:49

Есть векторный слой рендрится mapserver'ом из postgis
Есть тайлики сделаные MapTiler
При отрисовке openlayer получается не стыковка векторного слоя и растровых тайлов, смешение. Подскажите куда смотреть?
Вложения
Untitled.png
Картинка
Untitled.png (40.27 КБ) 11150 просмотров

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

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

Сообщение Denis Rykov » 09 июл 2012, 22:04

А исходный растр (не тайлированный) совпадает с вектором?
Spatial is now, more than ever, just another column- The Geometry Column.

out2002
Интересующийся
Сообщения: 17
Зарегистрирован: 25 июн 2012, 13:24
Репутация: 0

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

Сообщение out2002 » 09 июл 2012, 22:10

В аркгисе смотрю все совпадает

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

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

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

Сообщение Denis Rykov » 10 июл 2012, 05:13

Растр, который вы разбиваете на тайл - он в каком формате, где прописана привязка? Если можно - выложите куда-нибудь данные, а то так долго гадать можно.
Spatial is now, more than ever, just another column- The Geometry Column.

out2002
Интересующийся
Сообщения: 17
Зарегистрирован: 25 июн 2012, 13:24
Репутация: 0

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

Сообщение out2002 » 10 июл 2012, 07:13

Растр 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();

out2002
Интересующийся
Сообщения: 17
Зарегистрирован: 25 июн 2012, 13:24
Репутация: 0

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

Сообщение out2002 » 10 июл 2012, 09:54

Вот как выглядит растрик в ArcGIS вот как выглядит этот же растрик потайленый в openlayers
Вложения
openlayers.png
Растр в openlayers
openlayers.png (136.61 КБ) 11093 просмотра
arcgis.png
Растр в ArcGIS
arcgis.png (27.75 КБ) 11093 просмотра

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

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

Сообщение Denis Rykov » 10 июл 2012, 11:21

Зачем вы пишете собственную функцию overlay_getTileURL?
Spatial is now, more than ever, just another column- The Geometry Column.

out2002
Интересующийся
Сообщения: 17
Зарегистрирован: 25 июн 2012, 13:24
Репутация: 0

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

Сообщение out2002 » 10 июл 2012, 11:26

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

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

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

Сообщение Denis Rykov » 10 июл 2012, 11:48

В качестве предположения, попробуйте заменить OpenLayers.Layer.TMS на OpenLayers.Layer.XYZ.
Spatial is now, more than ever, just another column- The Geometry Column.

out2002
Интересующийся
Сообщения: 17
Зарегистрирован: 25 июн 2012, 13:24
Репутация: 0

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

Сообщение out2002 » 10 июл 2012, 11:55

Поменял, никаких изменений

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

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

Сообщение Denis Rykov » 10 июл 2012, 11:58

Ну тогда остаётся вам скинуть мне данные, чтобы я сам посмотрел, похоже что-то не так с функцией getURL.
Spatial is now, more than ever, just another column- The Geometry Column.

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

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

Сообщение Denis Rykov » 10 июл 2012, 21:14

Получил ваши данные и сделал следующее:

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

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

P.S. Попытки протайлировать растр с использованием gdal2tiles (бэкенд MapTiler-а) и подключить тайлы, используя OpenLayers.Layer.XYZ пока к результату не привели, будем продолжать разбираться.
Spatial is now, more than ever, just another column- The Geometry Column.

out2002
Интересующийся
Сообщения: 17
Зарегистрирован: 25 июн 2012, 13:24
Репутация: 0

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

Сообщение out2002 » 10 июл 2012, 22:17

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

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

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

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

Сообщение Denis Rykov » 12 июл 2012, 20:20

Ещё актуально? Есть подозрения, что в gdal2tiles закрался какой-то баг, который случается когда на вход подаётся растр в меркаторе, потому как у меня до разбивики на тайлы растр ложиться куда надо, а после тайлирования - улетает, причём это происходит не на всех растрах, разбираюсь. Перепроецировал растр к EPSG:4326 и потаилил - никаких проблем. Свой пример обновил.
Spatial is now, more than ever, just another column- The Geometry Column.

out2002
Интересующийся
Сообщения: 17
Зарегистрирован: 25 июн 2012, 13:24
Репутация: 0

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

Сообщение out2002 » 15 июл 2012, 12:28

Denis Rykov писал(а):Перепроецировал растр к EPSG:4326.
Вот это интересует, как вы это сделали? )

Ответить

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

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

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