Как создать коллекцию функций после импорта различных шейп-файлов из ресурсов в Google Earth Engine?

Я импортирую 2 разных шейп-файла из активов для построения диаграммы временных рядов MODIS.

импортированные активы

но я не могу сделать коллекцию функций из этих шейп-файлов

как это сделать?


var Haryana_state = ee.FeatureCollection('users/abhilashaanu92/HaryanaBoundary');

Map.addLayer(Haryana_state);

var Punjab_state = ee.FeatureCollection('users/abhilashaanu92/punjab_state_boundary');

Map.addLayer(Punjab_state);

// Combine features into a feature collection.
var both_states = ee.FeatureCollection([Haryana_state, Punjab_state]).flatten();

Map.addLayer(both_states);

// Load MODIS vegetation indices data and subset annual images.


var vegIndices = ee.ImageCollection('MODIS/006/MOD13A1')
                     .filter(ee.Filter.date('2019-01-01', '2020-01-01'))
                     .select(['NDVI', 'EVI']);

// Define the chart and print it to the console.
var chart =
    ui.Chart.image
        .seriesByRegion({
          imageCollection: vegIndices,
          band: 'NDVI',
          regions: both_states,
          reducer: ee.Reducer.mean(),
          scale: 500,
          seriesProperty: 'label',
          xProperty: 'system:time_start'
        })
        .setOptions({
          title: 'Average NDVI Value by Date',
          hAxis: {title: 'Date', titleTextStyle: {italic: false, bold: true}},
          vAxis: {
            title: 'NDVI (x1e4)',
            titleTextStyle: {italic: false, bold: true}
          },
          lineWidth: 5,
          colors: ['f0af07', '0f8755', '76b349'],
        });
print(chart);

если я помещаю имя одной переменной шейп-файла в регионы, тогда он работает, но когда я объединяю 2 шейп-файла в коллекцию функций, он показывает ошибку.

Как это исправить?

Я хочу вывести что-то вроде этого. (временные ряды обоих состояний на одном графике).

временные ряды разных регионов на одном графике

URL источника диаграммы


person Abhilash Singh Chauhan    schedule 29.04.2021    source источник


Ответы (1)


Здесь нужно сделать две вещи. Сначала добавьте .flatten() после объединения двух FeatureCollections.

Таким образом, вы создаете желаемый набор функций (FeatureCollection). В противном случае вы получите набор FeatureCollections, который выдает ошибку.

Во-вторых, seriesProperty должен соответствовать метке вашего FeatureCollection. В данном случае "STATE_NAME". Вы можете проверить это, добавив print (both_states), чтобы проверить, как выглядит ваша новая коллекция FeatureCollection. Я обновил код.

var Haryana_state = ee.FeatureCollection('users/abhilashaanu92/HaryanaBoundary');

Map.addLayer(Haryana_state);

var Punjab_state = ee.FeatureCollection('users/abhilashaanu92/punjab_state_boundary');

Map.addLayer(Punjab_state);

// Combine features into a feature collection.
var both_states = ee.FeatureCollection([Haryana_state, Punjab_state]).flatten();
print('Check the properties; this will tell you what seriesProperty to use', both_states)

Map.addLayer(both_states);

// Load MODIS vegetation indices data and subset annual images.


var vegIndices = ee.ImageCollection('MODIS/006/MOD13A1')
                     .filter(ee.Filter.date('2019-01-01', '2020-01-01'))
                     .select(['NDVI', 'EVI']);

// Define the chart and print it to the console.
var chart =
    ui.Chart.image
        .seriesByRegion({
          imageCollection: vegIndices,
          band: 'NDVI',
          regions: both_states,
          reducer: ee.Reducer.mean(),
          scale: 500,
          seriesProperty: 'STATE_NAME',
          xProperty: 'system:time_start'
        })
        .setOptions({
          title: 'Average NDVI Value by Date',
          hAxis: {title: 'Date', titleTextStyle: {italic: false, bold: true}},
          vAxis: {
            title: 'NDVI (x1e4)',
            titleTextStyle: {italic: false, bold: true}
          },
          lineWidth: 5,
          colors: ['f0af07', '0f8755', '76b349'],
        });
print(chart);
person CrossLord    schedule 29.04.2021
comment
Не могли бы вы отредактировать его в приведенном выше коде? Я пытался, но не понял - person Abhilash Singh Chauhan; 29.04.2021
comment
Конечно, только что отредактировал ваш код. - person CrossLord; 29.04.2021
comment
Код сейчас работает? - person CrossLord; 29.04.2021
comment
Привет, @CrossLord, я не вижу изменений, внесенных вами в код. - person Abhilash Singh Chauhan; 29.04.2021
comment
Код объединил обе функции, но отобразил данные только одного многоугольника (только для Пенджаба). - person Abhilash Singh Chauhan; 29.04.2021
comment
Во-первых, вы не поделились своими активами, поэтому сложно продублировать ваш код. Чтобы ответить на ваш предыдущий комментарий, следует использовать seriesProperty: 'system: index' вместо 'label'. - person CrossLord; 29.04.2021
comment
Вы можете получить доступ к активам из этих URL-адресов - person Abhilash Singh Chauhan; 29.04.2021
comment
это 2 разных полигона, и мне нужен временной ряд NDVI на одном графике. - person Abhilash Singh Chauhan; 29.04.2021
comment
Давай, чувак, я пытаюсь тебе помочь. Не могли бы вы сделать свои активы общедоступными? Перейдите на вкладку «Активы», нажмите «Актив», нажмите «Поделиться», а затем установите флажок «Кто угодно может читать». - person CrossLord; 29.04.2021
comment
Так что извините @CrossLord, я новичок в GEE, поэтому не знал об этом. Я поделился им сейчас. - person Abhilash Singh Chauhan; 29.04.2021
comment
Обновил первоначальный ответ. - person CrossLord; 29.04.2021
comment
Какой первоначальный ответ? - person Abhilash Singh Chauhan; 29.04.2021
comment
Единственный ответ есть. - person CrossLord; 29.04.2021
comment
Хорошо, спасибо, я проверяю - person Abhilash Singh Chauhan; 29.04.2021
comment
Спасибо огромное брату, все заработало, как и хотелось. - person Abhilash Singh Chauhan; 29.04.2021