Подскажите, что не так в map-файле?

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
di@mond
Интересующийся
Сообщения: 47
Зарегистрирован: 13 апр 2009, 14:34
Репутация: 0
Откуда: Астрахань
Контактная информация:

Подскажите, что не так в map-файле?

Сообщение 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
Откуда: Казань

Re: Подскажите, что не так в map-файле?

Сообщение 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
Откуда: Астрахань
Контактная информация:

Re: Подскажите, что не так в map-файле?

Сообщение 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
Откуда: Казань

Re: Подскажите, что не так в map-файле?

Сообщение 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" полностью описывает проекцию, остальное попросту не нужно):

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

PROJECTION
   "init=epsg:4326"
END

di@mond
Интересующийся
Сообщения: 47
Зарегистрирован: 13 апр 2009, 14:34
Репутация: 0
Откуда: Астрахань
Контактная информация:

Re: Подскажите, что не так в map-файле?

Сообщение 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
Откуда: Казань

Re: Подскажите, что не так в map-файле?

Сообщение 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
Откуда: Астрахань
Контактная информация:

Re: Подскажите, что не так в map-файле?

Сообщение 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 гостей