Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
-
di@mond
- Интересующийся
- Сообщения: 47
- Зарегистрирован: 13 апр 2009, 14:34
- Репутация: 0
- Откуда: Астрахань
-
Контактная информация:
Сообщение
di@mond » 24 май 2009, 13:13
Создаю WMS-сервис с помощью MapServer и OpenLayers.
До того, как подключила библиотеку OL и сделала изменения в map-файле , карта отображалась отлично! Как только начала вносить изменения (как было описано в одной из статей на этом сайте) - карта перестала отображаться..При этом элементы управления OL видны, а карты нет. Привожу часть map-файла с изменениями
Код: Выделить всё
MAP
NAME "WMS"
STATUS ON
IMAGETYPE GIF
EXTENT 48.054 46.3744 48.0605 46.3782
SIZE 870 600
SHAPEPATH "/ms4w/apps/example/sait/shape/"
IMAGECOLOR 255 255 255
FONTSET "./fonts/fonts.list"
SYMBOLSET "./symbols/symbols35.sym"
WEB
TEMPLATE './map.html'
IMAGEPATH '/ms4w/tmp/ms_tmp/'
IMAGEURL '/ms_tmp/'
METADATA
wms_title "WMS ASTU map"
wms_onlineresource "http://localhost/cgi-bin/mapserv.exe?map=/ms4w/apps/example/sait/astu.map&"
wms_srs "EPSG:4326"
wms_getfeatureinfo "http://localhost/cgi-bin/mapserv.exe?map=/ms4w/apps/example/sait/astu.map&"
wms_featureinfoformat "text/plain"
END
END
PROJECTION
"proj=latlong"
"ellps=WGS84"
"datum=WGS84"
"init=epsg:4326"
END
LAYER
NAME grass
DATA grass
PROJECTION
"proj=latlong"
"ellps=WGS84"
"datum=WGS84"
"init=epsg:4326"
END
STATUS on
TYPE POLYGON
TEMPLATE "dummy"
CLASS
NAME "Зеленые насаждения"
STYLE
COLOR 0 232 0
END
END
METADATA
wms_title "Зеленые насаждения"
wms_srs "EPSG:4326"
wms_include_items "all"
END
END
Вот. Может кто сможет распознать ошибку?))) Заранее спасибо!
-
KolesovDmitry
- Гуру
- Сообщения: 810
- Зарегистрирован: 22 авг 2007, 14:58
- Репутация: 123
- Откуда: Казань
Сообщение
KolesovDmitry » 24 май 2009, 18:45
di@mond писал(а):Создаю WMS-сервис с помощью MapServer и OpenLayers.
... Как только начала вносить изменения (как было описано в одной из статей на этом сайте) - карта перестала отображаться..При этом элементы управления OL видны, а карты нет. ...
Может кто сможет распознать ошибку?
Так можно очень долго гадать, но из того, что элементы управления OL видны, делаем вывод, что ошибка, скорее всего, в map-файле. Вы напишите ошибку, которую выдает MapServer на ваш map-файл, тогда будет понятнее. Для этого вызовите MapServer напрямую, из адресной строки браузера, без всяких OL (с параметром mode=map).
-
di@mond
- Интересующийся
- Сообщения: 47
- Зарегистрирован: 13 апр 2009, 14:34
- Репутация: 0
- Откуда: Астрахань
-
Контактная информация:
Сообщение
di@mond » 24 май 2009, 18:56
KolesovDmitry писал(а):Так можно очень долго гадать, но из того, что элементы управления OL видны, делаем вывод, что ошибка, скорее всего, в map-файле. Вы напишите ошибку, которую выдает MapServer на ваш map-файл, тогда будет понятнее. Для этого вызовите MapServer напрямую, из адресной строки браузера, без всяких OL (с параметром mode=map).
Ошибку Mаpserver выдает следующую:
msProcessProjection():Projectoin library error. No such file or directory.
Если из map-файла убрать все, что касается WMS, и вызвать его напрямую из браузера - открывается нормально! а если с помощью OL и через html страницу выдает много-много маленьких карт...
-
KolesovDmitry
- Гуру
- Сообщения: 810
- Зарегистрирован: 22 авг 2007, 14:58
- Репутация: 123
- Откуда: Казань
Сообщение
KolesovDmitry » 24 май 2009, 19:06
di@mond писал(а):
Ошибку Mаpserver выдает следующую:
msProcessProjection():Projectoin library error. No such file or directory.
Обратил внимание вот на что:
Код: Выделить всё
PROJECTION
"proj=latlong"
"ellps=WGS84"
"datum=WGS84"
"init=epsg:4326"
END
Попробуйте оставить что-то одно (поскольку "init=epsg:4326" полностью описывает проекцию, остальное попросту не нужно):
-
di@mond
- Интересующийся
- Сообщения: 47
- Зарегистрирован: 13 апр 2009, 14:34
- Репутация: 0
- Откуда: Астрахань
-
Контактная информация:
Сообщение
di@mond » 24 май 2009, 19:14
Отлично! По крайней мере ошибок больше не выдает, но все равно рисует много карт вместо одной! Значит проблема уже не в map-файле, а в html-коде.
Привожу код
Код: Выделить всё
<html>
<head>
<title>Карта</title>
<script src="D:\ms4w\apps\example\sait\Openlayers.js"></script>
</head>
<body>
<div style="width:870px; height:600px;" id="map"></div>
<script defer="defer" type="text/javascript">
var bounds = new OpenLayers.Bounds(
// 48.05489804143945, 46.37459778237466,
// 48.060344115989466, 46.37774420521199
48.054, 46.3745, 48.0605, 46.3782
);
var options = {
maxExtent:bounds,
controls: [],
maxResolution: "auto",
projection: "EPSG:4326"};
var map = new OpenLayers.Map('map',options);
var grass = new OpenLayers.Layer.WMS(
"Зеленые насаждения",
"http://localhost/cgi-bin/mapserv.exe?map=/ms4w/apps/example/sait/astu1.map&mode=map&",
{
height: '870',
width: '600',
layers: 'grass',
transparent: 'TRUE',
srs: 'EPSG:4326' }
);
grass.setIsBaseLayer(true);
map.addLayer(grass);
map.addControl(new OpenLayers.Control.PanZoomBar({
position: new OpenLayers.Pixel(2, 15)
}));
map.addControl(new OpenLayers.Control.Navigation());
map.addControl(new OpenLayers.Control.Scale($('scale')));
map.addControl(new OpenLayers.Control.MousePosition({element: $('location')}));
map.addControl(new OpenLayers.Control.LayerSwitcher());
map.zoomToMaxExtent(bounds);
</script>
</td>
</tr>
</form>
</body>
</html>
-
KolesovDmitry
- Гуру
- Сообщения: 810
- Зарегистрирован: 22 авг 2007, 14:58
- Репутация: 123
- Откуда: Казань
Сообщение
KolesovDmitry » 25 май 2009, 08:45
di@mond писал(а):...Значит проблема уже не в map-файле, а в html-коде...
Не уверен, что дело в этом, но у вас указаны границы карты, но не указаны уровни масштабов, попробуйте указать их одним из
описанных способов, например:
Код: Выделить всё
...
maxScale: 10000000,
minScale: 50000000,
numZoomLevels: 5,
...
---
Второй вариант, который приходит в голову - EXTENT в map-файле и bounds в html не соответствуют друг другу (может возникнуть путаница, что указывается вначале - широта или догота).
-
di@mond
- Интересующийся
- Сообщения: 47
- Зарегистрирован: 13 апр 2009, 14:34
- Репутация: 0
- Откуда: Астрахань
-
Контактная информация:
Сообщение
di@mond » 25 май 2009, 17:14
Спасибо за помощь! Разобралась) С еxtent'ом и bounds все нормально! Ошибка в строке адреса к карте
var grass = new OpenLayers.Layer.WMS(
"Зеленые насаждения",
"
http://localhost/cgi-bin/mapserv.exe?ma ... /astu1.map&
service=WMS&",
{
height: '870',
width: '600',
layers: 'grass',
transparent: 'TRUE',
srs: 'EPSG:4326' }
);
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей