Витяг даних з NetCDF, використовуючи багатокутник форми форми в Python [дублікат]


11

Мені потрібно підмножити дані з NetCDF, використовуючи певний файл форми. Дані - температура поверхні моря та колір океану при роздільній здатності 1/4 градуса. У мене є 4 багатокутники, що описують США. Велика морська екосистема на північно-східному континентальному шельфі та її підкомпоненти, які мені потрібно використовувати для отримання даних. Я працюю з щомісячними композиційними файлами з 1982-2014 років, тому цю процедуру вилучення даних потрібно автоматизувати. Файли вже підкладені до приблизної сітки робочої області [35, 45, -80, -60].

введіть тут опис зображення

Раніше ми перетворювали файли даних HDF5 в растрові на R та обробляли їх таким чином, але цей метод справді неефективний, і я впевнений, що в Python є краще рішення за допомогою поточних файлів NetCDF.

Поки що я використовував GDAL та Fiona для читання у filefiles та NetCDF4 для завантаження файлів даних. Я не впевнений, як іти про підмноження даних. Я знайшов це:

GDAL для Python: вилучення субдоменів з файлу NetCDF?

Але я не маю найпримітнішого уявлення про те, як підмножити файл NetCDF, використовуючи що-небудь, крім простого обмежувального поля, чого ці полігони, безумовно, не є.

Точка підпрограм багатокутника, ймовірно, потребуватиме вічності для роботи, але, можливо, я можу піднести дані за допомогою меншого обмежувального поля, яке повертається для встановлення таких фігур, як ця, як початкова відправна точка, а потім виконувати пошук "в полі":

Підзадача криволінійного файлу netCDF (вихід моделі ROMS) за допомогою поля обмеження lon / lat.

Будь-які ідеї?

EDIT 1:

Щойно я натрапив на пакет OpenClimateGIS, який здається, що він цілком може відповідати законопроекту ... Мені доведеться попрацювати з цим, щоб побачити, чи зможу я його працювати: http://ncpp.github.io/ocgis/examples. html # розширені підмножини


Останнє посилання в Редагуванні 1 видається мертвим. Це, здається, найкраща заміна: earthsystemcog.org/projects/openclimategis
Aaron

Відповіді:


1

Це може бути адаптоване до ваших потреб.

Якщо ви не проти зателефонувати в командний рядок з python, ви можете зробити щось на кшталт gdalwarp -cutline clip.shp -cl clip -crop_to_cutline input_raster output_raster_clipped.tif. -cwhereі -csqlможуть бути більш підходящі варіанти gdalwarp для вибору одного з чотирьох полігонів для відсікання.


1

Подивіться на це: /programming/34585582/how-to-mask-the-specific-array-data-based-on-the-shapefile

Що ви хочете мати на увазі, що після завантаження NetCDF ви працюєте з масивом NumPy.

Що ви намагаєтеся вивести? Підсумкова статистика на основі полігонів?

Так чи інакше, що я б робив:

  1. Завантажте свій файл форми і переведіть свої області у підтримуваний формат (націлення на процес маски matplotlib у вищенаведеному посиланні звучить добре)
  2. Завантажте файл NetCDF і отримайте дані в єдиний масив X, Y, T
  3. Маскуйте цей масив, використовуючи багатокутники (по одному?)
  4. Експортуйте свою підсумкову статистику.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.