如何重新组织 geo JSON 文件
How top reorganize geo JSON file
我有一个格式为
的 geoJSON 文件
{
"type": "Feature",
"id":"01",
"properties": {
"name": "AREA"
},
"geometry": {
"type": "MultiPolygon",
"coordinates": [
[
[
[103.83994102478027, 1.5533451402176797], [103.84079933166502, 1.5600374631000955], [103.84440422058104, 1.5627830253088353], [103.85178565979004, 1.5632978178235577], [103.85693550109862, 1.5566055053011625], [103.8552188873291, 1.548368783815046], [103.84852409362793, 1.546995993784303], [103.84320259094238, 1.5480255863906685], [103.8413143157959, 1.550427967193869],[103.83994102478027, 1.5533451402176797]
]
]
]
}
},
{
"type": "Feature",
"id":"02"
.....
....
....等等。
但是当我验证它时它显示 geoJSON 没有跟随右手 rule.But 当我在地图上绘制它时它工作 fine.But 我希望我的是一个有效的 geoJSON 那么如何我可以将其更改为
{
"type": "Feature",
"id":"01",
"properties": {
"name": "AREA"
},
"geometry": {
"type": "MultiPolygon",
"coordinates": [
[
[
[103.83994102478027, 1.5533451402176797],[103.8413143157959, 1.550427967193869],[103.84320259094238, 1.5480255863906685] ,[103.84320259094238, 1.5480255863906685],[103.84852409362793, 1.546995993784303], [103.8552188873291, 1.548368783815046],[103.85693550109862, 1.5566055053011625],[103.85178565979004, 1.5632978178235577], [103.84440422058104, 1.5627830253088353],[103.84079933166502, 1.5600374631000955],[103.83994102478027, 1.5533451402176797]
]
]
]
}
},
{
"type": "Feature",
"id":"02"
....
....
.... and so on.
感谢任何帮助。
这是一个 JS 函数,可确保多边形的点按逆时针顺序排列(对于右手法则多边形的外部,它们应该如此)。
var testPoly = [[103.83994102478027, 1.5533451402176797], [103.84079933166502, 1.5600374631000955], [103.84440422058104, 1.5627830253088353], [103.85178565979004, 1.5632978178235577], [103.85693550109862, 1.5566055053011625], [103.8552188873291, 1.548368783815046], [103.84852409362793, 1.546995993784303], [103.84320259094238, 1.5480255863906685], [103.8413143157959, 1.550427967193869],[103.83994102478027, 1.5533451402176797]];
function makePolyCCW(points) {
var sum = 0;
for (var i = 0; i < (points.length - 1); i++) {
sum += (points[i+1][0] - points[i][0])*(points[i+1][1] + points[i][1]);
}
return sum > 0 ? points.slice().reverse() : points;
}
console.log(makePolyCCW(testPoly));
您似乎只提供了完整 JSON 文件的一个片段。根据您需要修复的几何类型(多边形、多边形等),代码可能或多或少涉及。如果您需要帮助将上述功能应用于完整文件,请提供更多详细信息,也许我可以提供帮助。
我有一个格式为
的 geoJSON 文件{
"type": "Feature",
"id":"01",
"properties": {
"name": "AREA"
},
"geometry": {
"type": "MultiPolygon",
"coordinates": [
[
[
[103.83994102478027, 1.5533451402176797], [103.84079933166502, 1.5600374631000955], [103.84440422058104, 1.5627830253088353], [103.85178565979004, 1.5632978178235577], [103.85693550109862, 1.5566055053011625], [103.8552188873291, 1.548368783815046], [103.84852409362793, 1.546995993784303], [103.84320259094238, 1.5480255863906685], [103.8413143157959, 1.550427967193869],[103.83994102478027, 1.5533451402176797]
]
]
]
}
},
{
"type": "Feature",
"id":"02"
..... .... ....等等。
但是当我验证它时它显示 geoJSON 没有跟随右手 rule.But 当我在地图上绘制它时它工作 fine.But 我希望我的是一个有效的 geoJSON 那么如何我可以将其更改为
{
"type": "Feature",
"id":"01",
"properties": {
"name": "AREA"
},
"geometry": {
"type": "MultiPolygon",
"coordinates": [
[
[
[103.83994102478027, 1.5533451402176797],[103.8413143157959, 1.550427967193869],[103.84320259094238, 1.5480255863906685] ,[103.84320259094238, 1.5480255863906685],[103.84852409362793, 1.546995993784303], [103.8552188873291, 1.548368783815046],[103.85693550109862, 1.5566055053011625],[103.85178565979004, 1.5632978178235577], [103.84440422058104, 1.5627830253088353],[103.84079933166502, 1.5600374631000955],[103.83994102478027, 1.5533451402176797]
]
]
]
}
},
{
"type": "Feature",
"id":"02"
....
....
.... and so on.
感谢任何帮助。
这是一个 JS 函数,可确保多边形的点按逆时针顺序排列(对于右手法则多边形的外部,它们应该如此)。
var testPoly = [[103.83994102478027, 1.5533451402176797], [103.84079933166502, 1.5600374631000955], [103.84440422058104, 1.5627830253088353], [103.85178565979004, 1.5632978178235577], [103.85693550109862, 1.5566055053011625], [103.8552188873291, 1.548368783815046], [103.84852409362793, 1.546995993784303], [103.84320259094238, 1.5480255863906685], [103.8413143157959, 1.550427967193869],[103.83994102478027, 1.5533451402176797]];
function makePolyCCW(points) {
var sum = 0;
for (var i = 0; i < (points.length - 1); i++) {
sum += (points[i+1][0] - points[i][0])*(points[i+1][1] + points[i][1]);
}
return sum > 0 ? points.slice().reverse() : points;
}
console.log(makePolyCCW(testPoly));
您似乎只提供了完整 JSON 文件的一个片段。根据您需要修复的几何类型(多边形、多边形等),代码可能或多或少涉及。如果您需要帮助将上述功能应用于完整文件,请提供更多详细信息,也许我可以提供帮助。