4

如何将坐标的 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]  
                    ]]
                }
            }]
       }
 }

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

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

谢谢你。

4

1 回答 1

1

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});
于 2018-04-27T01:59:43.723 回答