如何将 JSON 坐标数据提供给 turf.polygon?

How to feed JSON data of coordinates to turf.polygon?

如何将坐标的JSON数据提供给turf.polygon?

例子: turf.polygon();

var polygon = turf.polygon([[
 [-2.275543, 53.464547],
 [-2.275543, 53.489271],
 [-2.215118, 53.489271],
 [-2.215118, 53.464547],
 [-2.275543, 53.464547]
]], { name: 'poly1', population: 400});

例子:JSON形式

var json = 
{
    "type": "geojson",
    "data": 
        {
         "type": "FeatureCollection",
         "features": [{
               "type": "Feature",
               "geometry": {
                   "type": "Polygon",
                   "coordinates": [[
                         [1.275543, 54.464547], // I want to feed these coordinates
                         [1.275543, 54.489271],
                         [1.215118, 54.489271],
                         [1.215118, 54.464547],
                         [1.275543, 54.464547]  
                    ]]
                }
            }]
       }
 }

我的伪代码: 不起作用,returns 错误消息 "LinearRing of a Polygon must have 4 or more Positions."

var polygon = turf.polygon([[ json.data.features[0].geometry.coordinates ]], { name: 'poly1', population: 400});

谢谢。

coordinates属性已经是一个深度嵌套的数组:

"coordinates": [[
  [1.275543, 54.464547], // I want to feed these coordinates
  [1.275543, 54.489271],
  [1.215118, 54.489271],
  [1.215118, 54.464547],
  [1.275543, 54.464547]  
]]

当你这样做时:

var polygon = turf.polygon([[
  json.data.features[0].geometry.coordinates
]], ...

它将解析为:

var polygon = turf.polygon([[
  [[
    [1.275543, 54.464547], // I want to feed these coordinates
    [1.275543, 54.489271],
    [1.215118, 54.489271],
    [1.215118, 54.464547],
    [1.275543, 54.464547]  
  ]]
]], ...

您想提取并使用原始嵌套数组本身,而不进行修改。试试这个:

var polygon = turf.polygon(json.data.features[0].geometry.coordinates, { name: 'poly1', population: 400});