组织OpenLayers发布图层至服务器file数据
- 根据url下载图层GeoJson数据;
- 将GeoJson数据转化为csv格式数据;
例如:
jsonToCSV(obj) {
let jObj = typeof obj != "object" ? JSON.parse(obj) : obj;
let str = '';
// 表头不固定, FID,the_geom为固定,其余数据与properties保持一致
str = 'FID,the_geom,Lon,Lat,instalocao,cluster' + '\r\n';
for(let i = 0; i < jObj.features.length; i++) {
let row = "";
let feature = jObj.features[i];
let geom = feature .geometry;
let props = feature .properties;
row = feature.id + ',' + this.convertToGeom(geom.type, geom.coordinates) + ',' + geom.coordinates[0] + ',' + geom.coordinates[1] + ',' +
props.instalacao + ',' + props.cluster + '\r\n';
str += row;
}
return str;
},
convertToGeom(type, coor) {
return type.toUpperCase() + '(' + coor[0] + ' ' + coor[1] + ')';
},
- 根据csv数据,组织file对象
let csvStr = this.jsonToCSV(obj)
let blob = new Blob([csvStr], {type: "application/vnd.ms.excel"});
let file = new File([blob], "fileName.csv", {
lastModified: new Date(),
type: "application/vnd.ms.excel"
})
// 再将file上传
Blob中type可根据文件类型设置不同参数,参考:https://tool.oschina.net/commons/