Mengatur data geospasial spaceborne dengan Katalog Aset SpatioTemporal (STAC)

Arsitektur referensi ini menunjukkan implementasi end-to-end pembuatan SpatioTemporal Asset Catalog (STAC) untuk menyusun data geospasial. Dalam dokumen ini, kita akan menggunakan himpunan data National Agriculture Imagery Program (NAIP) yang tersedia untuk umum menggunakan pustaka geospasial di Azure. Arsitektur dapat disesuaikan untuk mengambil himpunan data dari sumber lain seperti penyedia citra satelit, Azure Orbital Ground Station (AOGS), atau Bring Your Own Data (BYOD).

Implementasi terdiri dari empat tahap: Akuisisi data, Pembuatan metadata, Katalog, dan Penemuan data melalui STAC FastAPI. Artikel ini juga memperlihatkan cara membuat STAC berdasarkan sumber data baru atau pada data bawaan Anda sendiri.

Implementasi arsitektur ini tersedia di GitHub.

Artikel ini ditujukan untuk pengguna dengan tingkat keterampilan menengah dalam bekerja dengan data geospasial spaceborne. Lihat tabel dalam glosarium untuk definisi istilah STAC yang umum digunakan. Untuk detail selengkapnya, kunjungi halaman stacspec resmi.

Detail skenario

Pengumpulan data spaceborne menjadi semakin umum. Ada berbagai penyedia data aset spatiotemporal seperti Imagery, Synthetic Aperture Radar (SAR), Point Clouds, dan sebagainya. Penyedia data tidak memiliki cara standar untuk menyediakan akses pengguna ke data spatiotemporal mereka. Pengguna data spatiotemporal sering dibebani dengan membangun alur kerja unik untuk setiap pengumpulan data yang berbeda yang ingin mereka konsumsi. Pengembang diharuskan mengembangkan alat dan pustaka baru untuk berinteraksi dengan data spatiotemporal.

Komunitas STAC telah mendefinisikan spesifikasi untuk menghapus kompleksitas ini dan memacu alat umum. Spesifikasi STAC adalah bahasa umum untuk menggambarkan informasi geospasial, sehingga dapat lebih mudah dikerjakan, diindeks, dan ditemukan. Ada banyak produk yang disebarkan yang dibangun di atas STAC dan salah satunya adalah Microsoft Planetary Computer menyediakan katalog STAC multi-petabyte data lingkungan global untuk penelitian keberlanjutan.

Solusi sampel kami menggunakan alat sumber terbuka seperti STAC FastAPI, pystac, API Komputer Microsoft Planetary, dan pustaka geospasial standar terbuka (tercantum di bagian Komponen) untuk menjalankan solusi di Azure.

Kemungkinan kasus penggunaan

STAC telah menjadi standar industri untuk mendukung bagaimana data geospasial harus disusun dan dikueri. Ini telah digunakan dalam banyak penyebaran produksi untuk berbagai kasus penggunaan.

Berikut adalah beberapa contohnya:

  • Perusahaan penyedia data satelit perlu membuat data mereka mudah ditemukan dan diakses. Penyedia membangun Katalog STAC untuk mengindeks semua himpunan data arsip historisnya dan juga data refresh masuk setiap hari. UI klien web dibangun di atas API STAC yang memungkinkan pengguna menelusuri katalog dan mencari gambar yang diinginkan berdasarkan area minat (AOI), rentang tanggal/waktu, dan parameter lainnya.

  • Perusahaan analisis data geospasial perlu membangun database data spaceborne termasuk citra, Model Elevasi Digital (DEM), dan jenis 3D yang telah diperolehnya dari berbagai sumber data. Database akan melayani solusi analisis sistem informasi geografis (GIS) untuk menggabungkan himpunan data yang berbeda untuk analisis deteksi objek berbasis model pembelajaran mesin. Untuk mendukung lapisan akses data standar, perusahaan memutuskan untuk menerapkan antarmuka API STAC yang kompatibel sumber terbuka untuk solusi analisis GIS untuk berinteraksi dengan database dengan cara yang dapat diskalakan dan berkinerja.

Arsitektur

Diagram of STAC architecture.

Unduh file Visio untuk arsitektur ini.

Aliran data

STAC dataflow diagram.

Unduh file Visio untuk aliran data ini.

Bagian berikut menjelaskan empat tahap dalam arsitektur.

Akuisisi data

