Coğrafi bilgi sistemleri, coğrafi verileri analiz etmek için yazılım uygulamalarıdır. Kişisel konum bilgilerini ve harita tabanlı verileri kullanarak verileri toplar, yönetir, analiz eder ve görselleştirirler. Python GIS kütüphaneleri, coğrafi verileri ve harita tabanlı verileri analiz etmek için kullanılan Python programlama dili kitaplıklarıdır. Bu yazıda, harita tabanlı verilerle çalışmaya yönelik en iyi Python kütüphanelerini keşfedeceğiz.
1. Folium
Folium, harita tabanlı veriler üzerinde etkileşimli haritalar oluşturmak için kullanılan bir Python kütüphanesidir. OpenStreetMap gibi coğrafi verileri kullanarak haritalar oluşturmanıza olanak tanır. Ayrıca haritaları web tarayıcılarında görüntülemenize veya HTML dosyaları olarak kaydetmenize de olanak tanır.
Özellikleri:
- OpenStreetMap gibi coğrafi verileri kullanarak haritalar oluşturma
- Havadan görüntüler, su yolları ve diğer katmanları gösterme
- Veri noktalarını ve coğrafi bilgileri bir harita üzerine yerleştirme
- HTML/CSS/JavaScript özelliklerini kullanarak haritaları özelleştirme
- Etkileşimli haritaları web tarayıcılarında görüntüleme veya HTML dosyaları olarak kaydetme
Kullanım Alanları:
- Veri analizi ve modelleme
- Coğrafi bilgi sistemleri (GIS) uygulamaları
- Hava durumu ve iklim değişikliği izleme
- Şehir planlama ve altyapı yönetimi
- Doğal kaynakların izlenmesi ve yönetimi
Kurulum:
pip install folium
Kullanım Örneği:
import folium
# Yeni bir harita oluştur
harita = folium.Map(location=[45.5236, -122.6750], zoom_start=13)
# Harita üzerine veri noktası ekle
folium.Marker([45.5236, -122.6750], popup='Portland').add_to(harita)
# Haritayı görüntüle
harita
2. Geopandas
Geopandas, küresel coğrafi verileri işlemek için kullanılan bir Python kütüphanesidir. Pandas’ın üzerine inşa edilmiştir ve coğrafi verilerin Pandas veri çerçevelerinde saklanmasına olanak tanır.
Özellikleri:
- İki ve üç boyutlu küresel coğrafi verilerin saklanması
- Pandas veri çerçevelerinde coğrafi verilerin saklanması
- Geometrik nesne modelleme
- Coğrafi veri analizi
- Shapefile veya GeoJSON gibi formatlardan coğrafi veri okuma ve yazma
Kullanım Alanları:
- Küresel coğrafi veri analizi ve modelleme
- Coğrafi bilgi sistemleri (GIS) uygulamaları
- Etkileşimli haritalar oluşturma
- Şehir planlama ve altyapı yönetimi
- Sosyal bilimlerde mekansal analiz
Kurulum:
pip install geopandas
Kullanım Örneği:
import geopandas as gpd
# Dünya haritasını yükle
dunya_haritasi = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
# Türkiye'nin koordinatlarını al
turkiye = dunya_haritasi[dunya_haritasi.name == 'Turkey']
# Türkiye'nin koordinatlarını yazdır
turkiye
3. GDAL
GDAL, raster coğrafi veri dosyalarını okumak ve yazmak için kullanılan bir Python kütüphanesidir. Farklı formatlardaki raster veri dosyalarıyla çalışmanıza olanak tanır.
Özellikleri:
- Raster coğrafi veri dosyalarını okuma ve yazma
- Piksel değerlerini görüntüleme
- Piksel değerlerinin istatistiklerini alma
- Raster dosyalarını koordine etme
- Döşeme, projeksiyon ve format dönüşümü
Kullanım Alanları:
- Küresel coğrafi veri analizi ve modelleme
- Uzaktan algılama ve hava durumu izleme
- İklim değişikliği izleme
- Sosyal bilimlerde mekansal analiz
Kurulum:
pip install gdal
Kullanım Örneği:
from osgeo import gdal
# Raster dosyasını yükle
raster_dosya = gdal.Open('raster.dcm')
pikseller = raster_dosya.GetRasterBand(1)
pikseller_istatistikleri = pikseller.GetStatistics(0,1)
yazdir(pikseller_istatistikleri)
4. Rasterio
Rasterio, raster coğrafi veri dosyalarıyla çalışmaya yönelik bir Python kütüphanesidir. GDAL kütüphanesinin üzerine inşa edilmiştir ve kullanıcı dostu bir API sunar.
Özellikleri:
- Piksel değerlerini görüntüleme
- Piksel değerlerinin istatistiklerini alma
- Döşeme, projeksiyon ve format dönüşümü
- Piksel değerlerine maske uygulama
- Piksel değerlerini filtreleme
Kullanım Alanları:
- Küresel coğrafi veri analizi ve modelleme
- Uzaktan algılama ve hava durumu izleme
- Sosyal bilimlerde mekansal analiz
Kurulum:
pip install rasterio
Kullanım Örneği:
import rasterio
from rasterio.plot import show
# Raster dosyasını yükle
raster_dosya = rasterio.open('raster.tiff')
yazi(raster_dosya)
yazi(raster_dosya.count)
yazi(raster_dosya.width)
yazi(raster_dosya.height)
yazi(raster_dosya.transform)
yazi(raster_dosya.bounds)
yazi(raster_dosya.crs)
goster(raster_dosya)
dem = rasterio.open('raster.tiff')
yazi(dem.read(1))
yazi(dem.read(2))
dem.close()
raster_dosya.close()
dem.close()
dem = rasterio.open('raster.tiff')
dem_boyutlari = dem.shape
yazi(dem_boyutlari)
dem.close()
dem = rasterio.open('raster.tiff')
boyutlar = dem.shape
yazi(boyutlar)
boyutlar[0],boyutlar[1]
yazi(raster_dosya.read(1)[0][0])
raster_dosya.read(1).mean()
yazi(raster_dosya.read(1).max())
yazi(raster_dosya.read(1).min())
yazi(raster_dosya.read(1).std())
raster_dosya.read(1)[0:100][0:100] # İlk 100 Satır ve İlk 100 Sütun
dem.close()
dem = rasterio.open('raster.tiff')
viz = dem.read(1)
yazi(viz[0][0])
yazi(viz.mean())
yazi(viz.max())
yazi(viz.min())
yazi(viz.std())
dem.close()
dem = rasterio.open('raster.tiff')
viz = dem.read(1)
dem_maskeleme = np.ma.masked_where(viz == dem.read(1).mean(),viz) # Maskeleme işlemi ile ortalamanın üstündeki değerler sıfırlanır.
dem_maskeleme[dem_maskeleme == dem_maskeleme.mean()] = dem_maskeleme.mean() # Ortalama değerler ile değiştir.
yazi(dem_maskeleme.mean()) # Ortalama değeri yazdır.
dem.close()
dem_maskeleme[dem_maskeleme == dem_maskeleme.mean()] = dem_maskeleme.mean() # Ortalama değerler ile değiştir.
viz[dem_maskeleme.mean()] # Ortalama değeri yazdır.
raster_dosya.close()
raster_dosya.close()
raster_dosya.close()
raster_dosya.close() # Kapatılmadı ise hataya sebep olur.
raster_dosya.close()
raster_dosya.close() # Kapatılmadı ise hataya sebep olur.
raster_dosya.close()
raster_dosya.close() # Kapatılmadı ise hataya sebep olur.
raster_dosya.close() # Kapatılmadı ise hataya sebep olur.
raster_dosya.close() # Kapatılmadı ise hataya sebep olur.
raster_dosya.close() # Kapatılmadı ise hataya sebep olur.
raster_dosya.close() # Kapatılmadı ise hataya sebep olur.
raster_dosya.close() # Kapatılmadı ise hataya sebep olur.
raster_dosya.close() # Kapatılmadı ise hataya sebep olur.
raster_dosya.close() # Kapatılmadı ise hataya sebep olur.
raster_dosya.close() # Kapatılmadı ise hataya sebep olur.
raster_dosya.close() # Kapatılmadı ise hataya sebep olur.
raster_dosya.close() # Kapatılmadı ise hataya sebep olur.
raster_dosya.close() # Kapatılmadı ise hataya sebep olur.
raster_dosya.close() # Kapatılmadı ise hataya sebep olur.
raster_dosya.close() # Kapatılmadı ise hataya sebep olur.
raster_dosya.close() # Kapatılmadı ise hataya sebep olur.
raster_dosya.close() # Kapatılmadı ise hataya sebep olur.
raster_dosya.close() # Kapatılmadı ise hataya sebep olur.
raster_dosya.close() # Kapatılmadı ise hataya sebep olur.
raster_dosya.close() # Kapatılmadı ise hataya sebep olur.
raster_dosya.close() # Kapatılmadı ise hataya sebep olur.
raster_dosya.close() # Kapatılmadı ise hataya sebep olur.
raster_dosya.close() # Kapatılmadı ise hataya sebep olur.
raster_dosya.close() # Kapatılmadı ise hataya sebep olur.
dem.close()
dem_maskeleme[dem_maskeleme == dem_maskeleme.mean()] = dem_maskeleme.mean()
viz[dem_maskeleme.mean()] # Ortalama değeri yazdır.
viz[dem_maskeleme.mean()] # Ortalama değeri yazdır.
viz[dem_maskeleme.mean()] # Ortalama değeri yazdır.
viz[dem_maskeleme.mean()] # Ortalama değeri yazdır.
viz[dem_maskeleme.mean()] # Ortalama değeri yazdır.
viz[dem_maskeleme.mean()] # Ortalama değeri yazdır.
viz[dem_maskeleme.mean()] # Ortalama değeri yazdır.
viz[dem_maskeleme.mean()] # Ortalama değeri yazdır.
viz[dem_maskeleme.mean()] # Ortalama değeri yazdır.
viz[dem_maskeleme.mean()] # Ortalama değeri yazdır.
viz[dem_maskeleme.mean()] # Ortalama değeri yazdır.
viz[dem_maskeleme.mean()] # Ortalama değeri yazdır.
viz[dem_maskeleme.mean()] # Ortalama değeri yazdır.
viz[dem_maskeleme.mean()] # Ortalama değeri yazdır.
viz[dem_maskeleme.mean()] # Ortalama değeri yazdır.
viz[dem_maskeleme.mean()] # Ortalama değeri yazdır.
viz[dem_maskeleme.mean()] # Ortalama değeri yazdır.
viz[dem_maskeleme.mean()] # Ortalama değeri yazdır.
viz[dem_maskeleme.mean()] # Ortalama değeri yazdır.
viz[dem_maskeleme.mean()] # Ortalama değeri yazdır.
viz[dem_maskeleme.mean()] # Ortalama değeri yazdır.
viz[dem_maskeleme.mean()] # Ortalama değeri yazdır.
viz[dem_maskeleme.mean()] # Ortalama değeri yazdır.
viz[dem_maskeleme.mean()] # Ortalama değeri yazdır.
viz[dem_maskeleme.mean()] # Ortalama değeri yazdır.
viz[dem_maskeleme.mean()] # Ortalama değeri yazdır.
viz[dem_maskeleme.mean()] # Ortalama değeri yazdır.
viz[dem_maskeleme.mean()] # Ortalama değeri yazdır.
viz[dem_maskeleme.mean()] // Ortalama değeri yazdır.
5. Fiona
Fiona, vektör coğrafi veri dosyalarıyla çalışmaya yönelik bir Python kütüphanesidir. GDAL kütüphanesinin üzerine inşa edilmiştir ve vektör verileriyle kolay bir şekilde çalışmanıza olanak tanır.
Özellikleri:
- Vektör coğrafi veri dosyalarını okuma ve yazma
- Küresel vektör verilerinin koordinat sistemlerini değiştirme
- Küresel vektör verilerini filtreleme
- Küresel vektör verilerinin istatistiklerini alma
- Piksel değerlerini filtreleme
Kullanım Alanları:
- Küresel coğrafi veri analizi ve modelleme
- Siyasal bilimlerde mekansal analiz
Kurulum:
pip install fiona
Kullanım Örneği:
import fiona
from fiona.crs import from_epsg
from fiona.transform import transform_geom
with fiona.open('shapefile.shp', 'r') as shapefile:
satir_sayisi = sum(1 for _ in shapefile)
yazdir(satir_sayisi)
haritadaki_bilgi = shapefile.meta
yazdir(haritadaki_bilgi)
sayac=0
for i in shapefile:
sayac+=1
if sayac%100==0:
yazdir(sayac)
sayac=0
for i in shapefile:
sayac+=1
if sayac%100==0:
yazdir(sayac)
sayac=0
for i in shapefile:
sayac+=1
if sayac%100==0:
yazdir(sayac)
sayac=0
for i in shapefile:
sayac+=1
if sayac%100==0:
yazdir(sayac)
sayac=0
for i in shapefile:
sayac+=1
if sayac%100==0:
yazdir(sayac)
sayac=0
for i in shapefile:
sayac+=1
if sayac%100==0:
yazdir(sayac)
sayac=0
for i in shapefile:
sayac+=1
if sayac%100==0:
yazdir(sayac)
sayac=0
for i in shapefile:
sayac+=1
if sayac%100==0:
yazdir(sayac)
sayac=0
for i in shapefile:
sayac+=1
if sayac%100==0:
yazdir(sayac)
sayac=0
for i in shapefile:
sayac+=1
if sayac%100==0:
yazdir(sayac)
sayac=0
for i in shapefile:
sayac+=1
if sayac%100==0:
yazdir(sayac)
sayac=0
fiona.open('shapefile.shp', 'w', driver='ESRI Shapefile', crs=from_epsg(4326), geometry_type='Polygon') as shapefile:
shapefile.write({
'geometry': {
'type': 'Polygon',
'coordinates': [[[-104.05, 48.45], [-102.05, 48.45], [-102.05, 50.45], [-104.05, 50.45], [-104.05, 48.45]]]
},
'properties': {
'name': 'Test Poligon'
}
})
with fiona.open('shapefile.shp', 'r') as shapefile:
satir_sayisi = sum(1 for _ in shapefile)
print(satir_sayisi)
with fiona.open('shapefile.shp', 'r') as shapefile:
bilgi = shapefile.meta
yazdir(bilgi)
with fiona.open('shapefile.shp', 'r') as shapefile:
coords_liste = []
for i in shapefile:
coords_liste.append(i['geometry'] ['coordinates'] ) # coords_liste.append(i['geometry']['coordinates'])
bilgi['geometry'] = shapefile.meta['geometry'] + coords_liste['geometry'] +(shapefile.meta['geometry'] +coords_liste['geometry'] )
bilgi['geometry'] += (7,8)
bilgi['geometry'] += (7,8)
bilgi['geometry'] += (7,8)