You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GeoServer中基于PostGIS数据配置风向风速样式?

GeoServer 风向风速SLD样式修正

常见问题分析

你的SLD未得到准确结果,通常源于以下几点:

  1. 风向旋转逻辑不匹配气象标准:GeoServer的<Rotation>默认以正北(0°)为起点顺时针计算,但气象中风向一般指风的来向(如北风是从北吹向南),此时三角形标记需指向风吹去的方向,原角度需做180°偏移。
  2. 风速缩放无范围限制:直接将风速乘以5会导致大风速下符号过大遮挡地图,小风速下符号难以识别。
  3. 标记朝向默认值偏差:默认triangle标记尖端指向正北,需确保旋转后与风向表达逻辑一致。

修正后的SLD代码

<?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>Windy_wind_test</Name>
        <UserStyle>
            <Title>Wind Speed and Direction</Title>
            <FeatureTypeStyle>
                <Rule>
                    <PointSymbolizer>
                        <Graphic>
                            <Mark>
                                <WellKnownName>triangle</WellKnownName>
                                <Fill>
                                    <CssParameter name="fill">#6699FF</CssParameter> <!-- 浅蓝色填充 -->
                                </Fill>
                                <Stroke>
                                    <CssParameter name="stroke">#000000</CssParameter> <!-- 黑色描边 -->
                                    <CssParameter name="stroke-width">1</CssParameter>
                                </Stroke>
                            </Mark>
                            <Size>
                                <!-- 限制风速缩放范围,避免符号过大/过小 -->
                                <ogc:Clamp>
                                    <ogc:Mul>
                                        <ogc:PropertyName>wind_speed</ogc:PropertyName>
                                        <ogc:Literal>3</ogc:Literal> <!-- 调整乘数适配地图比例尺 -->
                                    </ogc:Mul>
                                    <ogc:Literal>5</ogc:Literal> <!-- 最小尺寸 -->
                                    <ogc:Literal>40</ogc:Literal> <!-- 最大尺寸 -->
                                </ogc:Clamp>
                            </Size>
                            <Rotation>
                                <!-- 若wind_dir为气象来向(0°=北风),加180°让三角形指向风吹去的方向 -->
                                <ogc:Add>
                                    <ogc:PropertyName>wind_dir</ogc:PropertyName>
                                    <ogc:Literal>180</ogc:Literal>
                                </ogc:Add>
                            </Rotation>
                        </Graphic>
                    </PointSymbolizer>
                </Rule>
            </FeatureTypeStyle>
        </UserStyle>
    </NamedLayer>
</StyledLayerDescriptor>

关键调整说明

  • 风向旋转:通过<ogc:Add>给原风向角度加180°,适配气象“来向”定义;若你的wind_dir本身是风的去向,可移除该180°偏移。
  • 风速尺寸限制:用<ogc:Clamp>将缩放后的尺寸限制在5-40之间,可根据地图比例尺调整乘数(3)和范围值。
  • 标记样式:保留原三角形样式,若需更直观的风向符号,可将WellKnownName改为arrow(需GeoServer支持该标记)。

验证步骤

  1. 确认wind_dir的定义:是风的来向还是去向,角度基准(0°对应正北还是正东),调整旋转逻辑。
  2. 选取单个测试点,对比实际风向与地图上的标记指向,微调旋转偏移量。
  3. 调整风速乘数和尺寸范围,确保不同风速的符号在地图上清晰可辨且不遮挡其他要素。

内容的提问来源于stack exchange,提问作者shahid abbas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 08:15:14