mapserver, openlayers , pulkovo 42

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
Аватара пользователя
soilmsu
Интересующийся
Сообщения: 33
Зарегистрирован: 02 фев 2009, 17:07
Репутация: 0
Откуда: Москва

mapserver, openlayers , pulkovo 42

Сообщение soilmsu »

Здравствуйте.

Никак не выводится wms в openlayers.

http://localhost/cgi-bin/mapserv.exe?ma ... s&mode=map - так она нормально отображается.

Так же все ок отображается, если добавляю WMS слой в QGIS.

map file:

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

MAP
 NAME "wms_pgr"
 IMAGETYPE	PNG
 STATUS	ON
 EXTENT		-4346700.50 5266065.51 3673131.75 9687927.99
 SIZE		800 600
 SHAPEPATH	"C:\ms4w\apps\pgr\data"
 IMAGECOLOR	249 245 186


 WEB
 TEMPLATE "C:\ms4w\apps\pgr\template.html"
 IMAGEPATH "C:\ms4w\apps\pgr\data\tmp"
 IMAGEURL "C:\ms4w\tmp"


	METADATA
	wms_title "pgr"
	wms_abstract "this is WMS of pgr"
	wms_onlineresource "http://localhost/cgi-bin/mapserv.exe?map=/ms4w/apps/pgr/pgr.map&"
	wms_srs  "EPSG:4326"
	wms_getfeatureinfo "http://localhost/cgi-bin/mapserv.exe?map=/ms4w/apps/pgr/pgr.map&" 
	wms_featureformat "text/plain"
	wms_enable_request "*"
	END
 END
 
	PROJECTION
   "proj=latlong"
   "ellps=WGS84"
   "datum=WGS84"
	END
 
LAYER
  NAME poias
  DATA pochv_rayony_Russia_region
  STATUS ON
  TYPE POLYGON
  TEMPLATE "dummy"

 
		CLASS
		NAME "poias"
		STYLE
		COLOR 232 232 232
		OUTLINECOLOR 32 32 32
		END
		END

		METADATA
		wms_title         "poias"
		wms_abstract      "poisa"
		wms_srs           "EPSG:4326"
		wms_include_items "all"
		END

	PROJECTION
   "proj=latlong"
   "ellps=WGS84"
   "datum=WGS84"
   END
   
 END
END
шаблон:

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

<html>
<head>
  <title>OpenLayers PGR</title>
    <script
    src="C:/ms4w/apps/openlayers-2.10/lib/OpenLayers.js"></script>
    </head>
    <body>
      <div style="width:100%; height:100%" id="map"></div>
      <script type="text/javascript">
	  	var lat = 36;
        var lon = 32;
        var zoom = 2;
var map = new OpenLayers.Map('map');
projection: new OpenLayers.Projection("EPSG:900913");
displayProjection: new OpenLayers.Projection("EPSG:4326");
maxExtent: new OpenLayers.Bounds(-4346700.50,5266065.51,3673131.75,9687927.99);
           var mappath="C:/ms4w/apps/pgr/pgr.map";
           var mapurl="http://localhost/cgi-bin/mapserv.exe";
           var layer = new OpenLayers.Layer.WMS("WMS",
            mapurl,    {map: mappath, layers: 'poias', format: 'png'},{'reproject': true});
           map.addLayer(layer);

map.setCenter(new OpenLayers.LonLat(lon, lat), zoom); 
        map.addControl( new OpenLayers.Control.LayerSwitcher() );
      </script>

</body>
</html>
Косяк как я понимаю в проекции.. Пробовал менять все и так и сяк, не работает, шерстил форумы, прочитал побольше про проекции. Как я понимаю, надо определить проекцию карты в ogrinfo (хотя и без этого все выводилось) для начала, а потом прописать ее в mapfile:


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

C:\ms4w\Apache\cgi-bin>ogrinfo.exe -al -so 1.shp
INFO: Open of `1.shp'
      using driver `ESRI Shapefile' successful.

