Skip to content

kalkan/python-ile-sayisal-yukseklik-modeli-analizleri

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 

Repository files navigation

Python ile Sayısal Yükseklik Modeli Analizleri

Bu atölyede SRTM raster verileri işlenerek bazı temel analizler gerçekleştirilecektir.

Kullanılan kütüphaneler: rasterio, geopandas, rasterstats

  • rasterio: mekansal raster veri işlemleri için
  • geopandas: mekansal veri operasyonları için
  • rasterstats: vektör geometriler ile raster verilerden istatistik çıkarmak için
  • contextily: internetten altık haritaları çekmek için

1. Uygulama: SRTM Sayısal Yükseklik Verisi Okuma ve Bölgesel İstatistik

# read turkey level-2 geojson
ilceler = gpd.read_file('gadm41_TUR_2.json')
ilceler.plot()

image

  • İstanbul, Bursa ve Kocaeli illerini seçelim
secileniller = ilceler[(ilceler['NAME_1'] == 'Istanbul') | (ilceler['NAME_1'] == 'Bursa') | (ilceler['NAME_1'] == 'Kocaeli')]
  • Bursa'nın, Karamürsel, Orhangazi ve İznik ilçelerini seçelim.
bursailceler = ilceler[(ilceler['NAME_2'] == 'Karamürsel') | (ilceler['NAME_2'] == 'Orhangazi') | (ilceler['NAME_2'] == 'İznik')]
  • Seçilen ilçeleri çizdirelim. Bu ilçelere göre sayısal yükseklik modelimizi keseceğiz.
bursailceler.plot()

image

  • Şimdi sayısal yükseklik modeli verimizi öncelikle rasterio ile okuyup, rioshow ile gösterip, contextily'dan alacağımız arkaplan harita ile sunalım. Üzerine'de seçtiğimiz illerin katmanı nı ekleyelim.
r = rasterio.open("n40e029.hgt")

f, ax = plt.subplots(1, figsize=(9, 9))
ax = rioshow(r, alpha=0.5, zorder=2, ax=ax)
cx.add_basemap(ax, crs=r.crs) 
secileniller.plot(facecolor="none", edgecolor="#F93822", zorder=1, ax=ax)

image

  • Seçtiğimiz Bursa ilçeleri için görüntüyü kesmeden önce bir kere daha görselleştirelim.
r = rasterio.open("n40e029.hgt")

f, ax = plt.subplots(1, figsize=(9, 9))
ax = rioshow(r, alpha=0.5, zorder=2, ax=ax)
cx.add_basemap(ax, crs=r.crs) 
bursailceler.plot(facecolor="none", edgecolor="#F93822", zorder=1, ax=ax)

image

  • Şimdi bölgesel istatistik hesabı için rasterstats kütüphanesinden zonal_stats fonksiyonu ile ilçelerimiz için min, max, median gibi değerleri hesaplayalım.
from rasterstats import zonal_stats

elevations2 = zonal_stats(bursailceler, 'n40e029.hgt',  stats="count min mean max median")
elevations2 = pandas.DataFrame(elevations2)

image

  • Son aşamada sayısal yükseklik verisini bu ilçe sınırlarına göre keserek bir bir .tif uzantılı dosya üreteceğiz.

  • Bunun için öncelikle ilçeler verimizi geojson olarak kaydedelim.

bursailceler.to_file("bursa.geojson", driver="GeoJSON")
  • rio mask komutu ile görüntümüzü bu vektör dosya sınırına göre keserek yeni bir dosya yazdıralım.
! rio mask n40e029.hgt \
           bursa.tif \
           --crop \
           --geojson-mask\
           bursa.geojson
  • Sonrasında görselleştirelim.
f, ax = plt.subplots(1, figsize=(9, 9))
r = rasterio.open("bursa.tif")
rioshow(r, zorder=1, alpha=0.75, ax=ax)
cx.add_basemap(ax, alpha=0.5, crs=r.crs)

image

About

Python ile mekansal raster görüntü işleme atölyesi

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published