Geoserver, SLD. стилизация полей кириллицей ??
-
- Интересующийся
- Сообщения: 19
- Зарегистрирован: 05 июл 2009, 15:34
- Репутация: 1
- Откуда: Minsk
- Контактная информация:
Geoserver, SLD. стилизация полей кириллицей ??
Добрый. сделал в udig стилизацию проекта. залил слои в постгис. заголовки полей у меня латиницей. а вот сами значения кирилицей. мне нужно сделать разные цвета в зависимости от значений. геосервер не хочет кушать мои sld-шки. (((
можно ли так отстилизовать? не хочется в транслит перегонять всю атрибутику ( геморно и некрасиво.
можно ли так отстилизовать? не хочется в транслит перегонять всю атрибутику ( геморно и некрасиво.
-
- Интересующийся
- Сообщения: 19
- Зарегистрирован: 05 июл 2009, 15:34
- Репутация: 1
- Откуда: Minsk
- Контактная информация:
Re: Geoserver, SLD. стилизация полей кириллицей ??
нашёл такой патч http://jira.codehaus.org/browse/GEOS-4263
у меня такая же ошибка Invalid byte 2 of 4-byte UTF-8 sequence.
не понял как патчить. и подойдёт ли этот патч для меня . у меня версия 2.3.3. а там 2.0.2.
у меня такая же ошибка Invalid byte 2 of 4-byte UTF-8 sequence.
не понял как патчить. и подойдёт ли этот патч для меня . у меня версия 2.3.3. а там 2.0.2.
-
- Участник
- Сообщения: 50
- Зарегистрирован: 20 июл 2012, 15:49
- Репутация: 4
Re: Geoserver, SLD. стилизация полей кириллицей ??
У меня аналогичная проблема с кирилицей...
В слое есть объекты значения свойств которых заданы кирилицей (сами имена свойств заданы латиницей).
Фильтр по этим полям работает нормально (без дополнительных манипуляций), а стиль не применяется.
Кодировка слоя Windows-1251.
Если специально для SLD перекодирую искомую строку из UTF-8 в Windows-1251, то красятся все объекты, при том что правило соответствует всего одному...
Если кому-то удалось решить проблему стилизации с кириллицей в значениях атрибутов объектов (и фильтров стилей соответственно), прошу помогите.
PS версия GeoServer у меня то же 2.3.3...
В слое есть объекты значения свойств которых заданы кирилицей (сами имена свойств заданы латиницей).
Фильтр по этим полям работает нормально (без дополнительных манипуляций), а стиль не применяется.
Кодировка слоя Windows-1251.
Если специально для SLD перекодирую искомую строку из UTF-8 в Windows-1251, то красятся все объекты, при том что правило соответствует всего одному...
Если кому-то удалось решить проблему стилизации с кириллицей в значениях атрибутов объектов (и фильтров стилей соответственно), прошу помогите.
PS версия GeoServer у меня то же 2.3.3...
-
- Активный участник
- Сообщения: 145
- Зарегистрирован: 14 апр 2010, 14:11
- Репутация: 44
- Откуда: Екатеринбург
Re: Geoserver, SLD. стилизация полей кириллицей ??
Контролируйте кодировку sld (xml). По умолчанию Geoserver пишет в заголовке. Поменяйте на
Код: Выделить всё
<?xml version="1.0" encoding="ISO-8859-1"?>
Код: Выделить всё
<?xml version="1.0" encoding="Windows-1251"?>
-
- Участник
- Сообщения: 50
- Зарегистрирован: 20 июл 2012, 15:49
- Репутация: 4
Re: Geoserver, SLD. стилизация полей кириллицей ??
Пробовал в начало SLD подставлять и <?xml version="1.0" encoding="UTF-8"?> так она у меня в UTF-8 и перекодировать значения в <Literal> в Windows-1251 и добавлять <?xml version="1.0" encoding="Windows-1251"?> в начало SLD - не помогает. Все равно объект не красится, если указан фильтр с условием PropertyIsEqualTo, и красятся все объекты если использую PropertyIsLike.
Если перекодировать всю SLD в cp1251, то все равно перекодируется только русский текст в <Literal>.
Кстати, SLD я передаю через параметр SLD_BODY.
При этом тот де фильтр, используемый в Rule в SLD вставленный в параметр FILTER в кодироке UTF-8 без подстановки в начале <?xml version="1.0" encoding="UTF-8"?> отрабатывает корректно, как я и написал предыдущем посте.
Если <?xml version="1.0" encoding="Windows-1251"?> нужно передавать не в начале SLD в SLD_BODY, то куда это вставить?
Для слоя указана кодировка Windows-1251 и действительно в нем Windows-1251, уже несколько раз проверяли...
SLD формирую аналогично статье http://gis-lab.info/qa/wms-filter.html
В результате чего получаю SLD
Если нет кириллицы, то SLD вполне корректно обрабатывается GeoServer...
PS В настройках GeoServer не особо ковырялся... Практически все сейчас по умолчанию, или настраивалось через веб-интерфейс, и относится в основном к отдельным слоям.
Если перекодировать всю SLD в cp1251, то все равно перекодируется только русский текст в <Literal>.
Спойлер
Код: Выделить всё
function UnicodeToWin1251(s) {
return unescape( encodeURIComponent( s ) );
}
При этом тот де фильтр, используемый в Rule в SLD вставленный в параметр FILTER в кодироке UTF-8 без подстановки в начале <?xml version="1.0" encoding="UTF-8"?> отрабатывает корректно, как я и написал предыдущем посте.
Если <?xml version="1.0" encoding="Windows-1251"?> нужно передавать не в начале SLD в SLD_BODY, то куда это вставить?
Для слоя указана кодировка Windows-1251 и действительно в нем Windows-1251, уже несколько раз проверяли...
SLD формирую аналогично статье http://gis-lab.info/qa/wms-filter.html
Спойлер
Код: Выделить всё
var style = new OpenLayers.Style();
var rule = new OpenLayers.Rule({
name: species_selected[i],
filter: new OpenLayers.Filter.Logical({
type: OpenLayers.Filter.Logical.OR,
filters: [
new OpenLayers.Filter.Comparison({
type: OpenLayers.Filter.Comparison.EQUAL_TO,
property: 'country',
value: 'UKRAINE',
}),
new OpenLayers.Filter.Comparison({
type: OpenLayers.Filter.Comparison.EQUAL_TO,
property: 'country',
value: 'BELARUS',
})
]
}),
symbolizer: {
"Point": {
graphicName: "circle", pointRadius: 3.5,
strokeWidth: 1, strokeColor: "#000000",
fillColor: palette[x], fillOpacity: 0.5
}
}
});
style.addRules([rule]);
Спойлер
<?xml version="1.0" encoding="UTF-8"?><sld:StyledLayerDescriptor xmlns:sld="http://www.opengis.net/sld" version="1.0.0" xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/St ... riptor.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml"><sld:NamedL ... ogc:Filter xmlns:ogc="http://www.opengis.net/ogc"><ogc:And><o ... iteral>Для добычи и разработки полезных ископаемых</ogc:Literal></ogc:PropertyIsEqualTo></ogc:And></ogc:Filter><sld:PolygonSymbolizer><sld:Fill><sld:CssParameter name="fill">#ff0000</sld:CssParameter><sld:CssParameter name="fill-opacity">1,00</sld:CssParameter></sld:Fill><sld:Stroke/></sld:PolygonSymbolizer></sld:Rule></sld:FeatureTypeStyle></sld:UserStyle></sld:NamedLayer></sld:StyledLayerDescriptor>
PS В настройках GeoServer не особо ковырялся... Практически все сейчас по умолчанию, или настраивалось через веб-интерфейс, и относится в основном к отдельным слоям.
-
- Интересующийся
- Сообщения: 20
- Зарегистрирован: 06 ноя 2013, 12:30
- Репутация: 2
Re: Geoserver, SLD. стилизация полей кириллицей ??
Граждане, писякая кодировки в SLD делу не поможешь.
Надо идти в папку с геосервером и искать очень хороший файл в папке conf/server.xml
там ищем строку <Connector port="8080" protocol="HTTP/1.1" ...
и туда вставляем URIEncoding="UTF-8"
Получается
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
Всем благ
Надо идти в папку с геосервером и искать очень хороший файл в папке conf/server.xml
там ищем строку <Connector port="8080" protocol="HTTP/1.1" ...
и туда вставляем URIEncoding="UTF-8"
Получается
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
Всем благ
-
- Участник
- Сообщения: 50
- Зарегистрирован: 20 июл 2012, 15:49
- Репутация: 4
Re: Geoserver, SLD. стилизация полей кириллицей ??
Нет ни файла такого, ни папки... в каталоге геосервера
даже строки начинающейся с <Connector не нашел...
даже строки начинающейся с <Connector не нашел...
-
- Интересующийся
- Сообщения: 20
- Зарегистрирован: 06 ноя 2013, 12:30
- Репутация: 2
Re: Geoserver, SLD. стилизация полей кириллицей ??
хорошо, тогда искать все это в папке не с геосервером, а с Tomcat
-
- Участник
- Сообщения: 50
- Зарегистрирован: 20 июл 2012, 15:49
- Репутация: 4
Re: Geoserver, SLD. стилизация полей кириллицей ??
нет Tomcat,
GeoServer ставился после IIS, не получилось с Tomcat
используется веб-сервер самого GeoServer - jetty, вроде как
поискал по всем файлам <Connector port="8080" protocol="HTTP/1.1"... или хотя бы <connector - ничего не нашел
да и не думаю что это поможет...
если в одном запросе передается одновременно SLD_BODY и FILTER с тем же правилом что и в SLD (в котором кирилица), то SLD ничего не красит, то есть правило не срабатывает, а фильтр работает!
поэтому не думаю что дело в настройках веб-сервера...
у вас sld переданное через параметр sld_body работает если в правиле есть кириллица ?
GeoServer ставился после IIS, не получилось с Tomcat
используется веб-сервер самого GeoServer - jetty, вроде как
поискал по всем файлам <Connector port="8080" protocol="HTTP/1.1"... или хотя бы <connector - ничего не нашел
да и не думаю что это поможет...
если в одном запросе передается одновременно SLD_BODY и FILTER с тем же правилом что и в SLD (в котором кирилица), то SLD ничего не красит, то есть правило не срабатывает, а фильтр работает!
поэтому не думаю что дело в настройках веб-сервера...
у вас sld переданное через параметр sld_body работает если в правиле есть кириллица ?
-
- Активный участник
- Сообщения: 163
- Зарегистрирован: 24 янв 2012, 22:02
- Репутация: 24
- Откуда: Москва
- Контактная информация:
Re: Geoserver, SLD. стилизация полей кириллицей ??
Без Catalina Tomcat даже не знаю как это можно решить. старайтесь не использовать кириллицу внутри правил. С томкатом и прописанной кодировкой по рецепту выше - все работает даже с кириллицей в правилах
- rhot
- Гуру
- Сообщения: 1727
- Зарегистрирован: 25 янв 2011, 17:50
- Репутация: 194
- Ваше звание: доктор
- Откуда: Архангельск
Re: Geoserver, SLD. стилизация полей кириллицей ??
Да, с Tomcat у меня тоже проблем не возникало.
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________
-
- Участник
- Сообщения: 50
- Зарегистрирован: 20 июл 2012, 15:49
- Репутация: 4
Re: Geoserver, SLD. стилизация полей кириллицей ??
В GetLegendGraphic она корректно обрабатывается (там правка ещё urlencode используется, но всё таки)...
Да и все равно не понятно, почему кириллица в FILTER обрабатывается корректно... а кириллица из соседнего параметра SLD_BODY того же запроса обрабатывается не корректно...
Всё таки мне кажется что дело тут не в веб-сервере, а все таки в самом GeoServer...
Жаль исходники у него здоровые - разбираться что к чему весьма долго получится...
Пока что пришлось без кириллицы обойтись, но это точно не решение...
Да и все равно не понятно, почему кириллица в FILTER обрабатывается корректно... а кириллица из соседнего параметра SLD_BODY того же запроса обрабатывается не корректно...
Всё таки мне кажется что дело тут не в веб-сервере, а все таки в самом GeoServer...
Жаль исходники у него здоровые - разбираться что к чему весьма долго получится...
Пока что пришлось без кириллицы обойтись, но это точно не решение...
-
- Активный участник
- Сообщения: 145
- Зарегистрирован: 14 апр 2010, 14:11
- Репутация: 44
- Откуда: Екатеринбург
Re: Geoserver, SLD. стилизация полей кириллицей ??
Может проблема вовсе не в кириллице? Приведенный Вами пример не валиден по ряду причин, одна из них операнд <ogc:And> не завершен.
Переписал Ваш SLD:
Все отображается, проблем нет.
Вы формируете SLD через OpenLayers?
Переписал Ваш SLD:
Код: Выделить всё
<?xml version="1.0" encoding="Windows-1251"?>
<StyledLayerDescriptor version="1.0.0"
xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd"
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">
<NamedLayer>
<Name>default_polygon</Name>
<UserStyle>
<FeatureTypeStyle>
<Rule>
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>Usage_Name</ogc:PropertyName>
<ogc:Literal>Для добычи и разработки полезных ископаемых</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<PolygonSymbolizer>
<Fill>
<CssParameter name="fill">#ff0000</CssParameter>
<CssParameter name="fill-opacity">1</CssParameter>
</Fill>
<Stroke>
<CssParameter name="stroke">#000000</CssParameter>
<CssParameter name="stroke-width">1</CssParameter>
</Stroke>
</PolygonSymbolizer>
</Rule>
</FeatureTypeStyle>
</UserStyle>
</NamedLayer>
</StyledLayerDescriptor>
Все отображается, проблем нет.
Вы формируете SLD через OpenLayers?
-
- Участник
- Сообщения: 50
- Зарегистрирован: 20 июл 2012, 15:49
- Репутация: 4
Re: Geoserver, SLD. стилизация полей кириллицей ??
Тэг <ogc:And> в примере что я приводил завершен.
Если имеется введу, что в нем всего одно условие - как показала практика это не имеет значение, если нет кириллицы, что все прекрасно работает.
SLD полностью формируется OpenLayers, что я ему передаю так это имя слоя, параметры для формирования правила - условия для фильтра и настройки раскраски.
Все скрипты и данные которые приходят для формирования правил в UTF-8.
В Windows-1251 я конвертирую итоговую SLD так:
sld = unescape( encodeURIComponent( sld ) )
Ваш вариант у меня тоже не заработал - ни в UTF-8, ни в Windows-1251 (тем способом что я привел).
Ещё раз привожу свою XML, только в форматированном видеЭту XML мне выдает OpenLayers. Всё что я к ней добавляю - это <?xml version="1.0" encoding="UTF-8"?> или <?xml version="1.0" encoding="Windows-1251"?>, если собираюсь перекодировать её в cp1251.
Так же пробовал заменить 1,00 на 1 или 1.0 или вообще убрать - не помогает.
Слой на котором тестирую в Shapefiles, в кодировке Windows-1251 (пробовали его сохранить в UTF-8, но ничего не изменилось).
Если имеется введу, что в нем всего одно условие - как показала практика это не имеет значение, если нет кириллицы, что все прекрасно работает.
SLD полностью формируется OpenLayers, что я ему передаю так это имя слоя, параметры для формирования правила - условия для фильтра и настройки раскраски.
Все скрипты и данные которые приходят для формирования правил в UTF-8.
В Windows-1251 я конвертирую итоговую SLD так:
sld = unescape( encodeURIComponent( sld ) )
Ваш вариант у меня тоже не заработал - ни в UTF-8, ни в Windows-1251 (тем способом что я привел).
Ещё раз привожу свою XML, только в форматированном виде
Код: Выделить всё
<?xml version="1.0" encoding="UTF-8"?>
<sld:StyledLayerDescriptor
xmlns:sld="http://www.opengis.net/sld"
version="1.0.0"
xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd"
mlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ogc="http://www.opengis.net/ogc"
xmlns:gml="http://www.opengis.net/gml">
<sld:NamedLayer>
<sld:Name>SN:MyLayer</sld:Name>
<sld:UserStyle>
<sld:FeatureTypeStyle>
<sld:Rule>
<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
<ogc:And>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>Usage_Name</ogc:PropertyName>
<ogc:Literal>Для добычи и разработки полезных ископаемых</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:And>
</ogc:Filter>
<sld:PolygonSymbolizer>
<sld:Fill>
<sld:CssParameter name="fill">#ff0000</sld:CssParameter>
<sld:CssParameter name="fill-opacity">1,00</sld:CssParameter>
</sld:Fill>
<sld:Stroke/>
</sld:PolygonSymbolizer>
</sld:Rule>
</sld:FeatureTypeStyle>
</sld:UserStyle>
</sld:NamedLayer>
</sld:StyledLayerDescriptor>
Так же пробовал заменить 1,00 на 1 или 1.0 или вообще убрать - не помогает.
Слой на котором тестирую в Shapefiles, в кодировке Windows-1251 (пробовали его сохранить в UTF-8, но ничего не изменилось).
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
Re: Geoserver, SLD. стилизация полей кириллицей ??
Сам SLD-файл в какой кодировке?
Редактор материалов, модератор форума
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя