Mapserver Leaflet не отображается карта

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
Vladimir_I
Новоприбывший
Сообщения: 4
Зарегистрирован: 11 сен 2014, 01:45
Репутация: 0

Mapserver Leaflet не отображается карта

Сообщение Vladimir_I » 11 сен 2014, 03:58

Добрый день, помогите разобраться. На FreeBSD 9.1 установлен Mapserver 6.0.3 и настроен на WMS. Если я обращаюсь напрямую к серверу (http://myserver/cgi-bin/mapserv.cgi?map=/ms4w/apps/kamchatka/kam1.map&layer=borders&mode=map), все рисуется как надо. Однако при открытии странички, где используется Leaflet 0.7.3 с плагином Proj4Leaflet, подгружаются только пустые тайлы.

Вот map файл:

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

MAP
    NAME "WMS"
    STATUS ON
    SIZE 1000 800
    EXTENT -2133253.55 4885560.73 1870879.36 8774828.60
    UNITS meters
    SHAPEPATH "/ms4w/apps/kamchatka/shp/"
    IMAGECOLOR 255 255 255
    WEB
        TEMPLATE "/usr/local/www/apache22/data/kamchatka.html"
        IMAGEPATH "/usr/local/www/apache22/data/images/"
        IMAGEURL "/images/"
        METADATA
            wms_title "demo"
            wms_abstract "This is demo"
            wms_onlineresource "http://91.216.81.152/cgi-bin/mapserv.cgi?map=/ms4w/apps/kamchatka/kam1.map"
            wms_srs "EPSG:2517"
            wms_enable_request "*"
            wms_getfeatureinfo "http://91.216.81.152/cgi-bin/mapserv.cgi?map=/ms4w/apps/kamchatka/kam1.map"
            wms_feature_info_mime_type "text/html"
            wms_featureinfoformat "text/html"
        END
    END
    PROJECTION
        "proj=tmerc"
        "lat_0=0"
        "lon_0=159"
        "k=1"
        "x_0=500000"
        "y_0=0"
        "ellps=krass"
        "units=m"
        "no_defs"
    END
    LAYER
        NAME "borders"
        DATA "borders.shp"
        TYPE POLYGON
        STATUS ON
        PROJECTION
            "proj=tmerc"
            "lat_0=0"
            "lon_0=159"
            "k=1"
            "x_0=500000"
            "y_0=0"
            "ellps=krass"
            "units=m"
            "no_defs"
        END
        CLASS
            NAME "Area"
            OUTLINECOLOR 0 0 0
        END
        METADATA
            wms_title "3333"
            wms_abstract "3333 test"
            wms_srs "EPSG:2517"
            wms_include_items "all"
        END
    END
END
Вот код странички:

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

<!doctype html>
<html lang="ru">
  <head>
    <link rel="stylesheet" href="./js/leaflet.css" />
    <!--[if lte IE 8]>
    <link rel="stylesheet" href="./js/leaflet.ie.css" />
    <![endif]-->
    <script src="./js/leaflet.js"></script>
    <script src="./js/proj4-compressed.js"></script>
    <script src="./js/proj4leaflet.js"></script>
<style>
    body { margin: 0; padding: 0;}
    #map {width: 100%; height: 900px; }
</style>
</head>
  <body>
    <div id="map"></div> 
    <script>
     var crs = new L.Proj.CRS('EPSG:2517',
                              '+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs',
                              {
                                resolutions: [
                                0
                                ],
                                origin: [0,0]
                              }),
                              map = new L.Map('map',{
                                crs: crs,
                                continuousWorld: true,
                                worldCopyJump: false
                              }
                                );
    L.tileLayer.wms("http://myserver/cgi-bin/mapserv.cgi?map=/ms4w/apps/kamchatka/kam1.map&", 
        {
            layers: 'borders',
            format: 'image/png',
            maxZoom: 0,
            minZoom: 0,
            continuousWorld: true
        }).addTo(map);
    map.setView([56, 158],0);
    </script>
  </body>
</html>
Может быть проблема в resolutions? Или setView установлен не правильно? Или что-то нужно в Mapserver включить?

Заранее спасибо.
Последний раз редактировалось Vladimir_I 15 сен 2014, 02:29, всего редактировалось 1 раз.

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

Re: Mapserver Leaflet не отображается карта

Сообщение Denis Rykov » 11 сен 2014, 08:16

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

ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 748
Ваше звание: Вредитель полей

Re: Mapserver Leaflet не отображается карта

Сообщение ericsson » 11 сен 2014, 08:56

Как всегда в таких случаях, считаю обязательной сверку запросов, которые поступают на сервер от клиента в правильном и неправильном случае. Для чего подойдет любой встроенный в browser отладчик (он есть в Хроме, Опере и Firefox). Вы этой технологией владеете?

Vladimir_I
Новоприбывший
Сообщения: 4
Зарегистрирован: 11 сен 2014, 01:45
Репутация: 0

Re: Mapserver Leaflet не отображается карта

Сообщение Vladimir_I » 12 сен 2014, 01:00

Denis Rykov писал(а):А в настольном приложении (QGIS) нормально открывается?
В QGis открывается нормально. Правда, в QGis карта почему-то слегка искажается по одному краю (я думаю дело в проекции), но это не важно. Главное карта ложится на координаты.
ericsson писал(а):Как всегда в таких случаях, считаю обязательной сверку запросов, которые поступают на сервер от клиента в правильном и неправильном случае. Для чего подойдет любой встроенный в browser отладчик (он есть в Хроме, Опере и Firefox). Вы этой технологией владеете?
Отладчик Firefox, показывает при обращении к серверу один запрос такого вида:
http://myserver/cgi-bin/mapserv.cgi?map=/ms4w/apps/kamchatka/kam1.map&layer=borders&mode=map

Карта в этом случае отображается просто как целое изображение png.

А при использовании Leaflet, много запросов (я так понимаю что для каждого тайла) такого вида:
http://myserver/cgi-bin/mapserv.cgi?map=/ms4w/apps/kamchatka/kam1.map&SERVICE=WMS&REQUEST=GetMap&VERSION=1.1.1&LAYERS=borders&STYLES=&FORMAT=image/png&TRANSPARENT=false&HEIGHT=256&WIDTH=256&CONTINUOUSWORLD=true&SRS=EPSG:2517&BBOX=436479.99999917025,6208511.999956286,436735.9999991785,6208767.999956286

В этом случае видно что подгружаются тайлы, но все они пустые.

ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 748
Ваше звание: Вредитель полей

Re: Mapserver Leaflet не отображается карта

Сообщение ericsson » 12 сен 2014, 03:10

Первый запрос вы точно неправильно процитировали, потому что это не валидный WMS-запрос вообще (он не содержит команду) и сервер на него отвечать не должен.

Vladimir_I
Новоприбывший
Сообщения: 4
Зарегистрирован: 11 сен 2014, 01:45
Репутация: 0

Re: Mapserver Leaflet не отображается карта

Сообщение Vladimir_I » 12 сен 2014, 07:27

ericsson писал(а):Первый запрос вы точно неправильно процитировали, потому что это не валидный WMS-запрос вообще (он не содержит команду) и сервер на него отвечать не должен.
Странно. Возможно, я не туда смотрю. Вот лог апача:

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

192.168.0.1 - - [12/Sep/2014:15:41:02 +1200] "GET /cgi-bin/mapserv.cgi?map=/ms4w/apps/kamchatka/kam1.map&layer=borders&mode=map HTTP/1.1" 200 92852 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0"
192.168.0.1 - - [12/Sep/2014:15:41:02 +1200] "GET /cgi-bin/mapserv.cgi?map=/ms4w/apps/kamchatka/kam1.map&layer=borders&mode=map HTTP/1.1" 200 92852 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0"
Вот, что я вижу:
Изображение

Вот лог Mapserver:

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

[Fri Sep 12 16:17:17 2014].411204 CGI Request 1 on process 2453
[Fri Sep 12 16:17:17 2014].412760 msDrawMap(): rendering using outputformat named png (AGG/PNG).
[Fri Sep 12 16:17:17 2014].412787 msDrawMap(): WMS/WFS set-up and query, 0.000s
[Fri Sep 12 16:17:17 2014].422407 msDrawMap(): Layer 0 (borders), 0.010s
[Fri Sep 12 16:17:17 2014].422557 msDrawMap(): Drawing Label Cache, 0.000s
[Fri Sep 12 16:17:17 2014].422632 msDrawMap() total time: 0.011s
[Fri Sep 12 16:17:17 2014].494664 msSaveImage(stdout) total time: 0.072s
[Fri Sep 12 16:17:17 2014].495143 mapserv request processing time (loadmap not incl.): 0.084s
[Fri Sep 12 16:17:17 2014].495151 msFreeMap(): freeing map at 0x29c6b800.
[Fri Sep 12 16:17:17 2014].706316 CGI Request 1 on process 2454
[Fri Sep 12 16:17:17 2014].707613 msDrawMap(): rendering using outputformat named png (AGG/PNG).
[Fri Sep 12 16:17:17 2014].707635 msDrawMap(): WMS/WFS set-up and query, 0.000s
[Fri Sep 12 16:17:17 2014].716520 msDrawMap(): Layer 0 (borders), 0.009s
[Fri Sep 12 16:17:17 2014].716547 msDrawMap(): Drawing Label Cache, 0.000s
[Fri Sep 12 16:17:17 2014].716558 msDrawMap() total time: 0.010s
[Fri Sep 12 16:17:17 2014].789609 msSaveImage(stdout) total time: 0.073s
[Fri Sep 12 16:17:17 2014].790096 mapserv request processing time (loadmap not incl.): 0.084s
[Fri Sep 12 16:17:17 2014].790107 msFreeMap(): freeing map at 0x29c6b800.
И меня смущает то, что при данном запросе я получаю целое png изображение, а Leaflet подгружает тайлы. И еще странно что и в логах апача, и Mapserver запрос дублируется.

ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 748
Ваше звание: Вредитель полей

Re: Mapserver Leaflet не отображается карта

Сообщение ericsson » 12 сен 2014, 07:53

Ну, ситуация такая:
вот этот запрос /cgi-bin/mapserv.cgi?map=/ms4w/apps/kamchatka/kam1.map&layer=borders&mode=map отдает вам всю карту целиком (хотя он и не соответствует спецификации WMS - там ведь экстент должен быть указан и команда GetMap).
А вот не попадает ли кусок, который вы запрашиваете через Leaflet, туда, где у вас и нет ничего (это же какой-то слой границ, где 99.99% территории - пустота) - это вопрос открытый.
У вас там запрашивается тайл размером 256х256 метров, если я правильно посчитал в уме. Так что вы можете легко получить пустое место. Вы там центр выставили при инициализации карты - там вообще какие-то данные в нем имеются?
И пропишите правильные значения maxzoom и minzoom - нули для обоих - плохая идея.

Vladimir_I
Новоприбывший
Сообщения: 4
Зарегистрирован: 11 сен 2014, 01:45
Репутация: 0

Re: Mapserver Leaflet не отображается карта

Сообщение Vladimir_I » 15 сен 2014, 02:21

Разобрался. Я, и правда, намудрил с minZoom, maxZoom и resolutions. Как только выставил правильные значения все заработало. Большое спасибо за помощь!

Ответить

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

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

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