координаты и привязка mapserver

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
dixgrey
Интересующийся
Сообщения: 32
Зарегистрирован: 22 июл 2009, 10:45
Репутация: 0
Контактная информация:

координаты и привязка mapserver

Сообщение dixgrey »

использую mapserver+openlayers данные через WMS слой. Изначально была у меня карта в шейп файле, ее делал другой человек...
система вроде настроена и работает, но нет у меня глубокого понятия сих механизмов, начал разбираться в цифрах и привязках и только запутался еще больше... :(

в настоящий момент работает с такими параметрами:

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

  
         var lon = -1000;
          var lat = -1000;
          var zoom = 1;
          var proj = new OpenLayers.Projection("EPSG:4326");
          var point = new OpenLayers.LonLat(lon, lat);
          var options = {
                            maxScale: 10,
                            minScale: 50000,
                            numZoomLevels: 20,
                            minResolution: "auto",
                            minExtent: new OpenLayers.Bounds(-1, -1, 1, 1),
                            maxResolution: "auto",
                            maxExtent: new OpenLayers.Bounds(0, -2610.423255, 4209.988671, 525.42148),
                            projection: "epsg:4326",
                            units: "m"
                         };

           var map = new OpenLayers.Map('map',options);

           var mappath="C:/ms4w/apps/minsk/5js.map"; //путь к map-файлу в дереве каталогов
           var mapurl="http://vmadmin/cgi-bin/mapserv.exe";

           var layer = new OpenLayers.Layer.WMS("Minsk",
                        mapurl, {map: mappath, layers: 'r_g1,r_g2,r_g3,r_rr,r_str', format: 'png'}
                          ,{layers: 'basic'}
                       );

           var layer1 = new OpenLayers.Layer.WMS("Minsk water",
                        mapurl, {map: mappath,  transparent: 'true',  layers: 'r_w', format: 'png'}
                       ,{visibility: false});

           var layer2 = new OpenLayers.Layer.WMS("Doma",
                        mapurl, {map: mappath,  transparent: 'true',  layers: 'r_k', format: 'png'}
                        ,{visibility: false});

           map.addLayers([layer, layer1, layer2]);
           map.addControl(new OpenLayers.Control.LayerSwitcher({'ascending':false}));
           map.addControl(new OpenLayers.Control.Permalink());
           map.zoomToMaxExtent();
           map.setCenter(point.transform(proj, map.getProjectionObject()), zoom);
но кто может мне внятно объяснить значения:
для чего используется и откуда берутся:
var lon = -1000;
var lat = -1000;
numZoomLevels: 20, (я так полагаю количество шагов при масштабировании?)
minExtent: new OpenLayers.Bounds(-1, -1, 1, 1),
maxExtent: new OpenLayers.Bounds(0, -2610.423255, 4209.988671, 525.42148),

а вообще задача такая - привязать мою векторную карту к координатам так, чтобы они соответствовали реальным GPS координатам, пока даже не знаю с чего начать...
Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: координаты и привязка mapserver

Сообщение Mavka »

Статьи 1 и 2.
lat и lon - место, которое должно быть показано при открытии карты
numZoomLevels - да
minExtent и maxExtent - первый практически никогда не используется (можете свободно его убрать), второй задает максимальные и минимальные координаты карты. Для EPSG:4326 они (-180 -90 180 90), т.е. весь земной шар. Вы взяли небольшой кусочек земли.
lat и lon в квадрат maxExtent не попадают, что не правильно. Если уберете последнюю строку

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

map.setCenter(point.transform(proj, map.getProjectionObject()), zoom); 
то можете от них избавиться.
Последний раз редактировалось Mavka 09 сен 2009, 14:22, всего редактировалось 1 раз.
лангольеры под окном жрали время ом-ном-ном
dixgrey
Интересующийся
Сообщения: 32
Зарегистрирован: 22 июл 2009, 10:45
Репутация: 0
Контактная информация:

Re: координаты и привязка mapserver

Сообщение dixgrey »

спасибо, я примерно так и представлял... но у меня задача эту карту привезать к реальным GPS координатам и потом центрировать ее на объекте по запросу, в каком направлении лучше двигаться в этом случае?

и еще: в мапфайле есть строка EXTENT 0 -2610.423255 4209.988671 525.42148
, для чего она?
Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: координаты и привязка mapserver

Сообщение Mavka »

Я просмотрел, что у вас EPSG:4326. Это ведь географическая система координат, там extent не может быть больше чем (-180 -90 180 90). Странно что MapServer у вас работает, он до этих тонкостей очень требовательный. Может в map-файле указана какая то другая СК?
у меня задача эту карту привезать к реальным GPS координатам
EPSG:4326 (или в народе WGS84) и есть та самая СК в которой получают координаты с GPS (если вы не перенастраивали прибор на местную СК). А чтобы центрировать у вас уже есть код:

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

var lon = 37.50; var lat = 55.75; // координаты Москвы
var point = new OpenLayers.LonLat(lon, lat);
map.setCenter(point, zoom); 
лангольеры под окном жрали время ом-ном-ном
dixgrey
Интересующийся
Сообщения: 32
Зарегистрирован: 22 июл 2009, 10:45
Репутация: 0
Контактная информация:

Re: координаты и привязка mapserver

Сообщение dixgrey »

дело немного продвинулось, с привязкой к координатам разобрался, но возникла другая проблема, есть у меня карта: Изображение но после вставки она отображается на экране так: Изображение при максимальном масштабе...

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

          var lon = 27;
          var lat = 55.2;
          var zoom = 7;

          var options = {
                            numZoomLevels: 20,
                            minResolution: "auto",
                            minExtent: new OpenLayers.Bounds(-1, -1, 1, 1),
                            maxResolution: "auto",
                            maxExtent: new OpenLayers.Bounds(-180, -90, 180, 90),
                            projection: "epsg:4326",
                            units: "m"
                         };

           var map = new OpenLayers.Map('map', options);
Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: координаты и привязка mapserver

Сообщение Mavka »

Увеличьте numZoomLevels.

IMHO
1. У вас неправильный экстент.
2. Я стал сильно сомневаться в том, что ваши исходные данные в WGS84.
3. В options мешанина из Scale и Resolution.
4. Почитайте наконец литературу: 1 и 2.
лангольеры под окном жрали время ом-ном-ном
dixgrey
Интересующийся
Сообщения: 32
Зарегистрирован: 22 июл 2009, 10:45
Репутация: 0
Контактная информация:

Re: координаты и привязка mapserver

Сообщение dixgrey »

1 и 2 читал до этого и ответов на свою проблему я там не нашел. Да, там есть примеры масштабирования и вывода карты, но видимо либо я глуповат, либо пояснения там не много. Данные сейчас у меня другие, именно WGS84, это другой пример, просто решил не заводить еще одну ветку. С options пробовал крутить и scalе и resolution, стал писать именно после того, как все почитал и покрутил и не добился правильного результата.
Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: координаты и привязка mapserver

Сообщение Mavka »

Оставьте только numZoomLevels и maxExtent. Пусть OL попытается сам настроить правильные масштабы.
Увеличение ZoomLevels дало эффект?
лангольеры под окном жрали время ом-ном-ном
dixgrey
Интересующийся
Сообщения: 32
Зарегистрирован: 22 июл 2009, 10:45
Репутация: 0
Контактная информация:

Re: координаты и привязка mapserver

Сообщение dixgrey »

пока обнаружил странный эффект - когда option указываю не в

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

 var map = new OpenLayers.Map('map', options);
а

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

           var layer = new OpenLayers.Layer.WMS("Minsk",
                        mapurl, {map: mappath, layers: 'Rt_rt,Houses_pg', format: 'png'}
                          ,{layers: 'basic'}, options );
удается получить большее приближение, и ZoomLevels работает, но по разному. В первом случае почему-то увеличеие идет пока Zoom <=7, если поставить больше - скидывает в минимальный масштаб. Во втором случае увеличивает до максимального значения.
Ответить

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

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

Сейчас этот форум просматривают: Semrush [Bot] и 1 гость