не работает GetFeatureInfo

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
s_r_b
Интересующийся
Сообщения: 31
Зарегистрирован: 08 авг 2011, 15:25
Репутация: 0

не работает GetFeatureInfo

Сообщение s_r_b » 20 мар 2012, 21:44

Привет. Использую mapserver+openlayers. Пробую получить атрибуты точки - GetFeatureInfo. Настроил ProxyHost, сам .map файл.
ProxyHost настраивал по http://trac.osgeo.org/openlayers/wiki/ru_proxyhost
Не работает. В чем же ошибка?
Последний раз редактировалось s_r_b 06 авг 2012, 22:46, всего редактировалось 3 раза.

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

Re: не работает GetFeatureInfo

Сообщение Denis Rykov » 21 мар 2012, 10:51

Что-то последнее время часто стали возникать вопросы по WMSGetFeatureInfo. Чтобы каждый раз не писать одно и то же решил написать небольшую шпаргалку: WMSGetFeatureInfo. Прочитайте, думаю поможет, если нет - пишите, будем разбираться. Приведенный вами код довольно странный, используются deprecated фичи и вообще никто строку запроса не формирует вручную, это делается автоматом внутри самого контрола. Похоже, вы откопали какой-то старый туториал.
Spatial is now, more than ever, just another column- The Geometry Column.

s_r_b
Интересующийся
Сообщения: 31
Зарегистрирован: 08 авг 2011, 15:25
Репутация: 0

Re: не работает GetFeatureInfo

Сообщение s_r_b » 23 мар 2012, 11:32

спасибо. начинаю разбираться

s_r_b
Интересующийся
Сообщения: 31
Зарегистрирован: 08 авг 2011, 15:25
Репутация: 0

Re: не работает GetFeatureInfo

Сообщение s_r_b » 23 мар 2012, 13:52

Даже не знаю что я не правильно сделал. Но не работает. Сделал все по твоей инструкции. Единственно изменил - infoFormat: 'text/plain'. и ничего не происходит.
Пользуюсь Chrome. В Firebug при нажатии вижу - event.layerX and event.layerY are broken and deprecated in WebKit. They will be removed from the engine in the near future.
Что подскажешь?

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

Re: не работает GetFeatureInfo

Сообщение Denis Rykov » 23 мар 2012, 19:09

Что касается "event.layerX and event.layerY" - ничего страшного. А из каких соображений вы изменили значение infoFormat? В таком виде возвращаемый результат абсолютно не пригоден для дальнейшей обработки.
Spatial is now, more than ever, just another column- The Geometry Column.

s_r_b
Интересующийся
Сообщения: 31
Зарегистрирован: 08 авг 2011, 15:25
Репутация: 0

Re: не работает GetFeatureInfo

Сообщение s_r_b » 23 мар 2012, 22:08

я изменил infoFormat: на 'application/vnd.ogc.gml',но все осталось по прежнему. а можно как то проверить правильность моих действий - настройку .map файла, самого скрипта openlayers, proxi.host. ну очень нужно это сделать

s_r_b
Интересующийся
Сообщения: 31
Зарегистрирован: 08 авг 2011, 15:25
Репутация: 0

Re: не работает GetFeatureInfo

Сообщение s_r_b » 23 мар 2012, 22:27

оследил события, сначала выдает activate, на нажатие beforegetfuture, а вслед nogetfeatureinfo. а как извлечь полезные параметры.

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

Re: не работает GetFeatureInfo

Сообщение Denis Rykov » 26 мар 2012, 04:38

Если возникает событие "nogetfeatureinfo", значит вы неправильно настроили контрол. Получается, что отсутствуют слои для запроса. Приведите пример описания WMS слоя в OpenLayers и контрола WMSGetFeatureInfo.
Spatial is now, more than ever, just another column- The Geometry Column.

s_r_b
Интересующийся
Сообщения: 31
Зарегистрирован: 08 авг 2011, 15:25
Репутация: 0

Re: не работает GetFeatureInfo

