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

如何利用OGR_STYLE为DEM等高线添加标注及自定义样式?

解决GDAL生成KML等高线的标注与自定义样式问题

一、自定义等高线颜色(基于OGR_STYLE)

单一样式设置

直接在gdal_contour命令中通过-oo OGR_STYLE参数指定全局样式,比如将等高线设为蓝色、线宽2像素:

gdal_contour small.tif /home/ubuntu/node/geotools/contour.kml -i 3.0 -f KML -a ELEVATION -oo OGR_STYLE="PEN(c:#0000FF,w:2)"

OGR_STYLE的PEN参数规则:

  • c: 后跟RGB十六进制颜色码(如#FF0000为红色)
  • w: 后跟线宽(单位:像素)

分高程段自定义颜色

若需给不同高程区间的等高线设置不同样式,需先生成带高程属性的SHP中间文件,再通过ogr2ogr转换KML时指定样式映射:

  1. 生成SHP格式等高线:
gdal_contour small.tif contour.shp -i 3.0 -a ELEVATION
  1. 用SQL语句定义分区间样式并转换为KML:
ogr2ogr -f KML contour.kml contour.shp -sql "
SELECT *, 
CASE 
  WHEN ELEVATION <= 100 THEN 'PEN(c:#00FF00,w:1)'
  WHEN ELEVATION BETWEEN 100 AND 200 THEN 'PEN(c:#FFFF00,w:1.5)'
  ELSE 'PEN(c:#FF0000,w:2)'
END AS OGR_STYLE 
FROM contour"

二、添加高程标注

方法1:自动生成标注(基于SHP转KML)

先生成SHP等高线,再用ogr2ogr转换时指定NAME_FIELD参数,让Placemark的名称直接调用ELEVATION属性:

ogr2ogr -f KML contour.kml contour.shp -dsco NAME_FIELD=ELEVATION

此方法生成的KML在Google Earth等软件中,会自动将高程数值显示在等高线旁。

方法2:手动修改KML文件添加标注与弹窗

打开生成的contour.kml,找到Style节点,添加LabelStyle(控制标注样式)和BalloonStyle(控制点击弹窗内容):

<Style id="contourStyle">
  <LineStyle>
    <color>ff0000ff</color> <!-- KML颜色为ABGR格式,此处为蓝色 -->
    <width>2</width>
  </LineStyle>
  <LabelStyle>
    <color>ffffffff</color> <!-- 白色文字 -->
    <scale>1.2</scale> <!-- 文字缩放比例 -->
  </LabelStyle>
  <BalloonStyle>
    <text>高程:$[ELEVATION] 米</text> <!-- 点击弹窗显示内容 -->
  </BalloonStyle>
</Style>

随后在每个Placemark中引用该样式,并设置名称为高程值:

<Placemark>
  <name>$[ELEVATION]</name>
  <styleUrl>#contourStyle</styleUrl>
  <LineString>...</LineString>
</Placemark>

三、注意事项

  • GDAL 3.6.2对KML的OGR_STYLE支持完善,但复杂样式建议通过SHP中转处理,灵活性更高
  • KML的颜色编码为ABGR格式(前两位为透明度),而OGR_STYLE的PEN参数使用RGB格式,需注意区分
  • 批量处理时,可通过Python调用GDAL/OGR API实现样式的自动化配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 00:59:54