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

MS+OL: Проблемы с картой в локальной СК

Добавлено: 27 янв 2009, 17:19
n0ip
А в чем косяк может быть: на карте в левом нижнем углу (я так понимаю - 0;0) жирная точка и карту не возможно перетянуть. Такое может быть из-за незамкнутых контуров?

Re: MapServer+OpenLayers. Так и должно быть или моя ошибка?

Добавлено: 28 янв 2009, 03:52
Максим Дубинин
подробнее, пожалуйста, условия, код, тип данных
если вы берете слой из MS как WMS, то это растр, какие еще незамкнутые контура?

Re: MapServer+OpenLayers. Так и должно быть или моя ошибка?

Добавлено: 28 янв 2009, 13:42
n0ip
Данные беру из OpenGIS (dxf->esri->opengis). Далее создаю слой WMS и его отображаю OpenLayers'ом.

Re: MapServer+OpenLayers. Так и должно быть или моя ошибка?

Добавлено: 28 янв 2009, 17:47
n0ip
Ага, карту нельзя сдвинуть дальше точки (0;0).

Re: MapServer+OpenLayers. Так и должно быть или моя ошибка?

Добавлено: 28 янв 2009, 18:19
n0ip
Изображение

http://i42.tinypic.com/1217n0h.png (fullscreen)

картинку получается двигать только вправо или вверх. а влево и вниз никак.

openlayers (index.html)

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

<html>
        <head>
                <title>OpenLayers Example</title>
        <script src="OpenLayers.js"></script>

                <script defer="defer" type="text/javascript">
                        function init() {
                        var map = new OpenLayers.Map('map');

                                var wms = new OpenLayers.Layer.WMS("house",
                                "http://10.10.10.120/cgi-bin/mapserv?map=/ms4w/apps/gtn/web.map&",
                                        {layers: 'house', format: 'png', transparent: 'off' },
                                        { projection:"EPSG:4326", units: 'm', singleTile: true}
                                );

                                map.addLayer(wms);
                                map.addControl(new OpenLayers.Control.LayerSwitcher());
                                map.addControl(new OpenLayers.Control.Permalink());
                        map.addControl(new OpenLayers.Control.Permalink('permalink'));
                                map.addControl(new OpenLayers.Control.MousePosition());
                            map.addControl(new OpenLayers.Control.OverviewMap());
                    map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);


                        }
        </script>

    </head>

        <body onload="init();">

                <div style="width:100%; height:100%" id="map"></div>

        </body>

                                map.zoomToMaxExtent();

</html>
Mapserver: web.map

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

MAP
 NAME "WMS"
 STATUS ON
 IMAGETYPE PNG
 EXTENT 0.00 0.00 360.00 360.00
 SIZE 640 480

WEB
    #TEMPLATE  "/ms4w/apps/gtn/templates/template.html"
        TEMPLATE  "template.html"
    IMAGEPATH "/ms4w/tmp/ms_tmp/"
    IMAGEURL  "/ms4w/tmp/ms_tmp/"
        METADATA
                wms_title                  "GTN map"
                wms_abstract               "This is the GTN demo from GIS-Lab"
                wms_onlineresource         "http://localhost/cgi-bin/mapserv?map=/ms4w/apps/gtn/web.map&"
                wms_srs                    "EPSG:4326"
                wms_getfeatureinfo         "http://localhost/cgi-bin/mapserv?map=/ms4w/apps/gtn/web.map&"
                wms_featureinfoformat      "text/plain"
        END
END

PROJECTION
        #"init=epsg:4326"
        "proj=latlong"
        "ellps=WGS84"
        "datum=WGS84"
END

LAYER

 NAME "house"
 CONNECTIONTYPE postgis
 CONNECTION "user=xxx password=xxx dbname=gis host=10.10.10.120"
 DATA "the_geom from house using unique gid unique srid 4326"
 STATUS ON
 TYPE LINE

 CLASS
      COLOR 200 120 123
          EXPRESSION ([mark]>0)
 END
 CLASS
      COLOR 0 100 200
         EXPRESSION ([mark]=0)
 END

END
END

Re: MapServer+OpenLayers. Так и должно быть или моя ошибка?