Сообщение s_r_b » 06 авг 2012, 23:02

Лучше поздно чем никогда. Все по прежнему, на клик выкидывает - nogetfeatureinfo.
Делаю для слоя wmss по твоему примеру. Но все как и было. В чем трабл?
На всякий случай полный код всего. Вот карта openlaeyrs:

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

...
<div style="width:100%; height:600px" id="map"></div>
<script defer="defer" type="text/javascript">
    OpenLayers.ProxyHost = "http://xn--26-6kc4btrhf0b.xn--p1ai/cgi-bin/proxy.cgi?url=";
    var lon = 44;
    var lat = 46;
    var zoom = 0;
    var options = {
                    minResolution: "auto",
                    maxResolution: "auto",
					minExtent: new OpenLayers.Bounds(-400, -400, 400, 400),
					maxExtent: new OpenLayers.Bounds(-19000, -10000, 9000, 7000),
                    numZoomLevels: 14,
                    //maxExtent: new OpenLayers.Bounds(-19000, -11000, 13000, 10000),
                    units: 'm',
                    controls: [
								new OpenLayers.Control.MouseDefaults(),
                                new OpenLayers.Control.PanZoomBar(),
                                new OpenLayers.Control.MousePosition(),
                                new OpenLayers.Control.Navigation({zoomWheelEnabled: true, handleRightClicks: true}),
                                new OpenLayers.Control.LayerSwitcher(),
                                new OpenLayers.Control.OverviewMap(),
                                new OpenLayers.Control.KeyboardDefaults(),                              
                                new OpenLayers.Control.ScaleLine(),
                                new OpenLayers.Control.Scale()
                   ]
    };
    var s_sel = new OpenLayers.Style({pointRadius: 10,fillColor: "green",strokeColor: "black",strokewidth: 10});                
    var map = new OpenLayers.Map('map',options);
    var markers = new OpenLayers.Layer.Markers( "отметки",{displayInLayerSwitcher: false,visibility:true}); 
    map.addLayer(markers);
    var mapsrvpath = "http://xn--26-6kc4btrhf0b.xn--p1ai/cgi-bin/mapserv?";
    var mappath = "/var/www/maps/w.map";
    var wms = new OpenLayers.Layer.WMS( 'Ставрополь', mapsrvpath, {'map': mappath, 'layers': 'basic'},{'reproject': true},{isBaseLayer: true, visibility: true});
    var wmss = new OpenLayers.Layer.WMS( 'wmss',
		"http://xn--26-6kc4btrhf0b.xn--p1ai/cgi-bin/mapserv?map=/var/www/maps/w.map",
		{layers: "basic", transparent: true},
		{isBaseLayer: false, opacity: 1, singleTile: true, visibility: true}
);
    
    var selected = new OpenLayers.Layer.WMS("Поиск",mapsrvpath,{map:mappath,layers: 'selected',sql:"select * from zemlepol_2 where addres_zu=':1'",transparent:"true",'mapstyle': s_sel},{isBaseLayer: false});//singleTile:true
    var lesxoz = new OpenLayers.Layer.WMS( 'парки', mapsrvpath, {map: mappath, layers: 'LESXOZ',transparent: 'true'},{isBaseLayer: false, visibility: false,opacity: 0.7});
    var dom = new OpenLayers.Layer.WMS( 'дома', mapsrvpath, {map: mappath, layers: 'DOM',transparent:"true"},{isBaseLayer: false, visibility: false});
    var street = new OpenLayers.Layer.WMS( 'улицы', mapsrvpath, {map: mappath, layers: 'STREET',transparent:"true"},{isBaseLayer: false, visibility: false});
    var garagi = new OpenLayers.Layer.WMS( 'гаражи', mapsrvpath, {map: mappath, layers: 'garagi',transparent:"true"},{isBaseLayer: false, visibility: false});
    map.addLayers([wms,wmss,lesxoz,dom,street,garagi,selected]);
    map.zoomToMaxExtent();
    map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);       
