Ana içeriğe atla

Python'da Coğrafi Uzamsal Verilere Giriş

Bu eğitimde, 30 Ağustos'tan 18 Eylül'e kadar Kasırga Florence'ın izlediği yolu çizmek için coğrafi uzamsal verileri kullanacaksınız.
Güncel 3 Eki 2026  · 13 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

coğrafi uzamsal grafik

Bu eğitimde, coğrafi uzamsal verilerle çalışmak için popüler olan iki paketi tanıyacaksınız: geopandas ve Shapely. Ardından bu iki paketi kullanarak coğrafi uzamsal verileri Python ile içe aktaracak ve 30 Ağustos'tan 18 Eylül'e kadar Kasırga Florence'ın izini çizeceksiniz.

Coğrafi Uzamsal Veri Nedir?

Mekansal veri, coğrafi uzamsal veri, CBS verisi veya jeoveri; bir binanın, caddenin, kasabanın, şehrin, ülkenin vb. coğrafi konumunu bir coğrafi koordinat sistemine göre tanımlayan sayısal veriler için kullanılan adlardır. Mekansal verilerden yalnızca konumu değil, aynı zamanda herhangi bir nesnenin uzunluğunu, boyutunu, alanını veya şeklini de öğrenebilirsiniz. Elde edebileceğiniz mekansal veri türlerine bir örnek: bir nesnenin enlem, boylam ve yükselti gibi koordinatlarıdır. Coğrafi Bilgi Sistemleri (CBS) veya diğer özel yazılım uygulamaları coğrafi uzamsal verilere erişmek, görselleştirmek, işlemek ve analiz etmek için kullanılabilir.

Neden Coğrafi Uzamsal Veri?

Coğrafi uzamsal verilerin günlük yaşamımızda çok sayıda uygulaması vardır. Örneğin, bir konumdan diğerine gitmek için kullandığınız Haritalar uygulaması. Her gün gördüğünüz bir diğer örnek ise hava durumu kanalıdır.

haber hava durumu bölümü ekran görüntüsü

Evet, coğrafi uzamsal veriler bir şeyin konum bilgisini çevresindeki diğer şeylerle ilişkisi bağlamında göstermek için kullanılır: şehir haritasındaki eviniz, dünya haritasındaki kasırga vb. Bu eğitimde yıkıcı Kasırga Florence'a bakacak ve konumunu takip edeceksiniz.

Paket gereksinimleri

İleri atlamayın. Bu önemli bir bölüm. Gereksinimleri karşıladığınızdan emin değilseniz yeniden kontrol edin. Her şeyden önce aşağıdaki paketlerin tümünün kurulu olması gerekir.

  • Pandas: veri yapıları ve veri analizi araçları sağlar
  • Numpy: Python ile bilimsel hesaplama için temel bir paket
  • SciPy:(“Sâypay” diye telaffuz edilir) matematik, bilim ve mühendislik için Python tabanlı açık kaynak yazılım ekosistemi
  • RTree: çeşitli gelişmiş mekansal indeksleme özellikleri sunan libspatialindex için ctypes tabanlı bir Python sarmalayıcısı
  • GDAL: raster ve vektör coğrafi uzamsal veri formatları için çevirici kütüphane
  • Fiona: mekansal veri dosyalarını okur ve yazar
  • Shapely: Geometrik nesneler, yüklemler ve işlemler
  • GeoPandas: pandas'ın veri tiplerini genişleterek geometrik türler üzerinde mekansal işlemlere olanak tanır.
  • PySAL: yüksek seviyeli uygulamaların geliştirilmesini desteklemek amacıyla Python ile yazılmış mekansal analiz fonksiyonları kütüphanesi.
  • Matplotlib: Python 2D çizim kütüphanesi
  • Missingno: Python için eksik veri görselleştirme modülü

Her şeyin çalıştığından emin olmak için paketleri yukarıdaki sırayla kurun. Bazı paketler diğerleri için önkoşuldur; örneğin: GeoPandas kurmak için Shapely gerekir ve Shapely kurmak için; RTree, GDAL ve Fiona yüklü olmalıdır. Bir paketi kurmanın en kolay yolu: pip install PACKAGE_NAME

Windows kullanıyorsanız ve bu şekilde kuramıyorsanız, ilgili paketleri indirmek için şu web sitesine bakın ve pip install PATH_TO_PACKAGE yapın.

Veri hakkında