Layer name: 1
Geometry: Polygon
Feature Count: 1378
Extent: (-4346700.498942, 5266065.506618) - (3673131.754524, 9687927.994227)
Layer SRS WKT:
PROJCS["_MI_0",
    GEOGCS[,
        DATUM["Pulkovo_1942",
            SPHEROID["Krassovsky_1940_1948",6378245,298.300000000038]],
        PRIMEM["Greenwich",0],
        UNIT["Degree",0.017453292519943295]],
    PROJECTION["Equidistant_Conic"],
    PARAMETER["standard_parallel_1",51.3041667],
    PARAMETER["standard_parallel_2",66.4366667],
    PARAMETER["latitude_of_center",0],
    PARAMETER["longitude_of_center",100],
    PARAMETER["false_easting",0],
    PARAMETER["false_northing",0],
    UNIT["Meter",1]]

Осознал свой косяк в mapfile и шаблоне.. пробовал вставлять туда разные "окна" Пулково 42, ничего не отображается или ругается на неверный SRS.

Никак не пойму как определить зону для Pulkovo_1942? Где это прописано в ogrinfo? (что бы потом вписать эту проекцию в map file)

Изображение - что показывает openlayers (template.html)

Изображение - что показывается в qgis и через http://localhost/cgi-bin/mapserv.exe?ma ... s&mode=map


Заранее огромное спасибо за помощь.
The author accepts no liability for any harm, injury, disease, insanity, death, life, trauma or shotgun wounds caused, directly or indirectly, by this reply to any person.
Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: mapserver, openlayers , pulkovo 42

Сообщение Mavka »

Полистайте логи Apache, там увидите расхождения qgis и OL.
reproject в свойствах слоя не нужен.
лангольеры под окном жрали время ом-ном-ном
Аватара пользователя
soilmsu
Интересующийся
Сообщения: 33
Зарегистрирован: 02 фев 2009, 17:07
Репутация: 0
Откуда: Москва

Re: mapserver, openlayers , pulkovo 42

Сообщение soilmsu »

Спасибо за быстрый ответ!

Мапсервер:

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

/cgi-bin/mapserv.exe?MAP=C%3A%2Fms4w%2Fapps%2Fpgr%2Fpgr.map&
LAYERS=poias&
FORMAT=png&S
ERVICE=WMS&
VERSION=1.1.1&
REQUEST=GetMap&
STYLES=&
EXCEPTIONS=application%2Fvnd.ogc.se_inimage&
SRS=EPSG%3A4326&
BBOX=135,-90,180,-45&
WIDTH=256&HEIGHT=256%20
HTTP/1.1%22%20200%20761
QGIS:

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

/cgi-bin/mapserv.exe?map=/ms4w/apps/pgr/pgr.map&
SERVICE=WMS&
VERSION=1.3.0&
REQUEST=GetMap&
BBOX=1668100.000000,-4346700.000000,9687930.000000,3673130.000000&
CRS=EPSG:4326&
WIDTH=32&
HEIGHT=32&
LAYERS=wms_pgr&
STYLES=&
FORMAT=image/png&TRANSPARENT=TRUE HTTP/1.1" 200 649

/cgi-bin/mapserv.exe?map=/ms4w/apps/pgr/pgr.map&SERVICE=WMS&
VERSION=1.3.0&
REQUEST=GetMap&
BBOX=5261937.420561,-4346700.000000,9687930.000000,3673130.000000&
CRS=EPSG:4326&
WIDTH=1109&
HEIGHT=612&
LAYERS=wms_pgr&
STYLES=&
FORMAT=image/png&
DPI=96&
TRANSPARENT=TRUE HTTP/1.1" 200 643994
что-то не пойму в чем дело-то... попробовал в openlayers сделать не LAYERS=poias&, а LAYERS=wms_pgr& - не помогает.

может проблема в BBOX.. сделал

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

new OpenLayers.Bounds(1668100.000000,-4346700.000000,9687930.000000,3673130.000000);
или с 5261937.420561,-4346700.000000,9687930.000000,3673130.000000, тоже самое, желтый экран (reproject убрал)
The author accepts no liability for any harm, injury, disease, insanity, death, life, trauma or shotgun wounds caused, directly or indirectly, by this reply to any person.
Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: mapserver, openlayers , pulkovo 42

Сообщение Mavka »

