当前位置: 首页 > 知识库问答 >
问题:

Geoserver样式错误(CSS和YSLD)

赖运珧
2023-03-14

我正在尝试在GeoServer中使用CSS样式设置点层的样式。

Geoserver版本2.11.3构建自Tomcat:8-jre8docker容器(从以下repo派生:https://github.com/oscarfonts/docker-geoserver)

我更新的docker文件(将geoserver版本更新到2.11.3,并增加了一些更多的字体):

FROM tomcat:8-jre8

MAINTAINER Oscar Fonts <oscar.fonts@geomati.co>

ENV GEOSERVER_VERSION 2.11.3
ENV GEOSERVER_DATA_DIR /var/local/geoserver
ENV GEOSERVER_INSTALL_DIR /usr/local/geoserver

# Uncomment to use APT cache (requires apt-cacher-ng on host)
#RUN echo "Acquire::http { Proxy \"http://`/sbin/ip route|awk '/default/ { print $3 }'`:3142\"; };" > /etc/apt/apt.conf.d/71-apt-cacher-ng

# Microsoft fonts
# RUN echo "deb http://httpredir.debian.org/debian jessie contrib" >> /etc/apt/sources.list
# RUN set -x \
#   && apt-get update \
#   && apt-get install -yq ttf-mscorefonts-installer \
#   && rm -rf /var/lib/apt/lists/*

# kj@19.7.2017 -- add other fonts
# based on https://github.com/meteofi/docker-geoserver
ENV NOTO_FONTS="NotoSans-unhinted NotoSerif-unhinted NotoMono-hinted"
ENV GOOGLE_FONTS="Open%20Sans Roboto Lato Ubuntu"
# Install Google Noto fonts
RUN mkdir -p /usr/share/fonts/truetype/noto && \
    for FONT in ${NOTO_FONTS}; \
    do \
        wget -nv https://noto-website.storage.googleapis.com/pkgs/${FONT}.zip && \
        unzip -o ${FONT}.zip -d /usr/share/fonts/truetype/noto && \
        rm -f ${FONT}.zip ; \
    done

# Install Google Fonts
RUN \
    for FONT in $GOOGLE_FONTS; \
    do \
        mkdir -p /usr/share/fonts/truetype/${FONT} && \
        wget -nv -O ${FONT}.zip "https://fonts.google.com/download?family=${FONT}" && \
        unzip -o ${FONT}.zip -d /usr/share/fonts/truetype/${FONT} && \
        rm -f ${FONT}.zip ; \
    done

# Native JAI & ImageIO
RUN cd /usr/lib/jvm/java-8-openjdk-amd64 \
    && wget http://download.java.net/media/jai/builds/release/1_1_3/jai-1_1_3-lib-linux-amd64-jdk.bin \
    && tail -n +139 jai-1_1_3-lib-linux-amd64-jdk.bin > INSTALL-jai \
    && chmod u+x INSTALL-jai \
    && ./INSTALL-jai \
    && rm jai-1_1_3-lib-linux-amd64-jdk.bin INSTALL-jai *.txt \
    && wget http://download.java.net/media/jai-imageio/builds/release/1.1/jai_imageio-1_1-lib-linux-amd64-jdk.bin \
    && tail -n +215 jai_imageio-1_1-lib-linux-amd64-jdk.bin > INSTALL-jai_imageio \
    && chmod u+x INSTALL-jai_imageio \
    && ./INSTALL-jai_imageio \
    && rm jai_imageio-1_1-lib-linux-amd64-jdk.bin INSTALL-jai_imageio *.txt

# GeoServer
ADD conf/geoserver.xml /usr/local/tomcat/conf/Catalina/localhost/geoserver.xml
RUN mkdir ${GEOSERVER_DATA_DIR} \
    && mkdir ${GEOSERVER_INSTALL_DIR} \
    && cd ${GEOSERVER_INSTALL_DIR} \
    && wget http://sourceforge.net/projects/geoserver/files/GeoServer/${GEOSERVER_VERSION}/geoserver-${GEOSERVER_VERSION}-war.zip \
    && unzip geoserver-${GEOSERVER_VERSION}-war.zip \
    && unzip geoserver.war \
    && mv data/* ${GEOSERVER_DATA_DIR} \
    && rm -rf geoserver-${GEOSERVER_VERSION}-war.zip geoserver.war target *.txt

# Enable CORS
RUN sed -i '\:</web-app>:i\
    <filter>\
        <filter-name>CorsFilter</filter-name>\
        <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>\
    </filter>\
\
    <filter-mapping>\
        <filter-name>CorsFilter</filter-name>\
        <url-pattern>/*</url-pattern>\
    </filter-mapping>\
\
    <init-param>\
        <param-name>cors.support.credentials</param-name>\
        <param-value>true</param-value>\
    </init-param>' ${GEOSERVER_INSTALL_DIR}/WEB-INF/web.xml

# Tomcat environment
ENV CATALINA_OPTS "-server -Djava.awt.headless=true \
    -Xms768m -Xmx1560m -XX:+UseConcMarkSweepGC -XX:NewSize=48m \
    -DGEOSERVER_DATA_DIR=${GEOSERVER_DATA_DIR}"

ADD start.sh /usr/local/bin/start.sh
CMD start.sh

EXPOSE 8080

产生错误的样式定义:

/* @title red point */
* {
  mark: url(https://raw.githubusercontent.com/mapbox/maki/master/icons/industry-15.svg);
  mark-mime: "image/svg";
}

[@scale < 2000000] {
  mark-size: 30;
}

[@scale > 2000000] [@scale < 4000000] {
  mark-size: 15;
}

[@scale > 4000000] {
  mark-size: 7.5;
}
/* @title dark yellow point */
* {
    mark: symbol(square);
    mark-size: 6px;
    :mark {
        fill: #99cc00;
    }
}

主要错误似乎是:java.lang.NoClassDefoundError:无法在org.apache.batik.bridge.bridge.bridgeContext初始化类org.apache.batik.bridge.cursorManager。

我相信CSS样式在某一时刻起作用,所以我倾向于认为这是我语法的一个问题。对此问题的任何协助都将不胜感激。多谢了。

共有1个答案

瞿博易
2023-03-14

@Andrea Aime从geoserver-users邮件列表中找到了以下解决方案:https://solveme.wordpress.com/2017/07/24/java-awt-awterror-assistive-technology-not-found-org-gnome-accessibility-atkwrapper-when-running-jasper-reports/

将这一行添加到我的dockerfile修复了这个问题:

RUN sed -i 's/^assistive_technologies=/#&/' /etc/java-8-openjdk/accessibility.properties
 类似资料:
  • 在我按照教程将ShapeFile导入geoserver并尝试预览后,我发现输出图像不正确,而在选择openlayers或png、jpeg、gif时,日志中没有错误。图像就像一张被墨水染色的地图。 但是,当我以PDF格式输出图层时,图像是正常的。。。。 除SRS外,所有配置均为默认配置。 网址http://localhost:7070/geoserver/mygis/wms?service=WMS

  • 问题内容: 我刚刚开始使用最新的Java7 SDK在IntelliJ中构建JavaFX应用程序。 我已经使用Oracle Scene Builder构建了界面,所有内容都可以运行并在预览中显示良好,但是当我尝试编译程序时,出现以下错误 根据JavaFX Documentation判断,我的FXML中的行似乎无效。 有人知道我为什么收到此错误吗?(如果我删除了指向样式表的链接,则程序可以正常编译,因

  • Epoch 图表使用 css 设置填充颜色、笔画等。默认情况下,图表使用 D3分类颜色。您可以轻松地覆盖这些默认颜色或创建您自己的自定义类别。 主题 Epoch 以主题的形式安排类似于图表的样式。主题可以通过特殊的类名添加到任何HTML容器中。目前,Epoch船有两个内置主题: epoch-theme-default-基于d3分类颜色的默认主题 epoch-theme-dark-黑色背景下使用的主

  • 主要内容:GWT CSS样式 介绍,GWT CSS样式 常用API,GWT CSS样式 主要和次要风格,GWT CSS样式 关联CSS文件,GWT CSS样式 示例GWT CSS样式 介绍 GWT 小部件依赖于级联样式表 (CSS) 进行视觉样式设置。默认情况下,每个组件的类名是gwt-<classname>。 例如, Button 小部件具有gwt-Button的默认样式,类似的方式 TextBox widest 具有gwt-TextBox的默认样式。 为了给所有按钮和文本框更大的字体,您可以

  • 我正在使用GTK3开发一个简单的程序,并尝试使用GtkCssProvider为特定的小部件(片段)设置CSS样式: 字体属性设置正确,但边距和颜色不。我没有任何CSS解析错误。如果我使用g_object_set()函数来设置(例如)边距,那么一切工作都很好: 有什么想法,怎么了?CSS的东西?也许有更好的方法来使用GtkTextView属性(文本和小部件颜色)?我也尝试了GtkInspector工

  • 本文向大家介绍Bosun 嵌入式模板和CSS样式,包括了Bosun 嵌入式模板和CSS样式的使用技巧和注意事项,需要的朋友参考一下 示例 您可以将另一个模板主体嵌入到模板中,{{template "mysharedtemplate" .}}以重复使用共享的组件。这是一个创建标题模板的示例,该模板可以在所有其他模板主体的顶部重复使用。它还使用CSS来对输出进行样式化,以便于阅读。请注意,所有<sty