簡體   English   中英

將JSON多邊形坐標列表轉換為GeoJSON格式的Long / Lat數組

[英]Converting a list of JSON polygon coordinates to Long/Lat arrays in GeoJSON format

我從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]
          ]
        ]
      }
    }

我認為這個功能可以幫到你。

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]))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM