WKT格式数据转换geojson

595 阅读1分钟

MULTIPOLYGON数据转换

1.找出数据格式规律:写出对应正则

let wkt_multipolygon = 'MULTIPOLYGON(((114.892797962243 30.2340416262145,114.892797962243 30.2340416262145,114.892797962243 30.2340416262145,114.892797962243 30.2340416262145),(114.892797962243 30.2340416262145,114.892797962243 30.2340416262145,114.892797962243 30.2340416262145,114.892797962243 30.2340416262145)),((114.892797962243 30.2340416262145,114.892797962243 30.2340416262145,114.892797962243 30.2340416262145,114.892797962243 30.2340416262145)),((114.892797962243 30.2340416262145,114.892797962243 30.2340416262145,114.892797962243 30.2340416262145,114.892797962243 30.2340416262145),(114.892797962243 30.2340416262145,114.892797962243 30.2340416262145,114.892797962243 30.2340416262145,114.892797962243 30.2340416262145)))'
const o = wkt_multipolygon.replace(/^MULTIPOLYGON\((.*)\)$/,'[$1]').replace(/\(((\([^()]*\),?)+)\)/g, '[$1]').replace(/\(([^()]*)\)/g, '[$1]').replace(/(?<=,)\s/g, '').replace(/([\.\d\s]+)/g, '[$1]').replace(/\s/g, ',')

2.另一种思路不找规则,硬解:直接写正则硬解:

let wkt_multipolygon = 'MULTIPOLYGON(((114.892797962243 30.2340416262145,114.892797962243 30.2340416262145,114.892797962243 30.2340416262145,114.892797962243 30.2340416262145),(114.892797962243 30.2340416262145,114.892797962243 30.2340416262145,114.892797962243 30.2340416262145,114.892797962243 30.2340416262145)),((114.892797962243 30.2340416262145,114.892797962243 30.2340416262145,114.892797962243 30.2340416262145,114.892797962243 30.2340416262145)),((114.892797962243 30.2340416262145,114.892797962243 30.2340416262145,114.892797962243 30.2340416262145,114.892797962243 30.2340416262145),(114.892797962243 30.2340416262145,114.892797962243 30.2340416262145,114.892797962243 30.2340416262145,114.892797962243 30.2340416262145)))'
const maping= new Map([['(','['],[')',']']])
const o = wkt_multipolygon.replace(/^MULTIPOLYGON/,'').replace(/\(|\)/g, ($0) => maping.get($0)).replace(/([\.\d]+)\s([\.\d]+)/g, '[$1,$2]')