WMS слои на план-схеме, масшатбирование и Google Maps
-
- Новоприбывший
- Сообщения: 5
- Зарегистрирован: 05 июл 2008, 08:23
- Репутация: 0
WMS слои на план-схеме, масшатбирование и Google Maps
Коллеги!
У меня такая проблема: создано несколько слоев в GeoServer в системе координат EPSG:4326. С использованием OpenLayers не получается эти слои отобразить на плоскости, т.е. визуально объекты как бы "приплюснуты". Но, если эти WMS слои наложить на Google, то они отображаются именно в плоскости (но только при одном масштабе!).
При изменении масштаба WMS слои не отображаются и управление ими блокируется.
Вот кусочек кода клиента:
var bounds = new OpenLayers.Bounds(
60.5988502502441, 56.832691192627,
60.6119728088379, 56.8392524719238
);
var options = {
controls: [],
maxExtent: bounds,
maxResolution: 'auto',
units: 'degrees',
minZoomLevel: 3,
maxZoomLevel: 9,
numZoomLevels: 19
};
map = new OpenLayers.Map('map', options);
...
var gsat = new OpenLayers.Layer.Google(
"Google Satellite",
{type: G_SATELLITE_MAP}
);
var bld_overlay = new OpenLayers.Layer.WMS(
"WMS layer",
wms_srv_url,
{
layers: 'demo:border,demo:lands',
tiled: 'true',
transparent: 'TRUE'
},
{'reproject': true}
);
...
map.addLayers([gsat,bld_overlay]);
У меня два вопроса:
1. Как отобразить WMS слои в системе координат WGS84 на план-схеме без использования Google Maps?
2. Как отображать WMS слои (и управлять ими) на Google Maps при любом масштабе?
GeoServer 1.6.2, OpenLayers (rev.:4899), IE
ps: пробовал играться со sphericalMercator, использовал EPSG:900913, толку мало...
Спасибо!
У меня такая проблема: создано несколько слоев в GeoServer в системе координат EPSG:4326. С использованием OpenLayers не получается эти слои отобразить на плоскости, т.е. визуально объекты как бы "приплюснуты". Но, если эти WMS слои наложить на Google, то они отображаются именно в плоскости (но только при одном масштабе!).
При изменении масштаба WMS слои не отображаются и управление ими блокируется.
Вот кусочек кода клиента:
var bounds = new OpenLayers.Bounds(
60.5988502502441, 56.832691192627,
60.6119728088379, 56.8392524719238
);
var options = {
controls: [],
maxExtent: bounds,
maxResolution: 'auto',
units: 'degrees',
minZoomLevel: 3,
maxZoomLevel: 9,
numZoomLevels: 19
};
map = new OpenLayers.Map('map', options);
...
var gsat = new OpenLayers.Layer.Google(
"Google Satellite",
{type: G_SATELLITE_MAP}
);
var bld_overlay = new OpenLayers.Layer.WMS(
"WMS layer",
wms_srv_url,
{
layers: 'demo:border,demo:lands',
tiled: 'true',
transparent: 'TRUE'
},
{'reproject': true}
);
...
map.addLayers([gsat,bld_overlay]);
У меня два вопроса:
1. Как отобразить WMS слои в системе координат WGS84 на план-схеме без использования Google Maps?
2. Как отображать WMS слои (и управлять ими) на Google Maps при любом масштабе?
GeoServer 1.6.2, OpenLayers (rev.:4899), IE
ps: пробовал играться со sphericalMercator, использовал EPSG:900913, толку мало...
Спасибо!
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9128
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 747
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
что значит приплюснуты и почему по вашему это неправильно? возможно это и есть Geographic/WGS84?
см. для сравнения первую картинку вот здесь
http://gis-lab.info/docs/giscourse/08-coords.html
см. для сравнения первую картинку вот здесь
http://gis-lab.info/docs/giscourse/08-coords.html
пристегивайтесь, турбулентность прямо по курсу
-
- Новоприбывший
- Сообщения: 5
- Зарегистрирован: 05 июл 2008, 08:23
- Репутация: 0
Проблема исключительно в отображении данных пользователю. Данные отображаются в системе координат WGS84 (т.е. объекты расположены на сфере, это и есть "приплюснутость"), а пользователи привыкли работать с проекцией на плоскости (в MapInfo, например)... Так вот, наложение имеющихся слоев (в WGS84) на снимки Google приводит к нужному эффекту (визуально, объекты расположены на плоскости, на сколько я понял из статьи, азимутальная проекция). Но как мне добиться этого эффекта без Google? Настраивать проекцию?
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9128
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 747
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
-
- Новоприбывший
- Сообщения: 5
- Зарегистрирован: 05 июл 2008, 08:23
- Репутация: 0
в том то и дело, что "попросить отдать" не очень получается
на сколько я понимаю, это делается через настройку параметра displayProjection у объекта OpenLayers.Map
делаю так:
var options = {
controls: [],
maxExtent: bounds,
maxResolution: 'auto',
projection: "EPSG:4326",
displayProjection: "EPSG:28411",
units: 'm'
};
map = new OpenLayers.Map('map', options);
визуально ничего не меняется, такое ощущение, что displayProjection просто игнорируется...
на сколько я понимаю, это делается через настройку параметра displayProjection у объекта OpenLayers.Map
делаю так:
var options = {
controls: [],
maxExtent: bounds,
maxResolution: 'auto',
projection: "EPSG:4326",
displayProjection: "EPSG:28411",
units: 'm'
};
map = new OpenLayers.Map('map', options);
визуально ничего не меняется, такое ощущение, что displayProjection просто игнорируется...
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость