По моему мнению, в случае, как вы упомянули, хорошо разбить WMS-файл карты на несколько слоев.Даже в некоторых случаях данные поступают из одного и того же источника, но вы все равно можете применить какой-то фильтр, чтобы иметь несколько слоев в вашей WMS.
Например, в месте, которое хранится в таблице в базе данных, есть 1 миллион дорог.Чтобы опубликовать дорожный объект, вы могли бы иметь несколько слоев для этого набора данных.Слои могут быть отфильтрованы по году, по типу или по желанию на основе атрибута или пространственных отношений.Это происходит при использовании фильтра в вашем блоке слоя или файле слоя при разборе строки для запроса через соединение с базой данных.Имя слоев может быть динамическим, когда вы генерируете строку запроса, поэтому я думаю, что это, возможно, то, что вы ищете.
Так что после этого, когда вас интересует, скажем, межгосударственная дорога, вместо использования конечной точки WMSдля всей группы слоев в вашем запросе WMS вы можете выполнять запросы только к межгосударственному слою, используя в запросе «layer = interstate_road».Тогда будет возвращена только межштатная дорога, а не полное сканирование / рендеринг всего набора данных.
И если вы не возражаете читать немного больше, в MapServer также есть пространственный, непространственный фильтр.Например, кодировка фильтра предоставит вам пространственный / непространственный запрос на уровне объекта.И это также динамично, потому что фильтр находится в URL-адресе запроса, который также можно динамически изменять.