首页 / 浏览问题 / 云GIS / 问题详情
再问,cartoCss属性能否设置单值或分段样式?
106EXP 2020年11月12日
使用产品:iserver 9d

问题描述:TiledVectorLayer的cartoCss能否根据字段设置单值或分段样式?业务需求是基于面数据进行服务端专题图渲染,目前实现方式参考超图示例通过 SuperMap.REST.ThemeUnique/SuperMap.REST.ThemeRange 实现,但当矢量面数据量较大(十几万甚至更多),shp文件大小(几十上百M)时,服务端专题图渲染会很慢。现想尝试通过TiledVectorLayer的cartoCss参数设置来实现专题图效果,请问能否实现?如果不能,请问对于这种大数据量的面数据进行专题图渲染的需求,有没有更好的实现方式?谢谢!

1个回答

你好,由于您的数据量过大,建议您最好先在桌面端上将专题图配好进行地图发布;或者将配好的地图切瓦片,再将瓦片发布为地图服务进行使用;;;cartocss虽然可以实现这个需求,但是设置起来比较复杂,这种方式来设置10万数据量的矢量面暂时没有相关测试报告,您可以参考https://iclient.supermap.io/examples/classic/editor.html#vizLayer_cartoCSS_helloKitty 来设置您的cartocss样式 如果需要对面数据中的某个要素进行填充色等样式设置,可以参考:

#New_Region___openlayerZoomtest{
            [featureID=1]{
            polygon-fill:rgb(245,169,193);
            }
        }

其中图层名中的 @ 符号需要改成 ___ 符号,分段样式也可以通过指定featureID的范围来设置

2,842EXP 2020年11月12日
你好,由于专题图需要根据图例进行相关交互操作,单值/分段区间样式都是动态化指定的,所以无法事先配置好图层样式。对于瓦片服务使用的不多,但瓦片应该也无法实现动态化的样式修改。至于cartocss设置,上文提到的featureid是否就是数据中的smid,如果是只能通过id来设置样式,显然是无法满足需求的,最好是能够根据属性字段的值来进行样式配置。另外,还想请教一个深入点儿的问题,就是TiledDynamicRESTLayer图层在设置服务端缓存后,缓存文件中生成的png图片的命名,例如:0002x0010_BE23F500FIX.png,想问下名称后半段 BE23F500FIX ,是如何得来的?或者说是在渲染专题图时哪些参数会影响到缓存图片的命名?谢谢?
featureID并非面数据集属性表中的任何字段,应该是cartocss默认重新排的要素顺序。和SmID顺序是一致的,但是设置样式的时候只能填 featureID,设置为其他的不行
...