В запросах не совместимые параметры:
BBOX=5261937.420561,-4346700.000000,9687930.000000,3673130.000000&
CRS=EPSG:4326&
В map-файле аналогично:
EXTENT -4346700.50 5266065.51 3673131.75 9687927.99
PROJECTION
"proj=latlong"
"ellps=WGS84"
"datum=WGS84"
END
В wms_srs добавьте 900913

pochv_rayony_Russia_region в какой СК?
лангольеры под окном жрали время ом-ном-ном
Аватара пользователя
soilmsu
Интересующийся
Сообщения: 33
Зарегистрирован: 02 фев 2009, 17:07
Репутация: 0
Откуда: Москва

Re: mapserver, openlayers , pulkovo 42

Сообщение soilmsu »

Спасибо за помощь отчаявшемуся человеку! :)

Добавил в wms_srs 900913, перестал отображаться даже фон - invalid srs given: srs must be valid for all requested layers.



Иходя из ogrinfo, pochv_rayony_Russia_region:

Layer name: 1
Geometry: Polygon
Feature Count: 1378
Extent: (-4346700.498942, 5266065.506618) - (3673131.754524, 9687927.994227)
Layer SRS WKT:
PROJCS["_MI_0",
GEOGCS[,
DATUM["Pulkovo_1942",
SPHEROID["Krassovsky_1940_1948",6378245,298.300000000038]],
PRIMEM["Greenwich",0],
UNIT["Degree",0.017453292519943295]],
PROJECTION["Equidistant_Conic"],
PARAMETER["standard_parallel_1",51.3041667],
PARAMETER["standard_parallel_2",66.4366667],
PARAMETER["latitude_of_center",0],
PARAMETER["longitude_of_center",100],
PARAMETER["false_easting",0],
PARAMETER["false_northing",0],
UNIT["Meter",1]]


Видимо в мапфайле надо изменить СК все, т.к. там указан WSG.. Странно только, что QGIS все нормально отображает.

То есть мы имеет Pulkovo 42, эллипсоид Красовского. Единицы измерения - метры.. То есть это не WGS 1984, а Pulkovo 1942, так? Я никак не могу понять какая это зона Pulkovo 1942, что бы выбрать номер EPSG (http://gis-lab.info/qa/proj-sk-faq.html#1 - тут картинка с разграфовкой зон, я не очень понял как ей пользоваться.. карта попадает с 19 по 27 интервалы, какое выбрать?
The author accepts no liability for any harm, injury, disease, insanity, death, life, trauma or shotgun wounds caused, directly or indirectly, by this reply to any person.
Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: mapserver, openlayers , pulkovo 42

Сообщение Mavka »

Equidistant_Conic с зонами вряд ли связан...
Конвертните ее в обычный epsg:4326 и не гадайте.
лангольеры под окном жрали время ом-ном-ном
Аватара пользователя
soilmsu
Интересующийся
Сообщения: 33
Зарегистрирован: 02 фев 2009, 17:07
Репутация: 0
Откуда: Москва

Re: mapserver, openlayers , pulkovo 42

Сообщение soilmsu »

Спасибо! )) Перевел через универсальный транслятор и заработало!

Теперь уже который час борюсь с проблемой выравнивания карты (см вложенный файл) - она смещена вправо вверх

Пробовал менять EXTENT, не помогло.

Проверил логи апача:

OL:

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

/cgi-bin/mapserv.exe?MAP=C%3A%2Fms4w%2Fapps%2Fpgr%2Fpgr.map&LAYERS=wms_pgr&FORMAT=png&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=-90,-90,0,0&WIDTH=256&HEIGHT=256 HTTP/1.1" 200 761

/cgi-bin/mapserv.exe?MAP=C%3A%2Fms4w%2Fapps%2Fpgr%2Fpgr.map&LAYERS=wms_pgr&FORMAT=png&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=-180,-90,-90,0&WIDTH=256&HEIGHT=256 HTTP/1.1" 200 761

/cgi-bin/mapserv.exe?MAP=C%3A%2Fms4w%2Fapps%2Fpgr%2Fpgr.map&LAYERS=wms_pgr&FORMAT=png&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=90,-90,180,0&WIDTH=256&HEIGHT=256 HTTP/1.1" 200 761

