Как подавать данные JSON координат в 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] 
 ]]
 }
 }]
 }
 }

Мой псевдо-код: это не работает и возвращает сообщение об ошибке "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 ответ

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

licensed under cc by-sa 3.0 with attribution.