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

Mapserver cluster

Добавлено: 18 апр 2013, 05:25
Malig
Сделал map-файл, вот полный код:

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

MAP
	NAME		   	"WMS"
	STATUS		 	ON
	IMAGETYPE	  	PNG24
	EXTENT		 	20.5966 41.6375 177.731 69.6576
	SIZE 			        800 2048
	IMAGECOLOR	 	255 255 255
	SYMBOLSET	  	"symbols35.sym"
	FONTSET 		        "fonts/fonts.list"

    	OUTPUTFORMAT
        	NAME 			"png"
        	DRIVER 			AGG/PNG
        	MIMETYPE 		"image/png"
        	IMAGEMODE 		RGBA
        	EXTENSION 		"png"
        	FORMATOPTION 	"INTERLACE=ON"
    	END

	WEB
		METADATA
			wms_enable_request 					"*"
			ows_title				  			"indorsoft"
			wms_srs								"EPSG:4326 epsg:3857 epsg:900913"
		END
	END

	PROJECTION
		"init=epsg:4326"
	END

	LAYER  
	    NAME		 clust
		GROUP "default"
		STATUS DEFAULT
		TYPE POINT
	       CONNECTIONTYPE postgis
	       CONNECTION "user=postgres password=qwerty dbname=postgis host=localhost"
	       DATA "the_geom from  city_small using unique gid using srid=4326"

		LABELITEM "Cluster:FeatureCount"
		CLASSITEM "Cluster:FeatureCount"

	       TEMPLATE 		template.html
	        DUMP TRUE
	    
		CLUSTER
    			MAXDISTANCE 50 
     			REGION "ellipse"  
		END
  		
		CLASS
			NAME "Clustered Lightrail Stations"
			EXPRESSION ("[Cluster:FeatureCount]" != "1")
			STYLE
				symbol "punkt"
				COLOR 255 0 0
				SIZE 20
			END
			LABEL
				FONT arial
				TYPE TRUETYPE
				SIZE 6
				COLOR 255 255 255
				ALIGN CENTER
				PRIORITY 10
				BUFFER 1
				PARTIALS TRUE
				POSITION cc
			END
		END

		PROJECTION
			"init=epsg:4326"
		END

		METADATA
			gml_include_items "all"
		END
	END 	
END 

Подключаю в OL WMS-слой, кластеры отлично выводятся. Пытаюсь получить атрибуты через WMSGetFeatureInfo. При клике по некоторым кластерам получаю ответ:

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

<msGMLOutput 
	 xmlns:gml="http://www.opengis.net/gml"
	 xmlns:xlink="http://www.w3.org/1999/xlink"
	 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<clust_layer>
		<clust_feature>
			<gml:boundedBy>
				<gml:Box srsName="EPSG:900913">
					<gml:coordinates>7908383.645760,9410106.855263 7908383.645760,9410106.855263</gml:coordinates>
				</gml:Box>
			</gml:boundedBy>
			<Cluster:FeatureCount>6</Cluster:FeatureCount>
			<Cluster:Group></Cluster:Group>
		</clust_feature>
	</clust_layer>
</msGMLOutput>
А по другим:

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

<msGMLOutput 
	 xmlns:gml="http://www.opengis.net/gml"
	 xmlns:xlink="http://www.w3.org/1999/xlink"
	 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
</msGMLOutput>
Пример запроса:

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

http://map.ru/cgi-bin/mapserv?map=mapfiles/wms_cluster2.map&LAYERS=clust&QUERY_LAYERS=clust&STYLES=&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetFeatureInfo&BBOX=1376799.462315%2C5995618.245205%2C20161963.530315%2C12443234.453961&FEATURE_COUNT=10&HEIGHT=659&WIDTH=1920&FORMAT=png&INFO_FORMAT=application%2Fvnd.ogc.gml&SRS=EPSG%3A900913&X=857&Y=225&RADIUS=10
Т.е. по некоторым кластерам есть ответ с координатами, а по некоторым он пустой, в пределах одного и того же слоя. С чем это может быть связано?

Re: Mapserver cluster

Добавлено: 18 апр 2013, 05:42
Denis Rykov
А какая у вас версия MapServer? Я кое-что писал про кластеры тут.

Re: Mapserver cluster

Добавлено: 18 апр 2013, 06:25
Malig
версия 6.2.
Я читал эту статью. Даже если не углубляться, а посмотреть самый первый ответ сервера в вашем посте, у вас он с координатами.
А у меня такой ответ, не от всех кластеров, от некоторых ответ пустой.

Я составлял мапфайл с учетом всех ваших рекомендаций. Получал атрибутику и т.д.. Но бага в том, что некоторые кластеры, как-будто не попадают в область клика.

Re: Mapserver cluster

Добавлено: 18 апр 2013, 09:04
Denis Rykov
Попробуйте использовать vendor параметр radius. В документации он описан.

Re: Mapserver cluster

Добавлено: 18 апр 2013, 10:32
Malig
Что-то я не понял, как использовать этот radius, где его прописать? Если он добавляется в строку запроса к wms-серверу, так он и так там есть..