问题:
【Mars3d】实现cesium叠加dwg或者其他矢量图的解决方案
说明:
1.dwg,即DWG,是电脑辅助设计软件AutoCAD以及基于AutoCAD的软件保存设计数据所用的一种专有文件格式。
2.AutoCAD(一款绘图工具软件)_百度百科 AutoCAD是一款基本的gis二维制图和三维制图的设计软件。
3.其他矢量图的话,如果数据量级很大的时候,Mars3d的矢量数据量级最多在几十万以内的数据,可以支持combine合并渲染。但是依然会卡顿,所以对大数据量级的矢量图层渲染没有想象中友好。Mars3D 三维可视化平台 | 火星科技 | 地图开发
解决方案:<一>有2种方式
1.dwg转shp转geojson或wfs服务,
2.dwg转图片叠加
<二>geojson对于比较多的矢量数据访问好像不太友好,数据量大了会卡,此时的话,数据量级很大的时候就wfs服务实现。
wfs服务的配置案例,在Mars3d的示例中搜索关键字"wfs"即可看到。
我们支持初始话就加载相关的服务,在layer中配置相关图层的代码即可。
layers: [
{
name: "合肥教育点",
type: "wfs",
url: "//server.mars3d.cn/geoserver/mars/wfs",
layer: "mars:hfjy",
parameters: {
// 支持所有wfs的参数
maxFeatures: 500
},
minimumLevel: 13,
debuggerTileInfo: false,
symbol: {
type: "billboardP",
styleOptions: {
image: "img/marker/mark-red.png",
verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
scaleByDistance: true,
scaleByDistance_far: 20000,
scaleByDistance_farValue: 0.6,
scaleByDistance_near: 1000,
scaleByDistance_nearValue: 1,
clampToGround: true,
label: {
text: "{项目名称}",
font_size: 15,
color: "#ffffff",
outline: true,
outlineColor: "#000000",
pixelOffsetY: -30,
distanceDisplayCondition: true,
distanceDisplayCondition_far: 2000,
distanceDisplayCondition_near: 0
}
}
},
popup: "all",
show: true
}
]
也可以参考示例,在地球初始化之后通过代码进行调用请求相关服务进行渲染。
const wfsLayer = new mars3d.layer.WfsLayer({
name: "建筑物面WFS",
url: "//server.mars3d.cn/geoserver/mars/wfs",
layer: "mars:hfjzw",
parameters: {
// 支持所有wfs的参数
maxFeatures: 210
},
minimumLevel: changeLevel,
symbol: {
type: "polygonP",
styleOptions: {
color: "#00469c",
outline: false,
opacity: 1
}
},
buildings: {
cloumn: "floor"
},
debuggerTileInfo: false,
popup: "名称:{NAME}<br />层数:{floor}",
show: true
})
map.addLayer(wfsLayer)
<三>wfs配置矢量数据发布需要自行学习相关软件的使用,例如arcgis等相关软件。