Python kullanarak uydu görüntülerine nasıl erişirsiniz
Python kullanarak uydu görüntülerine erişilmesi
Bir Geospatial Analyst olarak, python kullanarak uydu görüntülerine erişmek ve analiz etmek ve analizinizi oradan gerçekleştirmek isteyebilirsiniz. Bu makale, Python kullanarak bunu nasıl yapabileceğinizi anlamanızı amaçlamaktadır. Bu, Jupyter Notebooks veya Google Colab’da gerçekleştirilebilir.
Not: Bu makalenin sonunda koda erişebileceğiniz Github deposuna bir bağlantı sağladım. Devam ederken bu kodu Google Colab’da çalıştırabilirsiniz.
Burada, Python kullanarak Sentinel 2 Imagery’ye erişmenin bir örneğini kullanacağım.
Verilere erişim: Sentinel 2 verilerini kullanacağız. Sentinel 2 görüntülerine erişmek için birçok seçenek vardır ve bunların çoğu, ister doğrudan bir indirme hizmeti aracı aracılığıyla ister bulut aracılığıyla web sitesi etkileşimi yoluyla erişmenizi gerektirir. Ancak, Jupyter notebook kullandığımız için, bunlara tam burada, sentinelsat bir python kitaplığı kullanarak, Sentinel uydu görüntülerini aramayı, almayı ve indirmeyi kolaylaştıran kullanarak erişeceğiz. O halde sentinelsat’ı pip üzerinden kurmaya başlayalım. Devam ederken kullanacağımız diğer paketleri de kuruyoruz.
!pip sentinelsat kurulumu!pip folium yükleyin!pip yükleme descartes!pip rasterio yükleyin!pip wget'i kurun!pip jeopandaları kurun!pip pandaları kurunithal foliumişletim sistemini içe aktarnumpy'yi np olarak içe aktarsentinelsat'tan içe aktar SentinelAPI, read_geojson, geojson_to_wktjeopandaları gpd olarak içe aktarpandaları pd olarak içe aktarnumpy'yi np olarak içe aktarrasteryoyu içe aktarmatplotlib.pyplot'u plt olarak içe aktarShapely.geometry'den içe aktarma MultiPolygon, Polygonithalat fionawget'i içe aktar
Sentinelsat’ı kullanabilmemiz için Copernicus Open Access Hub’da bir kullanıcı adı kaydetmemiz ve kullanıcı adınızı ve şifrenizi not edip kodun içine buraya yapıştırmamız gerekiyor.
sentinelsat'tan içe aktar SentinelAPIuser = '<kullanıcı adınız>'şifre = '<şifreniz>'api = SentinelAPI(kullanıcı, şifre, 'https://scihub.copernicus.eu/dhus')
Sentinelsat’ı kullanmaya ve Sentinel Uydu görüntülerini indirmeye hazırsınız. Daha sonra bu makalede çalışma alanını tanımlayacağız, Nijerya’nın Lagos Şehri sınır verilerini kullanacağız. . Böylece sınır verilerine (Lagos şekil dosyası) Lagos şekil dosyası yolu üzerinden erişiyoruz ve Geopandas ile okuyacağız ve Folium python kütüphanesi ile görselleştireceğiz.
print("Geopandalar yükleniyor...")# Geopandaları ve descarteları PIP kullanarak kurmamız gerekiyor çünkü bunlar# varsayılan olarak Jupyter'da yüklü değil.!pip jeopandaları kurun!pip yükleme descartesjeopandaları gpd olarak içe aktar# Ardından, şekil dosyasını yazdırın.# Coğrafi koordinatlara baktığımız için çok fazla görünmeyecek.print("Şekil Dosyası Yükleniyor...")# Dosyalarınızı kullanıyorsanız, aşağıdaki dosya adını ("/content/Lagosrussia.shp") aşağıdakiyle değiştirin.# yüklediğiniz şekil dosyası dosya adı.şekil dosyası = gpd.read_file("/content/Lagosnijerya.shp")# "head" işlevi, ilk beş satırı tam olarak yazdırır, böylece# veri kümesindeki sütunlar da!şekil dosyası.kafa()
Şekil dosyası aşağıdaki gibi okunur ve görüntülenir:
Sentinel 2 görüntülerini aramadan ve indirmeden önceki son adım, Lagos Shapefile Geometry’den bir ayak izi oluşturmaktır. Verilerimiz Shapefiles içinde olduğundan ve Geopandas GeodataFrame olarak zaten okuduğumdan burada Shapely Python kütüphanesini kullanacağız. (Geojson verileriniz varsa, sentinelsat’ın verilerinizi sorguda uygun bir biçime dönüştürmek için kullanışlı bir yol sağladığını unutmayın).
Shapely.geometry'den içe aktarma MultiPolygon, Polygonayak izi = Yoki için şekil dosyasında['geometri']:ayak izi = ben
Şimdi yukarıda oluşturduğumuz api üzerinde bir sorgu çalıştırabiliriz. Kullanım durumunuza bağlı olarak sorgunuzu burada oluşturmanın farklı yolları vardır. Bu örnekte, ayak izine düşen veya kesişen 0 ile 10 arasında bulut kapsamına sahip Sentinel 2 Düzey 2A görüntüleri için bir sorgu oluşturacağız (Çalışma alanı: “bizim durumumuzda Lagos Şehri”). Dönem için, yalnızca ‘20220101’ ile ‘20220120’ arasında çekilen Sentinel Düzey 2A uydu görüntüleri ile ilgileniyoruz (Geçerli arama sorgularıyla ilgili referans için lütfen scihub’a bakın).
ürünler = api.query(ayak izi,tarih = ('20190101', '20190110'),platformadı = 'Sentinel-2',işlem düzeyi = 'Seviye-2A',bulut örtüsü yüzdesi = (0,10))
Sentinel 2 verilerini sıralama
ürünler_gdf = api.to_geodataframe(ürünler)Products_gdf_sorted = product_gdf.sort_values(['cloudcoverpercentage'], artan=[Doğru])ürünler_gdf_sorted
Sonuçlar/çıktı aşağıdaki gibidir:
Yukarıda elde edilen sonuçlardan, artık Sentinel 2 verilerinizi (özel) çıktı listesinden indirebilirsiniz.
api.download("ab40b37d-d1ae-4592-bb01-3ed0adf2527a")
Az önce eriştiğiniz Uydu Görüntülerinden analiz yapabilirsiniz!
Github Deposu bağlantısı: https://github.com/KimutaiLawrence/Geospatial-Data-Science
Ayrıca neler olduğunu adım adım açıklayan bir Youtube videosu (Oynatma Listesi: Geospatial Data Science) var.
Makalenin orjinal kaynağını bu linkten okuyabilirsiniz.
Geri bildirim: Python öğrenmek isteyenler için To-Do list - Bilişim Profesyonelleri