Как передать данные JSON координат в turf.polygon? - PullRequest
0 голосов
/ 27 апреля 2018

Как передать данные 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});

Спасибо.

1 Ответ

0 голосов
/ 27 апреля 2018

Свойство 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});
...