3.6. CSS工作簿结论¶
我们希望您喜欢这个造型车间。
其他资源:
3.6.1. CSS工作簿应答键¶
在整个讲习班中列出了以下问题,以此作为更深入探讨材料的机会。在查看这里的答案之前,请尽量仔细考虑这些问题。提供问题以教授有价值的技能,例如有机会了解如何使用要素类型样式来控制z顺序,或在用户手册中的何处查找信息。
3.6.1.1. SLD生成¶
为以下CSS生成SLD。
* { stroke: black; }
挑战: 生成的SLD有什么异常?你能解释一下为什么它仍然像预期的那样工作吗?
生成的SLD不包含任何笔画属性,即使指定了黑色::
<sld:LineSymbolizer> <sld:Stroke/> </sld:LineSymbolizer>
SLD认为黑色是线条符号的默认笔划颜色,因此不需要进一步的细节。
3.6.1.2. 分类¶
挑战: 创建新样式根据 type .
提示:可用值为“主要公路”、“次要公路”、“道路”和“未知”。
下面是一个例子:
[type = 'Major Highway' ] { stroke: #000088; stroke-width: 1.25; } [type = 'Secondary Highway' ]{ stroke: #8888AA; stroke-width: 0.75; } [type = 'Road']{ stroke: #888888; stroke-width: .75; } [type = 'Unknown' ]{ stroke: #888888; stroke-width: 0.5; } * { stroke: #AAAAAA; stroke-opacity: 0.25; stroke-width: 0.5; }
3.6.1.3. sld z-索引生成¶
回答 Challenge SLD Z-Index Generation :
查看由 z-index 例子。
* { stroke: black, #8080E6; stroke-width: 5px, 3px; z-index: 0, 1; }
挑战: 在生成的SLD中有一个有趣的技巧,你能解释一下它是如何工作的吗?
z顺序示例生成多个FeatureTypesTitle定义,每个定义都像一个“内层”。
每个FeatureTypeStyle都被渲染到自己的栅格中,结果按顺序合并。地图预览中显示的图例还提供提示,因为显示了每个FeatureType样式的规则。
3.6.1.4. 标签屏蔽¶
在美国,传统的道路表示法是使用一个盾形符号,在顶部标记道路编号。

挑战: 查看文档并复制此技术。
标签屏蔽的使用是geoserver呈现引擎的特定于供应商的功能。这个练习的棘手部分是在线查找文档(即 Styled Marks in CSS )
* { stroke: black,lightgray; stroke-width: 3,2; label: [name]; font-family: 'Ariel'; font-size: 10; font-fill: black; shield: symbol(square); } :shield { fill: white; stroke: black; size: 18; }
3.6.1.5. 抗锯齿¶
回答 Explore Antialiasing :
当我们呈现初始预览时,没有笔画,在多边形之间可以看到白色的细缝(或长条)。
通过使用JAVA 2D子像素精度的渲染引擎,这种效果变得更加明显。此技术主要用于防止斜线上出现锯齿(阶梯状)外观。
探索: 实验 fill 和 划 设置以消除多边形之间的条。
显而易见的方法是有效的-将两个值设置为相同的颜色:
symbolizers: - polygon: stroke-color: 'lightgrey' stroke-width: 1 fill-color: 'lightgrey'
3.6.1.6. 分类¶
回答 Explore Categorize :
geoserver的令人兴奋的使用 形状 符号是通过改变 size 用于图案密度。
探索: 使用 分类 功能到主题 数据等级 .
例子:
.. code-block:: css * { fill: symbol('shape://slash'); fill-size: [ Categorize(datarank, 4, 4, 5, 6, 8, 10, 10) ]; stroke: black; } :fill { stroke: darkgray; }
3.6.1.7. 晕圈¶
回答 Challenge Halo :
Halo示例将填充颜色和不透明度用于静音Halo,而这提高了可读性,但并未引起标签的注意。
强调的一个常见的设计选择是用对比色勾勒出文本的轮廓。
挑战: 生成一个在黑色文本周围使用白色光环的地图。
下面是一个例子:
* { stroke: gray; fill: #7EB5D3; label: [name]; label-anchor: 0.5 0.5; font-fill: black; font-family: "Arial"; font-size: 14; halo-radius: 1; halo-color: white; }
3.6.1.8. 使用多个属性创建主题¶
回答 Challenge Theming using Multiple Attributes :
一个强大的工具正在使用多个属性创建主题。这是一个重要的概念,允许地图阅读器执行“眼球集成”(检测属性值信息之间的相关性)。
挑战: 结合 地图颜色9 和 数据等级 复制以下地图的示例。
这应该是使用
recode
示例,以及categorize
已提供示例。* { fill: [ recode(mapcolor9, 1,'#8dd3c7', 2,'#ffffb3', 3,'#bebada', 4,'#fb8072', 5,'#80b1d3', 6,'#fdb462', 7,'#b3de69', 8,'#fccde5', 9,'#d9d9d9') ], symbol('shape://slash'); fill-size: '',[ Categorize(datarank, 6, 4, 8, 6, 10, 10, 12) ]; stroke: black; } :fill { stroke: black; }
3.6.1.9. 使用Z索引¶
之前我们研究过使用 z-index 模拟管柱套管。线条画了两次,一次画粗线条,第二次画细线条。产生的效果类似于文本光环——在复杂的线条工作周围提供呼吸空间,使其脱颖而出。
挑战: 使用你所知道的linestring z-index 要复制以下地图:
这是一个棘手的挑战。虽然引入z-index来控制笔画已经很容易了,但还不明显的是z-order也控制了填充顺序。前面的例子说明了如何引入z顺序,需要一些思想来解开填充和笔画z顺序(需要使用空逗号引入虚拟笔画定义)。
* { fill: lightgray, symbol('shape://slash'); fill-size: 8px; stroke: '','',lightgray, black; stroke-width: '','',6,1.5; z-index: 1,2,3,4; } :fill { stroke: black; stroke-width: 0.75; }
所包含的图例应该是关于正在发生的事情的一个很大的线索。
3.6.1.10. 几何位置¶
回答 Challenge Geometry Location :
这个 mark 属性可用于呈现任何几何内容。
挑战: 通过使用 mark 财产。
这可以通过以下两种方式之一实现:
更改多边形层的关联,例如
ne:states_provinces_shp
指向“示例”并使用“层预览”页。改变 Layer Preview 选项卡到多边形层,例如
ne:states_provinces_shp
.
需要注意的是,每个多边形的质心都被用作一个点位置。
3.6.1.11. 动态符号化¶
回答 Explore Dynamic Symbolization :
SLD标记和外部图形为动态符号化提供了机会。
这是通过在传递给符号或url的字符串中嵌入一个小的cql表达式来实现的。此子表达式与 ${{ }} 如图所示:
- point: symbols: - mark: shape: ${if_then_else(equalTo(FEATURECLA,'Admin-0 capital'),'star','circle')}
挑战: 使用此方法重写 动感造型 例子。
此处提供示例
point_example.css
3.6.1.12. 图层组¶
使用A 图层组 探索符号学如何一起工作以形成地图。
东北:东北1
NE:州政府
NE:人口密集的地方
这个背景比较繁忙,必须注意确保符号和标签都清晰可见。
挑战: 在这个繁忙的背景下,尽你所能地为居住区设计风格。
下面是一个带有灵感标签的示例:
这应该是一个重新访问标签光环设置的机会 多边形 .
* { mark-size: [5+((10-SCALERANK)/3)]; font-fill: black; font-family: "Arial"; font-size: 10; label-anchor: 0.5 1; label-offset: 0 [-12+SCALERANK]; halo-radius: 2; halo-color: lightgray; halo-opacity:0.7; mark-label-obstacle: true; label-max-displacement: 90; label-priority: [0 - LABELRANK]; } :symbol { fill: black; stroke: white; stroke-opacity:0.75; }
使用浅灰色光晕,0.7不透明度和半径2淡出复杂的标签文本周围立即提高易读性。
3.6.1.13. 对比度增强¶
讨论 Explore Contrast Enhancement :
灰度信息的一个特殊效果是自动对比度调整。
使用简单的对比度增强
usgs:dem
:* { raster-channels: auto; raster-contrast-enhancement: normalize; }
你能解释一下当放大到只显示一个陆地区域(如下面的边界框所示)时会发生什么吗?
发生的事情是疯狂的,规格化拉伸输出图像的调色板以使用完整的动态范围。只要屏幕上有海洋(值为0),陆地区域的显示方式大致相同。
一旦我们放大到只显示一个陆地区域,屏幕上的最低点(比如100)就变成了新的黑色,从根本上改变了屏幕上显示的内容。
3.6.1.14. 间隔¶
回答 Challenge Intervals :
彩色地图 type 属性指示如何使用值生成结果颜色。
ramp 用于定量数据,在提供的颜色值之间提供平滑的插值。
intervals 为定量数据提供分类,为每个值范围指定纯色。
values 用于定性数据,每个值都需要 color-map 否则将不显示条目。
Challenge: 更新您的DEM示例以使用 intervals 以供演示。对高程数据使用此方法的优势是什么?
通过使用时间间隔,我们可以清楚地看到大陆大部分的相对平坦程度。斜坡展示提供了许多吸引人的细节,这些细节分散了人们对这个事实的注意力。
下面是供您剪切和粘贴的样式:
* { raster-channels: auto; raster-color-map: color-map-entry(#014636, 0,0) color-map-entry(#014636, 1) color-map-entry(#016c59, 500) color-map-entry(#02818a,1000) color-map-entry(#3690c0,1500) color-map-entry(#67a9cf,2000) color-map-entry(#a6bddb,2500) color-map-entry(#d0d1e6,3000) color-map-entry(#ece2f0,3500) color-map-entry(#fff7fb,4000); raster-color-map-type: intervals; }
3.6.1.15. 清晰的数字高程模型表示¶
回答 Challenge Clear Digital Elevation Model Presentation :
既然您已经在屏幕上看到了数据,并且对如何修改最初的灰度示例有了更好的理解,那么您将如何修改这些数据呢?
挑战: 用你所学的来呈现
usgs:dem
很明显。原来是一个黑暗的混乱。考虑使用中间色调(或者采用来自颜色酿造商的顺序调色板)来解决这个问题。在下面的例子中,海洋一直是黑暗的,让山脉更加突出。
* { raster-channels: auto; raster-color-map: color-map-entry(#000000, 0) color-map-entry(#444444, 1) color-map-entry(#FFFFFF, 3000); }
3.6.1.16. 栅格不透明度¶
讨论 Challenge Clear Digital Elevation Model Presentation :
有一种快速的方法可以使栅格数据透明,栅格 不透明性 属性的工作方式与向量数据相同。栅格作为一个整体将被绘制为部分透明的,允许来自其他层的内容提供上下文。
挑战: 你能举出一个例子来说明这一点吗?
这是很困难的,因为栅格数据通常是作为一个基础地图提供的,图层绘制在顶部。
这里最明显的例子是天气系统的显示,或者模型输出,比如火灾危险。通过绘制具有一定透明度的栅格,可以为上下文显示陆块。