Mapserver + PostGIS, Extent

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
San
Новоприбывший
Сообщения: 8
Зарегистрирован: 31 май 2011, 20:38
Репутация: 0

Mapserver + PostGIS, Extent

Сообщение San »

Здравствуйте. Очень хотелось бы получить дельный совет...
Есть набор данных в БД, с помощью mapserver прорисовываю эти данные...
Фрагмент map-файла:

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

LAYER
	NAME "DP"
	TYPE POLYGON
	STATUS DEFAULT
	
	CONNECTIONTYPE POSTGIS
	CONNECTION "host=... port=... dbname=... user=... password=..."
	DATA "wkb_geometry FROM depare"
	EXTENT 34.381780 45.190000 40.132020 47.416610	
	FILTER "drval1 < 10"
	
	PROJECTION
		"init=epsg:4326"
	END
	
	CLASS
		STYLE
			COLOR 204 204 255
			OUTLINECOLOR 187 187 238
		END
	END
END
Этот вариант работает, но не так как надо, по задумке слой должен обрезаться с помощью EXTENT.
На картинке показано что хочу:
Изображение
Что делаю не так? Направьте на путь истинный ;)

Есть идея "обрезать слой" на стадии запроса. Опробован вариант (но его не принимает mapserver):

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

DATA "wkb_geometry FROM depare WHERE wkb_geometry && GeomFromText(
 'POLYGON((34.381780 45.190000,34.381780 47.416610,40.132020 47.416610,40.132020 45.190000,34.381780 45.190000))',-1
) AS res using unique rcid"
Кто может что посоветовать?
Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Mapserver + PostGIS, Extent

Сообщение Denis Rykov »

San писал(а):Что делаю не так?
Не правильно используете оператор PostGIS, && - это логический оператор, возвращающий True, если bbox-ы двух геометрий пересекаются. Решение вашей проблемы - ST_Intersection.
Spatial is now, more than ever, just another column- The Geometry Column.
San
Новоприбывший
Сообщения: 8
Зарегистрирован: 31 май 2011, 20:38
Репутация: 0

Re: Mapserver + PostGIS, Extent

Сообщение San »

Ага, уже понял! Покурил man-ы :)

В общем правильный запрос в map-файле:

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

LAYER
	NAME "dp"
	TYPE POLYGON
	STATUS DEFAULT
	
	#EXTENT 34.381780 45.190000 40.132020 47.416610

	CONNECTIONTYPE POSTGIS
	CONNECTION "host=... port=... dbname=... user=... password=..."

	DATA "wkb_geometry FROM (
		SELECT rcid, ST_Intersection(depare.wkb_geometry,
			ST_GeomFromText('POLYGON((34.381780 45.190000, 34.381780 47.416610, 40.132020 47.416610, 40.132020 45.190000, 34.381780 45.190000))',4326))
			AS wkb_geometry FROM depare
	) AS SUBQUERY USING UNIQUE rcid USING SRID=4326"

	PROJECTION
		"init=epsg:4326"
	END
	
	CLASS
		STYLE
			COLOR 204 204 255
			OUTLINECOLOR 187 187 238
		END
	END
END
Считаю тему закрытой, хотя этот запрос не идеален... mapserver-овский FILTER даёт ошибку, поэтому приходится все условия "впихивать" в запрос.
Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Mapserver + PostGIS, Extent

Сообщение Denis Rykov »

Что за ошибка? Создайте отдельную тему - посмотрим.
Spatial is now, more than ever, just another column- The Geometry Column.
Ответить

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

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

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