/cgi-bin/mapserv.exe?MAP=C%3A%2Fms4w%2Fapps%2Fpgr%2Fpgr.map&LAYERS=wms_pgr&FORMAT=png&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=0,-90,90,0&WIDTH=256&HEIGHT=256 HTTP/1.1" 200 761

/cgi-bin/mapserv.exe?MAP=C%3A%2Fms4w%2Fapps%2Fpgr%2Fpgr.map&LAYERS=wms_pgr&FORMAT=png&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=-180,0,-90,90&WIDTH=256&HEIGHT=256 HTTP/1.1" 200 761
/cgi-bin/mapserv.exe?MAP=C%3A%2Fms4w%2Fapps%2Fpgr%2Fpgr.map&LAYERS=wms_pgr&FORMAT=png&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=-90,0,0,90&WIDTH=256&HEIGHT=256 HTTP/1.1" 200 761

/cgi-bin/mapserv.exe?MAP=C%3A%2Fms4w%2Fapps%2Fpgr%2Fpgr.map&LAYERS=wms_pgr&FORMAT=png&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=90,0,180,90&WIDTH=256&HEIGHT=256 HTTP/1.1" 200 36976

/cgi-bin/mapserv.exe?MAP=C%3A%2Fms4w%2Fapps%2Fpgr%2Fpgr.map&LAYERS=wms_pgr&FORMAT=png&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=0,0,90,90&WIDTH=256&HEIGHT=256 HTTP/1.1" 200 28872
qgis:

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

/cgi-bin/mapserv.exe?map=/ms4w/apps/pgr/pgr.map&SERVICE=WMS&
VERSION=1.3.0&REQUEST=GetMap&
BBOX=41.136957,19.640700,81.890700,190.297000&
CRS=epsg:4326&WIDTH=1341&HEIGHT=320&
LAYERS=wms_pgr&STYLES=&FORMAT=image/png&DPI=96&
TRANSPARENT=TRUE HTTP/1.1" 200 396896

/cgi-bin/mapserv.exe?map=/ms4w/apps/pgr/pgr.map&SERVICE=WMS&
VERSION=1.3.0&REQUEST=GetMap&BBOX=-88.765600,19.640700,81.890700,190.297000&
CRS=epsg:4326&WIDTH=120&HEIGHT=120&
LAYERS=wms_pgr&STYLES=&FORMAT=image/png&
DPI=96&TRANSPARENT=TRUE HTTP/1.1" 200 4123


добавлял HEIGHT побольше в шаблон - не помогло..

шаблон:

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

	var lat = 0;
        var lon = 0;
        var zoom = 2;
var map = new OpenLayers.Map('map');
Projection: new OpenLayers.Projection("EPSG:4326");
maxExtent: new OpenLayers.Bounds(41.009601,19.640700,81.890700,190.297000);
           var mappath="C:/ms4w/apps/pgr/pgr.map";
           var mapurl="http://localhost/cgi-bin/mapserv.exe";
           var layer = new OpenLayers.Layer.WMS("WMS",
            mapurl,    {map: mappath, layers: 'wms_pgr', format: 'png'},{'reproject': true});
           map.addLayer(layer);

map.setCenter(new OpenLayers.LonLat(lon, lat), zoom); 
        map.addControl( new OpenLayers.Control.LayerSwitcher() );
мапфайл:

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

MAP
 NAME "wms_pgr"
 IMAGETYPE	PNG
 STATUS	ON
 EXTENT		19.6407 41.1742 190.297 81.8907
 SIZE		1280 1024
 SHAPEPATH	"C:\ms4w\apps\pgr\data"
 IMAGECOLOR	249 245 186


 WEB
 TEMPLATE "C:\ms4w\apps\pgr\template.html"
 IMAGEPATH "C:\ms4w\apps\pgr\data\tmp"
 IMAGEURL "C:\ms4w\tmp"


	METADATA
	wms_title "pgr"
	wms_abstract "this is WMS of pgr"
	wms_onlineresource "http://localhost/cgi-bin/mapserv.exe?map=/ms4w/apps/pgr/pgr.map&"
	wms_srs  "epsg:4326"
	wms_getfeatureinfo "http://localhost/cgi-bin/mapserv.exe?map=/ms4w/apps/pgr/pgr.map&" 
	wms_featureformat "text/plain"
	wms_enable_request "*"
	END
 END
 
	PROJECTION
   "proj=latlong"
   "ellps=WGS84"
   "datum=WGS84"
	END
 