Bildiğiniz gibi, korkutucu Kasırga Florence kısa süre önce Amerika Birleşik Devletleri'nin Doğu Kıyısı'nın bir kısmından geçti ve tahmini 17 milyar ABD doları hasara yol açtı. Bu eğitim, nereden geldiğini, ne zaman ve nerede güçlendiğini bulmanıza, bu doğal afet hakkında daha fazla şey anlamanıza ve Python'da analiz etmenize yardımcı olacaktır. Bu kasırga hakkında bilgi sağlayan birçok web sitesi var. Örneğin bu web sitesi, ABD'deki çeşitli fırtına ve kasırgalar için 1902'den 2018'e kadar veri sağlıyor; üzerinde çalışmanız için bolca veri var. Bu eğitimde yalnızca Kasırga Florence verilerini kullanacaksınız.

Ayrıca internetten ABD haritası coğrafi uzamsal verilerini kullanacaksınız. Eric Celeste'in blog yazısında ABD ilçe ve eyaletleri için her türlü sınır veri dosyası yer alıyor. Bu eğitimde kullanılan veri, ABD Eyaletleri, 5m, GeoJSON dosyasıdır.

 # Load all importance packages
import geopandas
import numpy as np
import pandas as pd
from shapely.geometry import Point

import missingno as msn

import seaborn as sns
import matplotlib.pyplot as plt

% matplotlib inline

Önce, ilk coğrafi uzamsal veri çerçevesine bakalım: ABD Eyaletleri Coğrafi Verisi

# Getting to know GEOJSON file:
country = geopandas.read_file("data/gz_2010_us_040_00_5m.json")
country.head()
coğrafi uzamsal veri çerçevesi

Yeni yüklediğiniz veri çerçevesinin türünü kontrol ettiğinizde bunun bir Geo Data Frame olduğunu görebilirsiniz; bu da bir Pandas DataFrame'in tüm normal özelliklerine sahiptir.

type(country)
geopandas.geodataframe.GeoDataFrame

Koordinatları içeren sütunun veri türünü kontrol etmek: GeoSeries.

type(country.geometry)
geopandas.geoseries.GeoSeries

GeoSeries içindeki her değer bir Shapely Nesnesidir. Şu türlerde olabilir:

  • Nokta (Point)
  • Çizgi (Line)
  • Poligon (Polygon)
  • Çoklu Poligon (MultiPolygon)

Her nesne farklı türde fiziksel nesneler için kullanılabilir: örneğin bina için Nokta, cadde için Çizgi, şehir için Poligon ve içinde birden çok şehir bulunan ülke için Çoklu Poligon. Her bir Geometrik nesne hakkında daha fazla bilgi için şu makaleyi okuyun: https://shapely.readthedocs.io/en/stable/manual.html#geometric-objects

type(country.geometry[0])
shapely.geometry.multipolygon.MultiPolygon

Bir Pandas DataFrame'e benzer şekilde, bir GeoDataFrame'in de, veri çerçevesinin içindeki geometry bilgisini kullanarak bir harita çizen plot özniteliği vardır:

country.plot()
<matplotlib.axes._subplots.AxesSubplot at 0x1cfe68c1358>
öznitelik grafiği

Gördüğünüz gibi, ABD haritası çerçeveye göre nispeten küçük. Bunun nedeni bilginin Alaska, Hawaii ve Porto Riko'yu da içermesi ve bunların etrafa dağılmış olması. Bu eğitimin amacı için, kasırga bu iki eyaletin yakınına gitmediği için Alaska ve Hawaii'yi hariç tutabilirsiniz. Kendi grafiğinizi özelleştirmek için figür boyutu ve renk de ekleyebilirsiniz:

# Exclude Alaska and Hawaii for now
country[country['NAME'].isin(['Alaska','Hawaii']) == False].plot(figsize=(30,20), color='#3B3C6E');
abd haritası

O kadar da zor değil, değil mi! Artık ABD haritasına sahipsiniz, haydi kasırga verilerini içe aktaralım:

florence = pd.read_csv('data/florence.csv')
florence.head()
kasırga verisi

Keşifsel Veri Analizi

Herhangi bir veri kümesini yüklediğinizde her zaman ilk yapmanız gerekenler şunlardır:

  • Bilgileri ve veri türünü kontrol etmek
  • Herhangi bir eksik değer var mı
  • İstatistiksel veriler
florence.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 105 entries, 0 to 104
Data columns (total 11 columns):
AdvisoryNumber    105 non-null object
Date              105 non-null object
Lat               105 non-null float64
Long              105 non-null float64
Wind              105 non-null int64
Pres              105 non-null int64
Movement          105 non-null object
Type              105 non-null object
Name              105 non-null object
Received          105 non-null object
Forecaster        104 non-null object
dtypes: float64(2), int64(2), object(7)
memory usage: 9.1+ KB

Eksik değerleri missingno paketiyle kontrol ediyoruz. Bu paket, eksik veriyi görselleştirerek gösteren kullanışlı bir pakettir. Aşağıda görebileceğiniz gibi, bu eğitim için ihtiyaç duymadığınız "Forecaster" sütununda yalnızca bir eksik değer var. Şimdilik bunu yok sayabilirsiniz.

