Стиль SLD Геосервера — пробел в propertyName

#postgis #geoserver #sld

#postgis #геосервер #sld

Вопрос:

Я пытаюсь настроить стиль sld на Geoserver, который ссылается на столбец в представлении PostGIS «Тип маршрута». Я хотел бы иметь пробелы в именах столбцов, поскольку моя цель — создать удобные для пользователя представления для всех моих пространственных данных. С sld ниже я получаю сообщение об ошибке. Я пробовал заменять пробел на amp;nbsp; amp;#160; , но <![CDATA[Property Name]]> ни один из них не решает проблему.

Возможно ли иметь пробелы в propertyName?

 <?xml version="1.0" encoding="UTF-8"?>
<StyledLayerDescriptor version="1.0.0" xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc"
 xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd">
 <NamedLayer>
   <Name>Truck Routes and Restrictions</Name>
   <UserStyle>
     <Title>Truck Routes and Restrictions</Title>
     <FeatureTypeStyle>
       <Rule>
         <Name>Designated Municipal Truck Route</Name>
         <ogc:Filter>
         <ogc:PropertyIsLike  wildCard="*" singleChar="." escape="!">
           <ogc:PropertyName>Route Type</ogc:PropertyName>
           <ogc:Literal>*Designated Municipal Truck Route*</ogc:Literal>
         </ogc:PropertyIsLike>
         </ogc:Filter>
         <LineSymbolizer>
        <Stroke>
          <CssParameter name="stroke">#006600</CssParameter>
          <CssParameter name="stroke-width">3</CssParameter>
        </Stroke>
      </LineSymbolizer>
       </Rule>
     </FeatureTypeStyle>
   </UserStyle>
 </NamedLayer>
</StyledLayerDescriptor>
 

Ответ №1:

Как я прочитал здесь PropertyName , должно быть доступно для получения службой веб-функций. И затем я прочитал, как запросить WFS propertyName, содержащий круглые скобки, где я прочитал, что все элементы такого типа должны соответствовать именованию элементов XML, которое не допускает никаких пробелов.

Таким образом, вы не можете использовать пробел в PropertyName . Вы должны использовать «мои имена столбцов» таким образом, чтобы ваши пользователи не могли видеть.

Комментарии:

1. Кроме того, если «мои имена столбцов» означают столбцы SQL, вы можете использовать view для изменения имен столбцов для ваших пользователей

2. Спасибо. В итоге я использовал «необработанный набор данных», который имеет имена полей без пробелов в качестве «слоя отображения». Это означает, что все стили sld основаны на этих именах столбцов (которые никогда не содержат пробелов). Для каждого «необработанного набора данных» создается представление с красиво отформатированными именами столбцов (включая пробелы). Это представление используется только для запросов GetFeatureInfo для отображения всплывающих окон с именами полей в удобном формате, в то время как необработанный набор данных отображает стилизованные географические объекты.

3. Приятно слышать, что я помог 🙂