2.5维拉伸示例¶
拉伸几何图形¶
在本例中,2.5D样式应用于美国各州人口默认图层。要实现2.5D外观,需要两个样式组件协同工作,名为 isometric
对于挤出效果,和 offset
要添加屋顶或顶部曲面,请执行以下操作。为了绘制人口较多的州,一个 sort-by
使用 PERSONS
添加了字段。还请注意,为了维护每个州的绘制顺序,给出了相同的z顺序。
这个 flat mode
指令用于确保不应用级联。这使样式能够将每个CSS规则视为SLD规则,这意味着规则可以相互重叠,较晚的规则首先绘制。
CSS的挤出部分会产生较暗的灰色区域。等轴测函数(请参见 过滤函数引用 )被用来根据美国州的人口规模给出挤出效应。
最后一步是向几何体添加偏移量,以产生较浅的灰色区域作为顶面。上面的挤出根据人口规模从头开始对每个州起作用。因此,有必要在Y轴上将几何图形偏移为与几何图形拉伸使用的高度相同的高度。这会将几何体添加到挤出的顶部,从而产生顶面的效果。
@mode "Flat";
/* EXTRUDING THE POLYGON */
* {
fill: #7B7B7B;
fill-geometry: [isometric(the_geom, PERSONS/8M)];
stroke: #636363;
stroke-geometry: [isometric(the_geom, PERSONS/8M)];
stroke-opacity:0.7;
sort-by: PERSONS;
z-index:0;
}
/* ADDING TOP SURFACE */
* {
fill-geometry: [offset(the_geom, 0, PERSONS/8M)];
stroke-geometry: [offset(the_geom, 0, PERSONS/8M)];
fill: #CACCCD;
stroke: #000000;
stroke-opacity: 0.7;
sort-by: PERSONS;
z-index:0;
label: [STATE_ABBR];
font-family: 'Dialog';
font-weight: 'Bold';
halo-color: white;
halo-radius: 1;
}

脚注¶
使用人口大小对渲染顺序进行排序会导致某些州(例如纽约州)几乎完全覆盖另一个州(在本例中为宾夕法尼亚州)。更好的实现可能是添加一个包含质心值的字段,并按降序在SORT-BY子句中使用该字段,即(SORT-BY:CENTROID_xD)。