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

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
n0ip
Интересующийся
Сообщения: 23
Зарегистрирован: 13 ноя 2008, 18:55
Репутация: 0

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

Сообщение n0ip » 27 янв 2009, 17:19

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

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

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

Сообщение Максим Дубинин » 28 янв 2009, 03:52

подробнее, пожалуйста, условия, код, тип данных
если вы берете слой из MS как WMS, то это растр, какие еще незамкнутые контура?
пристегивайтесь, турбулентность прямо по курсу

n0ip
Интересующийся
Сообщения: 23
Зарегистрирован: 13 ноя 2008, 18:55
Репутация: 0

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

Сообщение n0ip » 28 янв 2009, 13:42

Данные беру из OpenGIS (dxf->esri->opengis). Далее создаю слой WMS и его отображаю OpenLayers'ом.

n0ip
Интересующийся
Сообщения: 23
Зарегистрирован: 13 ноя 2008, 18:55
Репутация: 0

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

Сообщение n0ip » 28 янв 2009, 17:47

Ага, карту нельзя сдвинуть дальше точки (0;0).

n0ip
Интересующийся
Сообщения: 23
Зарегистрирован: 13 ноя 2008, 18:55
Репутация: 0

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

Сообщение n0ip » 28 янв 2009, 18:19

Изображение

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

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

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

Сообщение Максим Дубинин » 29 янв 2009, 03:31

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

n0ip
Интересующийся
Сообщения: 23
Зарегистрирован: 13 ноя 2008, 18:55
Репутация: 0

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

Сообщение n0ip » 29 янв 2009, 12:20

А даже если написать 0.00 0.00 10.00 10.00 результат вывода не изменяется, что удивительно

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

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

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

Сообщение Максим Дубинин » 29 янв 2009, 18:53

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

n0ip
Интересующийся
Сообщения: 23
Зарегистрирован: 13 ноя 2008, 18:55
Репутация: 0

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

Сообщение n0ip » 29 янв 2009, 19:29

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

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

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

Сообщение Максим Дубинин » 30 янв 2009, 04:37

пожалуйста, только я не понял, решилась ли проблема. Если еще нет, то для начала нужно попробовать SRID = -1 вместо 4326.
пристегивайтесь, турбулентность прямо по курсу

n0ip
Интересующийся
Сообщения: 23
Зарегистрирован: 13 ноя 2008, 18:55
Репутация: 0

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

Сообщение n0ip » 30 янв 2009, 17:02

*не, не заработало...

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

n0ip
Интересующийся
Сообщения: 23
Зарегистрирован: 13 ноя 2008, 18:55
Репутация: 0

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

Сообщение n0ip » 30 янв 2009, 18:02

Что-то мне подумалось - а может быть карта после конвертации остается в локальной системе координат?.. Я же нигде не указываю зону куда ее привязать.

n0ip
Интересующийся
Сообщения: 23
Зарегистрирован: 13 ноя 2008, 18:55
Репутация: 0

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

Сообщение n0ip » 03 фев 2009, 18:12

1. Итак, опытным путем выяснил, что сервер выдает полностью карту с параметрами

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

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

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

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

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

Сообщение Максим Дубинин » 04 фев 2009, 03:36

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

n0ip
Интересующийся
Сообщения: 23
Зарегистрирован: 13 ноя 2008, 18:55
Репутация: 0

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

Сообщение n0ip » 12 фев 2009, 18:31

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

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

Ответить

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

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

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