我可以访问如下数据源:
"Shape": {
"_type": "WKTShapeType",
"Value": "MULTIPOLYGON (((-128.9102 50.82492, -128.90881 50.82422, -128.90717 50.82318, -128.90566 50.82344, -128.90458 50.82304, -128.90401 50.82154, -128.90497 50.82093..."
}
我想将上面的内容转换为如下格式:
{
"shape": [[{"lat": 39.65451, "lng": -75.78862}, {"lat": 39.65476, "lng": -75.78862}, etc...
}
我不确定两者的格式名称是什么(我相信前者是Multipolygon,后者是GeoJSON)?前者来自调用 Here API 的地理编码器端点。后者存储为 JSON 文件。
有什么在线工具可以帮助我进行转换吗?
我最终创建了一个构建在 Wicket 库之上的自定义解析器。
import wicket from 'wicket/wicket';
const parser = (outerPolygon) => {
const wkt = new wicket.Wkt();
const parsePolygonData = (polygon) => {
wkt.read(polygon);
wkt.toJson();
const polygons = wkt.components;
for (let i = 0; i < polygons.length; i++) {
for (let x = 0; x < polygons[i].length; x++) {
if (wkt.type === 'multipolygon') {
for (let y = 0; y < polygons[i][x].length; y++) {
polygons[i][x][y].lat = polygons[i][x][y].y;
delete polygons[i][x][y].y;
polygons[i][x][y].lng = polygons[i][x][y].x;
delete polygons[i][x][y].x;
}
} else {
polygons[i][x].lat = polygons[i][x].y;
delete polygons[i][x].y;
polygons[i][x].lng = polygons[i][x].x;
delete polygons[i][x].x;
}
}
if (wkt.type === 'multipolygon') {
polygons[i] = polygons[i][0];
}
}
return polygons;
};
return parsePolygonData(outerPolygon);
};
Wicket 读取我通过此处端点响应中的
Shape.Value
收到的正文并将其 JSON 化。然后,我通过给每个值一个标签来重新排列纬度/经度。
最终结果如下所示:
[[{"lat": 39.65451, "lng": -75.78862}, {"lat": 39.65476, "lng": -75.78862}, etc...