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;
}
../../../_images/extrude_usa.png

脚注

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

Next: KML