我正在从REST API提取数据,这会生成数据集列表。其中一些数据集包含我要投影在地图上的坐标。为了投影坐标,我需要将JSON输出转换为GeoJSON。虽然对于大部分数据来说转换都很好。我很难处理包含x和y坐标的长数组。它是4个以上的点组合成多边形(第5个终点=缺少起点)。
如何将具有4个以上XY坐标的一个数组转换为正确的格式,同时添加最后一个与第一个点匹配的数组?
我曾考虑过将数组的每个点都切成新数组,但这对于20个点以上的多边形会导致过多的工作。
JSON示例:
"footprint": {
"epsgId": 4326,
"data": [
[
5.785569964298996,
50.94215924789526,
5.934953425435474,
50.94154873163077,
5.9341556116101595,
50.87413533708443,
5.784989651500041,
50.87474468292546
]
],
},
这是转换成GeoJSON后的样子。我自己写下了这个代码,但是我需要一个JavaScript代码才能在遍历结果时自动执行此操作。
{
"type": "Feature",
"properties": {
"name": "name"
"id" : "id"
},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[5.785569964298996, 50.94215924789526],
[5.934953425435474, 50.94154873163077],
[5.9341556116101595, 50.87413533708443],
[5.784989651500041, 50.87474468292546],
[5.785569964298996, 50.94215924789526]
]
]
}
}
答案 0 :(得分:0)
我认为此功能将为您完成工作。
d = {"footprint": {
"epsgId": 4326,
"data": [
[
5.785569964298996,
50.94215924789526,
5.934953425435474,
50.94154873163077,
5.9341556116101595,
50.87413533708443,
5.784989651500041,
50.87474468292546
]
],
}
}
console.log(d)
function convert(points)
{
geojson = {
"geometry": {
"type": "Polygon",
"coordinates": [
]
}
}
var coordinates = new Array();
for (var i = 0; i < points.length; i+=2) {
coordinates.push([points[i],points[i+1]])
}
//closing the polygon
coordinates.push([points[0],points[1]])
// points need to be in zero index of coordinates array
geojson.geometry.coordinates = new Array(coordinates);
return geojson;
}
console.log(convert(d["footprint"]["data"][0]))