# Notice you can always adjust the color of the visualization
msn.bar(florence, color='darkolivegreen');
çubuk grafik

Bazı istatistiksel bilgilere göz atın; ortalama rüzgar hızı, bu kasırganın maksimum ve minimum rüzgar hızı gibi bazıları çok yararlı olabilir.

# Statistical information
florence.describe()
  Lat Long Wind Pres
count 105.000000 105.000000 105.000000 105.000000
mean 25.931429 56.938095 74.428571 981.571429
std 7.975917 20.878865 36.560765 22.780667
min 12.900000 18.400000 25.000000 939.000000
25% 18.900000 41.000000 40.000000 956.000000
50% 25.100000 60.000000 70.000000 989.000000
75% 33.600000 76.400000 105.000000 1002.000000
max 42.600000 82.900000 140.000000 1008.000000

Çoğu veri için temizlik yapmanız ve yalnızca üzerinde çalışmanız gerekenleri almanız gerekir. Burada yalnızca zamanı, koordinatları: enlem ve boylamı, Rüzgar hızını, Basıncı ve Adı ihtiyacınız var. Movement ve Type isteğe bağlıdır, ancak diğerleri kaldırılabilir.

# dropping all unused features:
florence = florence.drop(['AdvisoryNumber', 'Forecaster', 'Received'], axis=1)
florence.head()
veri çerçevesi 1

Normalde veriyi tek başına çizdiriyorsanız koordinat için ekstra özen göstermeye gerek yoktur. Ancak haritadaki görünüme benzer görünmesini istiyorsanız boylam ve enlemi kontrol etmek önemlidir. Burada boylam batıdır; veriyi doğru çizdirmek için sayının başına "-" eklemeniz gerekir:

# Add "-" in front of the number to correctly plot the data:
florence['Long'] = 0 - florence['Long']
florence.head()
veri çerçevesi 2

Ardından, Kasırga koordinatlarını oluşturmak için Enlem ve Boylamı birleştirebilir ve bunu görselleştirme amacıyla GeoPoint'e dönüştürebilirsiniz.

# Combining Lattitude and Longitude to create hurricane coordinates:
florence['coordinates'] = florence[['Long', 'Lat']].values.tolist()
florence.head()
veri çerçevesi 3
# Change the coordinates to a geoPoint
florence['coordinates'] = florence['coordinates'].apply(Point)
florence.head()
veri çerçevesi 4

florence veri çerçevesinin ve florence verisinin coordinates sütununun türünü kontrol ediyoruz. Bunlar pandas DataFrame ve pandas Series.

type(florence)
pandas.core.frame.DataFrame
type(florence['coordinates'])
pandas.core.series.Series

Veriyi coğrafi uzamsal veriye dönüştürdükten sonra, florence veri çerçevesinin ve Florence verisinin coordinates sütununun türünü tekrar kontrol edeceğiz. Artık bunlar Geo DataFrame ve GeoSeries.

# Convert the count df to geodf
florence = geopandas.GeoDataFrame(florence, geometry='coordinates')
florence.head()
veri çerçevesi 5
type(florence)
geopandas.geodataframe.GeoDataFrame
type(florence['coordinates'])
geopandas.geoseries.GeoSeries

Dikkat edin: Artık bir Geo DataFrame ve Geo Series olmasına rağmen hâlâ normal bir DataFrame ve Series gibi davranıyor. Bu, veri çerçevesi üzerinde filtreleme, groupby işlemleri yapabileceğiniz veya bir sütunun min, max ya da ortalama değerlerini çıkarabileceğiniz anlamına gelir.

# Filtering from before the hurricane was named.
florence[florence['Name']=='Six']
veri çerçevesi 6
# Groupping by name to see how many names it has in the data set:
florence.groupby('Name').Type.count()
Name
FLORENCE     6
Florence    85
SIX          4
Six         10
Name: Type, dtype: int64

Kasırga Florence'ın ortalama rüzgar hızını bulma:

print("Mean wind speed of Hurricane Florence is {} mph and it can go up to {} mph maximum".format(round(florence.Wind.mean(),4),
                                                                                         florence.Wind.max()))
Mean wind speed of Hurricane Florence is 74.4286 mph and it can go up to 140 mph maximum

Yani Kasırga Florence'ın ortalama rüzgar hızı saatte 74,43 mil (saatte 119,78 km) ve maksimum hızı saatte 140 mil (saatte 225,308 km). Bu rüzgar hızının ne kadar ürkütücü olduğunu hayal etmek için, Birleşik Krallık Kraliyet Donanması tarafından geliştirilen Beaufort Rüzgar Ölçeği, rüzgar etkilerinin su ve karadaki görünümünü gösterir. Saatte 48 ila 55 mil hızda bile ağaçları kırıp köklerinden sökebilir ve "önemli yapısal hasara" yol açabilir.