Pembuatan metadata

  • Penyedia data menentukan metadata yang menjelaskan penyedia, ketentuan lisensi, kata kunci, dll. Metadata ini membentuk Koleksi STAC.
  • Penyedia data dapat menyediakan metadata yang menjelaskan aset geospasial. Dalam sampel kami, kami menggunakan metadata yang disediakan oleh NAIP & FGDC. Lebih banyak metadata diekstrak dari aset menggunakan pustaka geospasial standar. Metadata ini membentuk Item STAC.
  • Koleksi dan Item STAC ini digunakan untuk membangun Katalog STAC yang membantu pengguna menemukan aset spatiotemporal menggunakan API STAC.

Katalogisasi

  • Katalog STAC

    • Katalog STAC adalah objek tingkat atas yang secara logis mengelompokkan Katalog, Koleksi, dan Objek Item lainnya. Sebagai bagian dari penyebaran solusi ini, kami membuat Katalog STAC tempat semua koleksi dan item diatur.
  • Koleksi STAC

    • Ini adalah grup terkait item STAC yang disediakan oleh penyedia data.
    • Kueri pencarian untuk menemukan aset dilingkup di tingkat Koleksi STAC.
    • Ini dihasilkan untuk penyedia data, NAIP dalam hal ini dan metadata JSON ini diunggah ke kontainer Azure Storage.
    • Pengunggahan file metadata KOLEKSI STAC memicu pesan ke Azure Bus Layanan.
    • Prosesor memproses metadata ini pada Kluster Azure Kubernetes dan menyerap ke database Katalog STAC (database PostgreSQL). Ada prosesor yang berbeda untuk penyedia data yang berbeda dan setiap prosesor berlangganan topik Bus Layanan masing-masing.
  • Item dan aset STAC

    • Aset yang akan dikatalogkan (data raster dalam bentuk GeoTiff, Cloud Optimized GeoTiff dan sebagainya). Metadata yang menjelaskan aset dan metadata yang diekstrak dari aset diunggah ke Akun Penyimpanan di bawah kontainer penyimpanan yang sesuai.
    • Aset (GeoTiff) kemudian diunggah ke Akun Penyimpanan di bawah kontainer penyimpanan yang sesuai setelah keberhasilan pengunggahan metadata yang sesuai.
    • Setiap aset dan metadata terkait yang diunggah ke Akun Penyimpanan memicu pesan ke Bus Layanan. Metadata ini membentuk Item STAC dalam database katalog.
    • Prosesor memproses metadata ini pada Kluster Azure Kubernetes dan menyerap ke database Katalog STAC (database PostgreSQL).

Penemuan data

  • STAC API didasarkan pada sumber terbuka STAC FastAPI.
  • Lapisan API STAC diimplementasikan pada Azure Kubernetes Service dan API diekspos menggunakan API Management Service.
  • API STAC digunakan untuk menemukan data geospasial di Katalog Anda. API ini didasarkan pada spesifikasi STAC dan memahami metadata STAC yang ditentukan dan diindeks dalam database Katalog STAC (server PostgreSQL).
  • Berdasarkan kriteria pencarian, Anda dapat dengan cepat menemukan data Anda dari himpunan data besar.
    • Mengkueri Koleksi STAC, Item & Aset:
      • Kueri dikirimkan oleh pengguna untuk mencari satu atau beberapa Koleksi STAC, Item & Aset melalui STAC FastAPI.
      • STAC FastAPI meminta data dalam database PostgreSQL untuk mengambil Koleksi STAC, Item & referensi ke Aset.
      • Hasilnya dilayani kembali kepada pengguna oleh STAC FastAPI.

Komponen