Добавлено: 29 янв 2009, 03:31
Максим Дубинин
первое что бросается в глаза
EXTENT 0.00 0.00 360.00 360.00
это нереальный охват для заявленной СК, вы уверены, что он соответствует вашим данным?

Re: MapServer+OpenLayers. Так и должно быть или моя ошибка?

Добавлено: 29 янв 2009, 12:20
n0ip
А даже если написать 0.00 0.00 10.00 10.00 результат вывода не изменяется, что удивительно

UPD: попрбовал ввести точные координаты своего города - все равно не помогло. Может быть нужно конвертировать в какую-то локальную систему координат, а не EPSG:4326?

Re: MapServer+OpenLayers. Так и должно быть или моя ошибка?

Добавлено: 29 янв 2009, 18:53
Максим Дубинин
n0ip писал(а):А даже если написать 0.00 0.00 10.00 10.00 результат вывода не изменяется, что удивительно
наверное потому что это тоже неправильный охват
знаете ли вы правильный? в какой системе координат исходные данные адресуемые в map-файле реально?

Re: MapServer+OpenLayers. Так и должно быть или моя ошибка?

Добавлено: 29 янв 2009, 19:29
n0ip
во-первых, хочу поблагодарить sim за помощь :)
мм... довольно сложный вопрос, т.к. вопросами веб-картографии я начал заниматься относительно недавно.
расскажу что я делал поэтапно:
- Взял карту в формате DXF, нарисованную в компасе или автокаде.
- Сконвертировал ее при помощи программы DXF2SHAPEFILE. Получил на выходе шейпы в ESRI-формате.
- Запустил консольную утилиту shp2pgsql с параметром -s 4326. <- видимо, отсюда у моей ошибки и растут ноги. в идеале, конечно, было бы выбрать какую-нибудь систему координат локальную, что ли... Т.к. есть ощущение, что моя карта натягивается на всю планету и когда я ее двигаю - то она просто выходит за "рамки". Посмотрел OpenLayers.js, нашел параметр который отвечает за проверку валидности координат (isValidLonLat), после комментирования карта начинает двигаться, но если увеличивать - то поведение непредсказуемое.
Мап-файл составлял сам, собственно, его исходник приведен выше.
Еще раз спасибо за помощь :)

Re: MapServer+OpenLayers. Так и должно быть или моя ошибка?

Добавлено: 30 янв 2009, 04:37
Максим Дубинин
пожалуйста, только я не понял, решилась ли проблема. Если еще нет, то для начала нужно попробовать SRID = -1 вместо 4326.

Re: MS+OL: Проблемы с картой в локальной СК

Добавлено: 30 янв 2009, 17:02
n0ip
*не, не заработало...

мне что-то подсказывает, что проблема в openlayers.
epsg -1 можно указать при занесении в базу данных
и в SQL-запросе. в остальных случаях орет, что такой системы координат не знает.

Re: MS+OL: Проблемы с картой в локальной СК

Добавлено: 30 янв 2009, 18:02
n0ip
Что-то мне подумалось - а может быть карта после конвертации остается в локальной системе координат?.. Я же нигде не указываю зону куда ее привязать.

Re: MS+OL: Проблемы с картой в локальной СК

Добавлено: 03 фев 2009, 18:12
n0ip
1. Итак, опытным путем выяснил, что сервер выдает полностью карту с параметрами

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

EXTENT 10 -5 550 600
по запросу:
http://10.10.10.120/mapserv?map=web.map ... e&mode=map

2. как выполнить пересчет широты/долготы в формат, который понимает openlayers (какие-то ужасные здоровые цифры)

Re: MS+OL: Проблемы с картой в локальной СК

Добавлено: 04 фев 2009, 03:36
Максим Дубинин
вы можете приложить один из слоев с которым можно было бы поэкспериментировать? любой, лучше если будет представлять охват территории целиком, какую-нибудь общую границу например, гляну, самому интересно

Re: MS+OL: Проблемы с картой в локальной СК

Добавлено: 12 фев 2009, 18:31
n0ip
с координатами - на сладкое оставлю (: пока пусть с такими огромными работает, бог с ним.
как разберусь - обязательно напишу в чем косяк был. вдруг кто еще столкнется.

сейчас интересует как можно сделать - http://mercantouralpimarittime.com/
т.е. к примеру подсветить дом на моей карте. в сторону GML копать надо?