Python · Haziran 18, 2017 0

Python Matplotlib Basemap ile Harita uygulaması

Bu yazımda pythonla yaptığım bir çalışmayı paylaşmak istedim. Bilmiyorum Türkçe kaynak var mıdır, ben rastlamadım.
Basemap i anlatmadan önce kısaca matplotlib den bahsedeyim,Matplotlib python için hazırlanmış bir çizim kütüphanesidir. Çizimleri “plot” lar halinde oluşturduğundan başkaca çalışmaların altyapısını oluşturur. Basemap de bunlardan biridir. Basemap ise matplotlib i kullanarak haritalar oluşturmamıza yarayan bir kütüphanedir. Bu haritaya farklı harita anlayışları (buraya takılmayalım) ile haritalar oluşturulabilir. Lat Lon bilgilerini kullanarak çizim yapabilir,  o ,+ gibi semboller eklenebilir, koordinatlar arasında çizgiler çizilebilir.

Bu kadar girizgahtan sonra kodlara yönelelim. Aşağıda bir basemap çalışması yapmak için gerekli olan modüllerin listesi ve kurulum yöntemi verilmiştir.
1.anaconda kurulucak (lütfen kendi işletim sisteminize göre sürüm seçiniz.)

  • https://www.continuum.io/downloads#linux

2. Dosyalar https://anaconda.org/conda-forge/repo dan indirilecek

  • conda-4.2.16-py36_0.tar.bz2(https://anaconda.org/conda-forge/conda)
  • conda-env-2.6.0-0.tar.bz2(https://anaconda.org/conda-forge/conda-env)
  •  basemap-1.1.0-np111py36_1.tar.bz2 (https://anaconda.org/conda-forge/basemap)
  • geopy-1.11.0-py36_0.tar.bz2(https://anaconda.org/conda-forge/geopy)
  • geos-3.6.0-vc14_0.tar.bz2(https://anaconda.org/conda-forge/geos)
  • pyproj-1.9.5.1-py36_0.tar.bz2(https://anaconda.org/conda-forge/pyproj)
  • pyshp-1.2.10-py36_0.tar.bz2(https://anaconda.org/conda-forge/pyshp)
  • basemap-data-hires-1.0.8.dev0-2.tar.bz2(https://anaconda.org/omgarcia/basemap-data-hires)–(high veya full çözünürlülük için kullanılıyor )
  • netcdf4-1.2.4-np111py36_3.tar.bz2(https://anaconda.org/conda-forge/netcdf4)

3.conda install –offline dosya.adi olarak kurulacak
Eğer bu eklentileri düzgün kurduysanız ki yukardaki işlem basamakları offline kurulum içindir, online olarak ta kurulum seçeneği mevcuttur.
(Bunun için anaconda freamework un kurulu olması gerekmektedir. online kurulum için terminalden conda install -c conda-forge basemap=1.1.0 komutu verilmesi yeterlidir. Yukarıda listesi verilmiş modüllerin basit bir çalışma için fazla olduğunu biliyorum, ama ilerleyen çalışmalarda -internetten bilgi çekip haritada göstermek gibi- gerekli olacağını düşünüyorum)
PyCharm ı açıp ilk yapmamız gereken bir proje oluşturmak, eğer basemap ile çalışmak için buradaysanız pycharm ın bir zorunluluk olmadığını, python için kullanılabilecek birçok IDE nin olduğunu biliyorsunuzdur.

yukarıda matplotlib ve basemap kütüphaneleri dosyaya dahil ediliyor.

yukarıda ise bir harita nasnesi oluşturuluyor. Burada biraz durup yazmak gerekiyor sanırım. Parametlererden bahsedelim biraz.
projection= haritanın tanım biçimini seçebileceğiniz bir parametredir. https://matplotlib.org/basemap/users/mapsetup.html den çeşitlerine ulaşabilirsiniz.
llcrnrlat, urcrnrlat, llcrnrlon, urcrnrlon = haritanın gösterileceği alanın enlem ve boylamlarıdır, projection a göre bu parametreler kullanılması değişmektedir.
resolution=haritanın çözünürlülüğüdür. c,l,i,h,f degerlerini alabilmektedir. En kötü çözünürlülükten en iyiye kadar sıralanmıştır. c parametresinde yavru vatan kıbrıs bile görülmüyor o denli kötü. bu çözünürlülük haritanın açılma hızıyla doğru orantılıdır. (sonraki yazıda nasıl hızlandıracağımızı yazacağım).
m=basemap() ile haritamızı oluşturduk, peki bu haritamızın ne gibi özellikleri olacak ? sınırlar, renkler, akarsular gibi bir çok özelliği ekleyip çıkartabiliyoruz.

eğer m=basemap ile oluşturulmuş m haritasına çağrılacak fonksiyonlarla birçok düzenleme yapılabilir. örneğin,

ile akarsuları ekleyebiliyoruz.
Burada özel bazı fonksiyonlar var, linklerden harita görüntüsüyle alakalı img lara ulaşabilirsiniz.

Haritamızı oluşturduk, üzerine bir işaret koyalım. Bunun için matplotlib in plot fonksiyonunu kullanacağız.
önce lat ve lon verilerini tanımlayalım.

sonra bu degerlerin haritada nereye denk geldiğini bulalım

bu noktaya kırmızı nokta yerleştirelim.

hepsi bukadar.
Aşağıda yaptıklarımızla alakalı tüm kodlar bulunmaktadır.

Uzaklarda bir yerde ufacık bir ışık yakabildiysek eğer ne mutlu bize. Sağlıcakla…

Ziyaretci : 3305