////////////////////////////////////////////////////////////
//получение аттрибуов точки
var click_ctrl = new OpenLayers.Control.WMSGetFeatureInfo({
    url: "http://xn--26-6kc4btrhf0b.xn--p1ai/cgi-bin/mapserv?/var/www/maps/w.map",
    layers: [wmss],
    queryVisible: true,
    infoFormat: 'application/vnd.ogc.gml',
    maxFeatures: 50,
    autoActivate: true,
    // Vendor-specific параметр, используемый в MapServer (радиус поиска объектов в пикселях)
    vendorParams: {
        radius: 10
    },
    eventListeners: {
         'getfeatureinfo': function(e) {
            alert(e.text);
         },
         'beforegetfeatureinfo': function(e) {
            //alert('beforegetfeatureinfo');
         },
         'nogetfeatureinfo': function(e) {
            //alert('nogetfeatureinfo');
            console.log(e.text);
            alert(e.text);
         },
         'activate': function(e) {
            //alert('activate');
         },
         'deactivate': function(e) {
            //alert('deactivate');
         }
    }
});
// Добавляем контрол на карту
	map.addControl(click_ctrl);
...
</script>
Вот код карты .map^

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

MAP
MAP
    NAME "WMS"
    STATUS ON
    IMAGETYPE      PNG
	# -11839.27 -7114.86 6811.85 7050.59
    EXTENT 		-18551.9579 -9007.6500 8893.3400 7001.0000
    SIZE           600 600
	SHAPEPATH 	   "***" 
    IMAGECOLOR     255 255 255
    FONTSET        "fonts/fonts.list"
    UNITS METERS
		
    WEB
        #TEMPLATE  "./template.html"
        HEADER "./template_header.html" # header html template
        TEMPLATE "./template_content.html" # content html template
        FOOTER "./template_footer.html" # footer html template
		IMAGEPATH "/var/www/maps/tmp/"
		IMAGEURL "/ms_tmp/"
		METADATA
            WMS_ENCODING "UTF-8"
            wms_title                  "Stavropol Buildings Map"
            wms_abstract               "This is the WMS from geocentrsk"
            wms_srs    				   "EPSG:4326"
            wms_onlineresource         "http://82.146.61.184/cgi-bin/mapserv?map=/var/www/maps/w.map&"
            wms_getfeatureinfo         "http://82.146.61.184/cgi-bin/mapserv?map=/var/www/maps/w.map&"
            wms_featureinfoformat      "application/vnd.ogc.gml"
            wms_feature_info_mime_type "application/vnd.ogc.gml"
            wms_srs				   	   "epsg:4326"
            wms_enable_request         "*"
            wms_include_items "all"
            ows_enable_request "*" 
	END
    END
	
    PROJECTION
        "proj=latlong"#utm"
	"ellps=WGS84"
	"datum=WGS84"
	"zone=44" 
	"units=m" 
	"north" 
	"no_defs"
    END
	
    LAYER 
        NAME 	 basic
	DATA  	zemlepol_2_region
	STATUS       ON
	TYPE         POLYGON
	DUMP TRUE
	#TEMPLATE  "./template.html"	
        HEADER "./template_header.html" # header html template
        TEMPLATE "./template_content.html" # content html template
        FOOTER "./template_footer.html" # footer html template
        DUMP TRUE
	PROJECTION
		"proj=latlong"#utm"
		"ellps=WGS84"
		"datum=WGS84"
	END
	METADATA
            wms_title		"STAVROPOL"
            wms_abstract 	"figny"
            wms_srs			"EPSG:4326"
            wms_featureinfoformat      "application/vnd.ogc.gml"
            "wms_feature_info_mime_type" "text/html"
            "wms_include_items"   "all"
            gml_include_items "all"            
            "gml_featureid"         "ID" 
	END
	CLASS
            NAME       "STV"
            STYLE
                COLOR        255 255 150
                OUTLINECOLOR 230 230 70
            END
        END
    END 

    LAYER 
        NAME         STREET
        DATA         doroga_polyline
	STATUS       OFF
	TYPE         LINE
	#LABELITEM "adress"
	MAXSCALEDENOM    2000000000		
		PROJECTION
			"proj=latlong"#utm"
			"ellps=WGS84"
			"datum=WGS84"
		END
		
		METADATA
			wms_title		"STAVROPOL_STREET"
			wms_abstract	"StvStreet"
			wms_srs			"EPSG:4326"
			"gml_include_items"     "all" ## Optional (serves all attributes for layer)
			"gml_featureid"         "ID" ## REQUIRED
                        wms_include_items "all"
		END
	
		CLASS
			NAME       "STREETS"
			STYLE
				COLOR        103 203 255
				OUTLINECOLOR 91 43 99
			END	
			
			LABEL
				COLOR 1 1 1
				TYPE TRUETYPE
				FONT arial
				SIZE 10
				POSITION cc
				MAXLENGTH 12
				WRAP  ' '
				ANTIALIAS true
				PARTIALS false
				MINFEATURESIZE 100#auto
				MINDISTANCE 300
				BUFFER 3
				ENCODING CP1251
			END
				
		END	
	END

	LAYER 
        NAME         BIGSTREET
        DATA         doroga_polyline
	STATUS       OFF
	TYPE         LINE
	FILTER "gid=1000"
	#MAXSCALEDENOM    2000000000		
		PROJECTION
			"proj=latlong"#utm"
			"ellps=WGS84"
			"datum=WGS84"
		END
		
		METADATA
			wms_title		"STAVROPOL_BIG_STREET"
			wms_abstract	"StvStreet"
			wms_srs			"EPSG:4326"
			"gml_include_items"     "all" ## Optional (serves all attributes for layer)
			"gml_featureid"         "ID" ## REQUIRED
                        wms_include_items "all"
		END
	
		CLASS
			NAME       "STREETS"
			STYLE
				COLOR        103 203 255
				OUTLINECOLOR 91 43 99
			END	
			
			LABEL
				COLOR 1 1 1
				TYPE TRUETYPE
				FONT arial
				SIZE 10
				POSITION cc
				MAXLENGTH 12
				WRAP  ' '
				ANTIALIAS true
				PARTIALS false
				MINFEATURESIZE 100#auto
				MINDISTANCE 300
				BUFFER 3
				ENCODING CP1251
			END
				
		END	
	END
		
	
	LAYER 
		NAME 	 LESXOZ
		DATA  	lesxoz_region
		STATUS       OFF
		LABELITEM "Nazwan"
		TYPE         POLYGON
		OPACITY 60
		
		TEMPLATE  "./template.html"
		CLASS
			NAME       "LES"
			STYLE
				COLOR        0 255 0
				OUTLINECOLOR 0 255 0
			END
		LABEL
			COLOR 1 1 1
			TYPE TRUETYPE
			FONT arial
			SIZE 10
			POSITION cc
			MAXLENGTH 12
			WRAP  ' '
			ANTIALIAS true
			PARTIALS false
			MINFEATURESIZE 100#auto
			MINDISTANCE 300
			BUFFER 3
			ENCODING CP1251
		END
	END
	
	PROJECTION
		"proj=latlong"#utm"
		"ellps=WGS84"
		"datum=WGS84"
		END
		METADATA
			wms_title		"STAVROPOL leshoz"
			wms_abstract 	"leshozvo"
			wms_srs			"EPSG:4326"
			"gml_include_items"     "all" ## Optional (serves all attributes for layer)
			"gml_featureid"         "ID" ## REQUIRED
		END
	END 