LAYER
  NAME poias
  DATA pochv_rayony_Russia_region
  STATUS ON
  TYPE POLYGON
  TEMPLATE "dummy"

 
		CLASS
		NAME "poias"
		STYLE
		COLOR 232 232 232
		OUTLINECOLOR 32 32 32
		END
		END

		METADATA
		wms_title         "poias"
		wms_abstract      "poisa"
		wms_srs           "epsg:4326"
		wms_include_items "all"
		END

	PROJECTION
   "proj=latlong"
   "ellps=WGS84"
   "datum=WGS84"
   END
   
 END
END
p.s.
{'reproject': true} убирал, не помогло )
Вложения
1.jpg
1.jpg (12.64 КБ) 7647 просмотров
The author accepts no liability for any harm, injury, disease, insanity, death, life, trauma or shotgun wounds caused, directly or indirectly, by this reply to any person.
old_Bibigon
Участник
Сообщения: 78
Зарегистрирован: 25 янв 2010, 14:14
Репутация: 3

Re: mapserver, openlayers , pulkovo 42

Сообщение old_Bibigon »

soilmsu писал(а):Пробовал менять EXTENT, не помогло.
...

шаблон:

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

	var lat = 0;
        var lon = 0;
        var zoom = 2;
var map = new OpenLayers.Map('map');
Projection: new OpenLayers.Projection("EPSG:4326");
maxExtent: new OpenLayers.Bounds(41.009601,19.640700,81.890700,190.297000);
           var mappath="C:/ms4w/apps/pgr/pgr.map";
           var mapurl="http://localhost/cgi-bin/mapserv.exe";
           var layer = new OpenLayers.Layer.WMS("WMS",
            mapurl,    {map: mappath, layers: 'wms_pgr', format: 'png'},{'reproject': true});
           map.addLayer(layer);

У Вас перепутаны координаты в Bounds, смотрите тут и вместо zoom=2 с таким лучше использовать map.zoomToMaxExtent()
Аватара пользователя
soilmsu
Интересующийся
Сообщения: 33
Зарегистрирован: 02 фев 2009, 17:07
Репутация: 0
Откуда: Москва

Re: mapserver, openlayers , pulkovo 42

Сообщение soilmsu »

Спасибо за подсказку, разобрался немного с Bounds :D

Как я понял, т.к. у меня EPSG:4326, макс. охват всего глобуса (-180,-90,180,90). Я измерил в qgis охват карты и сделал:
maxExtent: new OpenLayers.Bounds(15,12,195,111);

не помогает :(

У меня почему-то выводится все время охват всего глобуса. когда я меняю любые значения в new OpenLayers.Bounds - ничего не происходит.

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

-------

когда я руками правлю запрос (взял его через ПКМ по изображению карты в браузере) и прописываю там нужный BBOX (http://localhost/cgi-bin/mapserv.exe?MA ... HEIGHT=256) - все ок становится....

Почему у меня не изменяется BBOX, хотя я задаю его в OpenLayers.Bounds?



-----------
АПДЕЙТ:

проблему решила эта строка:

var map = new OpenLayers.Map('map', {'projection': new OpenLayers.Projection("EPSG:4326"), 'maxExtent': new OpenLayers.Bounds(15,12,195,111), 'maxResolution': 'auto'})

оказывается, параметры были верные... неверным был КОД )) javascript синтаксис )) как говорится, так программы не пишутся ))

всем спасибо за помощь! доволен аки слон, теперь буду привязывать другие слои )
Вложения
dsadsa.png
dsadsa.png (77.79 КБ) 7614 просмотров
The author accepts no liability for any harm, injury, disease, insanity, death, life, trauma or shotgun wounds caused, directly or indirectly, by this reply to any person.
Ответить

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

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

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