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

EPSG:4326 в EPSG:3857

Добавлено: 26 мар 2010, 06:38
kosyag
Исходные: Geoserver + OpenLayers
Проблема: Беру WMS-слой из геосервера в СК 3857. Подгружаю KML слой. Делаю преобразование координат для KML слоя:

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

		preFeatureInsert = function(feature) {
				var src = new OpenLayers.Projection('EPSG:4326');
				var dest = new OpenLayers.Projection('EPSG:3857');
				feature.geometry.transform(src, dest); 
			};

			graphic = new OpenLayers.Layer.GML("KML", 
					"testkml/test6.kml", {preFeatureInsert:preFeatureInsert,
					format: OpenLayers.Format.KML,
					displayProjection: new OpenLayers.Projection("EPSG:3857"),
					formatOptions: {
						extractStyles: true,
						extractAttributes: true,
				}});
В результате в европейской части РФ всё ОК, в в восточной сибири получается смещение слоя KML на север километров на 20. Пробовал использовать Proj4js напрямую. Пробовал задавать WMS слой в СК 41001 и 900913. Результат одинаков.
В чём может быть проблема?

Re: EPSG:4326 в EPSG:3857

Добавлено: 26 мар 2010, 15:51
Дмитрий Барышников
А если сделать наоборот? По моему преобразование из Spherical Mercator в WGS84 есть, а наоборот - нет

Re: EPSG:4326 в EPSG:3857

Добавлено: 29 мар 2010, 04:40
kosyag
Попробовал. В геосервере в настройках слоя оставил нативную СК EPSG:3857, declared - EPSG:4326. Выбрал "Reproject Native to declared". В результате Lat/Lon Bounding Box у меня пересчитался в МЕТРЫ! :) "Нич-чего не понимаю." (с)