LAYER 
		NAME 	DOM
		DATA  	DOM_O_region
		STATUS       OFF
		TYPE         POLYGON
		
		MAXSCALEDENOM    1000000000
		
		TEMPLATE  "./template.html"
		#LABELITEM "adress"
		
	PROJECTION
		"proj=latlong"#utm"
		"ellps=WGS84"
		"datum=WGS84"
		END
		METADATA
			wms_title		"STAVROPOL dom"
			wms_abstract 	"doma"
			wms_srs			"EPSG:4326"
			"gml_include_items"     "all" ## Optional (serves all attributes for layer)
			"gml_featureid"         "ID" ## REQUIRED
		END
		CLASS
			NAME       "house"
			STYLE
				COLOR        255 160 160
				OUTLINECOLOR 121 93 95
			END
		
		LABEL
			COLOR 1 1 1
			TYPE TRUETYPE
			FONT arial
			SIZE 10
			POSITION cc
			MAXLENGTH 12
			WRAP  ' '
			ANTIALIAS true
			PARTIALS false
			MINFEATURESIZE auto
			MINDISTANCE 200
			BUFFER 3
			ENCODING CP1251
		END
		END
	END 
	
    LAYER 
        NAME 	 garagi
	DATA  	gsk_region
	STATUS       OFF
	TYPE         POLYGON
	OPACITY 60
	MAXSCALEDENOM    500000000
	TEMPLATE  "./template.html"
	LABELITEM "nazvanie"
	PROJECTION
            "proj=latlong"#utm"
			"ellps=WGS84"
			"datum=WGS84"
		END
		
		METADATA
			wms_title		"STAVROPOL dom"
			wms_abstract 	"doma"
			wms_srs			"EPSG:4326"
			"gml_include_items"     "all" ## Optional (serves all attributes for layer)
			"gml_featureid"         "ID" ## REQUIRED
		END
		
		CLASS
			NAME       "garadj"
			STYLE
				COLOR        64 128 195
				OUTLINECOLOR 11 113 15
			END
			
			LABEL
				COLOR 1 1 1
				TYPE TRUETYPE
				FONT arial
				SIZE 10
				POSITION cc
				MAXLENGTH 12
				WRAP  ' '
				ANTIALIAS true
				PARTIALS false
				MINFEATURESIZE auto
				MINDISTANCE 200
				BUFFER 3
				ENCODING CP1251
			END
		END
	END 

    LAYER
        STATUS ON
        TYPE POLYGON
        NAME "selected"
        CONNECTIONTYPE postgis
        CONNECTION "user=*** password=*** dbname=*** host=***"        
		DATA "the_geom from (%SQL%) as newtable using unique gid"
        #DATA "the_geom from (SELECT * FROM  *** WHERE gid='22') as newtable using unique gid using srid=4326"
        PROCESSING "CLOSE_CONNECTION=DEFER"
        CLASS
            STYLE
                COLOR 250 56 56
                OUTLINECOLOR 250 56 56
                ANTIALIAS TRUE
            END
        END
        METADATA
            #wms_srs           "EPSG:4326"
        END
    END

    LAYER
        NAME "highlights"
        STATUS on
        TYPE polygon
        CONNECTIONTYPE postgis
        CONNECTION "user=*** password=*** dbname=*** host=***"        
        #DATA "the_geom from (select * ***) as newtable using unique gid using srid=4326"
        DATA "the_geom from (select * ***) as newtable using unique gid"
        PROCESSING "CLOSE_CONNECTION=DEFER"
        FILTER ( gid = ($SQL$) )

        PROJECTION
            #"init=epsg:4326"
        END

        CLASS
            STYLE
                COLOR   229 60 54
                OUTLINECOLOR 188 0 0
            END
        END
    END
		
END

Файл python.cgi скачан по твоей ссылке. В чем проблема?

s_r_b
Интересующийся
Сообщения: 31
Зарегистрирован: 08 авг 2011, 15:25
Репутация: 0

Re: не работает GetFeatureInfo

Сообщение s_r_b » 06 авг 2012, 23:40

Ура.!!! В контроле в указании адреса недоглядел: вместо

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

   url: "http://xn--26-6kc4btrhf0b.xn--p1ai/cgi-bin/mapserv?/var/www/maps/w.map",
надо

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

   url: "http://xn--26-6kc4btrhf0b.xn--p1ai/cgi-bin/mapserv?/map=var/www/maps/w.map",
Спасибо всем за помощь.

Ответить

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

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

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