Layanan Azure berikut digunakan dalam arsitektur ini.

  • Key Vault menyimpan dan mengontrol akses ke rahasia seperti token, kata sandi, dan kunci API. Key Vault juga membuat dan mengontrol kunci enkripsi dan mengelola sertifikat keamanan.
  • Bus Layanan adalah bagian dari infrastruktur olahpesan Azure yang lebih luas yang mendukung antrean, penerbitan/berlangganan, dan pola integrasi yang lebih canggih.
  • Azure Data Lake Storage didedikasikan untuk analitik big data, dan dibangun di Azure Blob Storage.
  • Azure Virtual Network memungkinkan sumber daya Azure untuk berkomunikasi secara aman dengan satu sama lain, internet, dan jaringan lokal.
  • Azure Database for PostgreSQL - Server Fleksibel adalah layanan database terkelola sepenuhnya yang dirancang untuk memberikan kontrol dan fleksibilitas yang lebih terperinci atas fungsi manajemen database dan pengaturan konfigurasi. Ini memiliki kemampuan yang lebih kaya seperti ketersediaan tinggi tangguh zona (HA), performa yang dapat diprediksi, kontrol maksimum, jendela pemeliharaan kustom, kontrol pengoptimalan biaya, dan pengalaman pengembang yang disederhanakan yang cocok untuk beban kerja perusahaan Anda.
  • API Management Services menawarkan platform manajemen API multicloud yang dapat diskalakan untuk mengamankan, menerbitkan, dan menganalisis API.
  • Azure Kubernetes Services menawarkan cara tercepat untuk mulai mengembangkan dan menyebarkan aplikasi cloud-native, dengan alur dan pagar pembatas kode-ke-cloud bawaan.
  • Container Registry untuk menyimpan dan mengelola gambar kontainer Anda dan artefak terkait.
  • Komputer Virtual (VM) memberi Anda fleksibilitas virtualisasi untuk berbagai solusi komputasi. Dalam penyebaran yang sepenuhnya aman, pengguna terhubung ke VM melalui Azure Bastion (dijelaskan dalam item berikutnya di bawah) untuk melakukan berbagai operasi seperti menyalin file ke akun penyimpanan, menjalankan perintah Azure CLI, dan berinteraksi dengan layanan lain.
  • Azure Bastion memungkinkan Anda untuk RDP & SSH dengan aman dan lancar ke VM Anda di jaringan virtual Azure, tanpa perlu IP publik pada VM, langsung dari portal Azure, dan tanpa memerlukan klien/agen lain atau perangkat lunak apa pun.
  • Application Insights menyediakan manajemen dan pemantauan performa aplikasi yang dapat diperluas untuk aplikasi web langsung.
  • Log Analytics adalah alat untuk mengedit dan menjalankan kueri log dari data yang dikumpulkan oleh log Azure Monitor dan menganalisis hasilnya secara interaktif.

Pustaka Geospasial berikut ini juga digunakan:

  • GDAL adalah pustaka alat untuk memanipulasi data spaceborne. GDAL bekerja pada jenis data raster dan vektor. Ini adalah alat yang baik untuk mengetahui apakah Anda bekerja dengan data spaceborne.
  • Rasterio adalah modul untuk pemrosesan raster. Anda dapat menggunakannya untuk membaca dan menulis beberapa format raster yang berbeda dalam Python. Rasterio didasarkan pada GDAL. Ketika modul diimpor, Python secara otomatis mendaftarkan semua driver GDAL yang diketahui untuk membaca format yang didukung.
  • Shapely adalah paket Python untuk analisis set-theoretic dan manipulasi fitur planar. Ini menggunakan fungsi (melalui modul ctypes Python) dari pustaka GEOS yang disebarkan secara luas.
  • pyproj melakukan transformasi kartografi. Ini mengonversi dari garis bujur dan lintang ke proyeksi peta asli x, koordinat y, dan sebaliknya, dengan menggunakan PROJ.

Pertimbangan

  • Solusi sampel menunjukkan dukungan JSON inti STAC yang diperlukan untuk berinteraksi dengan pengumpulan data geospasial apa pun. Meskipun STAC menstandarkan bidang metadata, konvensi penamaan, bahasa kueri, dan struktur katalog, pengguna juga harus mempertimbangkan Ekstensi STAC untuk mendukung bidang metadata khusus untuk Aset mereka.

  • Dalam implementasi sampel, komponen yang memproses aset untuk mengekstrak metadata memiliki sejumlah replika yang ditetapkan. Menskalakan komponen ini memungkinkan Anda untuk memproses aset Anda lebih cepat. Namun, penskalakan tidak dinamis. Jika sejumlah besar aset yang akan dikatalogkan, pertimbangkan untuk menskalakan replika ini.

Menambahkan sumber data baru

Untuk membuat katalog lebih banyak sumber data atau untuk membuat katalog sumber data Anda sendiri, pertimbangkan opsi berikut.

  • Tentukan Koleksi STAC untuk sumber data Anda. Kueri pencarian dilingkup di tingkat Koleksi STAC. Pertimbangkan bagaimana pengguna akan mencari Item dan Aset STAC di koleksi Anda.
  • Buat metadata Item STAC. Metadata lainnya dapat berasal dari aset geospasial menggunakan alat dan pustaka standar. Tentukan dan terapkan proses untuk menangkap metadata tambahan untuk aset yang akan berguna dalam membuat item STAC kaya dan pada gilirannya membuat penemuan data menggunakan API lebih mudah.
  • Setelah metadata ini (dalam bentuk Koleksi STAC dan Item STAC) tersedia untuk sumber data, solusi sampel ini dapat digunakan untuk membangun Katalog STAC Anda menggunakan alur yang sama. Data setelah dikologkan akan dapat dikueri menggunakan API STAC standar.
  • Komponen prosesor arsitektur ini dapat diperluas untuk menyertakan kode kustom yang dapat dikembangkan dan dijalankan sebagai kontainer di Kluster Azure Kubernetes. Ini dimaksudkan untuk memberikan cara bagi representasi data geospasial yang berbeda untuk dikatalogkan sebagai aset.