kasırga

Bu anda orada olmak istemezsiniz.

Görselleştirme

Pandas DataFrame'e benzer şekilde, bir GeoDataFrame'in de .plot özniteliği vardır. Ancak bu öznitelik, GeoDataFrame içindeki koordinat bilgisini kullanarak eşleme yapar. Bir göz atalım:

florence.plot(figsize=(20,10));
geodataframe

Ne oldu? Yalnızca bir sürü noktayı, hiçbir referans olmadan görüyorsunuz. Yanlış giden bir şey mi var?
Hayır, her şey yolunda. Bu veri çerçevesi yalnızca her zaman noktasında Kasırga Florence'ın koordinat (konum) bilgisini içerdiğinden, sadece boş bir harita üzerinde konumu çizebiliriz.

O hâlde bir sonraki adım, kasırganın konumunu ABD haritası üzerinde çizmek; böylece nereye çarptığını ve o anda ne kadar güçlü olduğunu görebiliriz. Bunu yapmak için, ABD haritası koordinatlarını (başta yüklediğimiz veriler) temel olarak kullanacak ve üzerine Kasırga Florence'ın konumunu çizeceksiniz.

 # Plotting to see the hurricane overlay the US map:
fig, ax = plt.subplots(1, figsize=(30,20))
base = country[country['NAME'].isin(['Alaska','Hawaii']) == False].plot(ax=ax, color='#3B3C6E')

# plotting the hurricane position on top with red color to stand out:
florence.plot(ax=base, color='darkred', marker="*", markersize=10);
abd haritası kasırga florence grafiği

Harika görünüyor! Şimdi, şu ayrıntılarla tamamlayacağız:

  • Başlık ekleme
  • Kasırga konumunu rüzgar hızına göre renklendirme; böylece her şehre vurduğunda ne kadar güçlü olduğunu görebilirsiniz.
  • Eksenleri kaldırma
  • Lejand ekleme
  • Sonucu daha sonra kullanmak üzere bir resim dosyasına kaydetme
 fig, ax = plt.subplots(1, figsize=(20,20))
base = country[country['NAME'].isin(['Alaska','Hawaii']) == False].plot(ax=ax, color='#3B3C6E')
florence.plot(ax=base, column='Wind', marker="<", markersize=10, cmap='cool', label="Wind speed(mph)")
_ = ax.axis('off')
plt.legend()
ax.set_title("Hurricane Florence in US Map", fontsize=25)
plt.savefig('Hurricane_footage.png',bbox_inches='tight');
abd haritasında kasırga florence

Demek ki kasırga, doğu kıyısı açıklarındayken en güçlü halindeydi. Karaya yaklaştıkça güç kaybetmeye başladı, ancak saatte 60 ile 77 mil aralığındaki rüzgar hızlarında bile korkunç hasarlara yol açabilir.

Sonuç

Harika iş! Python'da coğrafi uzamsal verilerle çalışmak için gereken bazı temel adımları öğrendiniz. Ayrıca coğrafi uzamsal verileri nasıl görselleştireceğinizi ve bir hikâye anlatmak için çizimlerin şekil, renk ve bindirme katmanlarını nasıl özelleştireceğinizi öğrendiniz. Becerilerinizi uygulamak isterseniz, elinizi denemeniz için çevrimiçi olarak çok sayıda coğrafi uzamsal veri mevcut. Yukarıda verdiğim hava durumu web sitesi bunlara bir örnek.

Kaynaklar için lütfen şu kitaba göz atın: Karim Bahgat'ın (2015) “Python Geospatial Development Essentials” adlı eseri daha derinlemesine bir rehberlik sunar.

Benimle iletişime geçmek isterseniz dqvu.ubc@gmail.com adresine e-posta gönderebilir veya LinkedIn üzerinden bağlantı kurabilirsiniz. İyi öğrenmeler ve güvende kalın!

Python'da coğrafi uzamsal veriler hakkında daha fazla bilgi edinmek isterseniz, DataCamp'in Python'da Coğrafi Uzamsal Verileri Görselleştirme kursunu alın.

Aşağıda bu eğitimde kullanılan veriler yer almaktadır:

Konular
Python
Veri Görselleştirme
Veri Analizi

Python hakkında daha fazlasını öğrenin

Kurs

Python’a Giriş

4 sa
7.1M
Python ile veri analizi temellerini sadece dört saatte öğrenin. Bu çevrimiçi kurs, Python arayüzünü tanıtacak ve popüler paketleri keşfedecektir.
Ayrıntıları GörüntüleRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Devamını GörDevamını Gör