Keamanan

Keamanan memberikan jaminan terhadap serangan yang disukai dan penyalahgunaan data dan sistem berharga Anda. Untuk informasi selengkapnya, lihat Gambaran Umum pilar keamanan.

  • Implementasi Azure Kubernetes Service Container Security memastikan prosesor dibuat dan dijalankan karena kontainer aman.
  • Garis besar API Management Service Security memberikan rekomendasi tentang cara mengamankan solusi cloud Anda di Azure.
  • Keamanan Azure Database for PostgreSQL mencakup keamanan secara mendalam di beberapa lapisan saat data disimpan di PostgreSQL Flexible Server termasuk data tidak aktif dan data dalam skenario transit.

Pengoptimalan biaya

Optimalisasi biaya adalah tentang mencari cara untuk mengurangi pengeluaran yang tidak perlu dan meningkatkan efisiensi operasional. Untuk informasi selengkapnya, lihat Gambaran umum pilar pengoptimalan biaya.

Karena solusi ini ditujukan untuk pembelajaran dan pengembangan, kami telah menggunakan konfigurasi minimal untuk sumber daya Azure. Konfigurasi minimal ini menjalankan solusi sampel pada himpunan data sampel.

Pengguna juga dapat menyesuaikan konfigurasi untuk memenuhi beban kerja dan skala mereka perlu dilakukan. Misalnya, Anda dapat menukar HDD Standar untuk SSD Premium di kluster AKS Anda atau menskalakan API Management Services ke SKU premium.

Efisiensi kinerja

Efisiensi performa adalah kemampuan beban kerja Anda untuk diskalakan agar memenuhi permintaan yang diberikan oleh pengguna dengan cara yang efisien. Untuk informasi selengkapnya, lihat Gambaran umum pilar efisiensi performa. Selain itu, panduan berikut dapat berguna dalam memaksimalkan efisiensi performa:

Menyebarkan skenario ini

Kami membangun solusi sampel yang dapat disebarkan ke dalam langganan Anda. Solusi ini memungkinkan pengguna memvalidasi aliran data keseluruhan dari metadata STAC, penyerapan hingga menemukan aset menggunakan API STAC standar. Instruksi penyebaran dan langkah-langkah validasi didokumentasikan dalam file README .

Pada tingkat tinggi, penyebaran ini melakukan hal berikut:

  • Menyebarkan berbagai komponen infrastruktur seperti Azure Kubernetes Services, Azure PostgreSQL Server, Azure Key Vault, akun Azure Storage, Azure Bus Layanan, dan sebagainya, di jaringan privat.

  • Menyebarkan layanan Azure API Management dan menerbitkan titik akhir untuk STAC FastAPI.

  • Mengemas kode dan dependensinya, membangun gambar kontainer Docker, dan mendorongnya ke Azure Container Registry.

    Diagram of STAC deployment services.

Unduh file Visio untuk implementasi ini.

Langkah berikutnya

Jika Anda ingin mulai membangun ini, kami telah menyusun solusi sampel yang dibahas secara singkat di atas. Di bawah ini adalah beberapa tautan yang berguna untuk memulai implementasi STAC & model.

Glosarium

Istilah STAC Definisi
Aset File apa pun yang mewakili data spaceborne yang diambil dalam ruang dan waktu tertentu.
Spesifikasi STAC Memungkinkan Anda untuk menjelaskan data geospasial sehingga dapat dengan mudah diindeks dan ditemukan.
STAC Item Unit atom inti, mewakili satu aset spatiotemporal sebagai fitur GeoJSON ditambah metadata seperti tanggalwaktu dan tautan referensi.
Katalog STAC JSON sederhana dan fleksibel yang menyediakan struktur dan mengatur metadata seperti item STAC, koleksi, dan katalog lainnya.
Koleksi STAC Menyediakan informasi tambahan seperti tingkat, lisensi, kata kunci, penyedia, dan sebagainya, yang menjelaskan Item STAC dalam Koleksi.
STAC API Menyediakan titik akhir RESTful yang memungkinkan pencarian Item STAC, yang ditentukan dalam OpenAPI.