Kategoriler


SON YORUMLAR
Bilgisayar mühendisi
Yazılım ve veritabanı ödevleriniz yapılır. iletişim dersnotlarim.17@gmail.com
Bilgisayar mühendisi
Yazılım ve veritabani ödevleriniz yapılır. İletişim dersnotlarim.17@gmail.com
bilgisayar mühendisi
Bilgisayar mühendisliği okuyorum tek dersden okulum yarım dönem uzadı,,Android, java, c# ,c, veritabanı,web tasarımı,asp net ödevlerinize yardımcı olabilirim. ilgilenen arkadaşlar ali.yildirim.94@hotmail.com mail adresinden ulaşabilirler.

sen nerden çıktan ya
Emin Faruk
süper bir yazı olmuş teşekkürler :)
Ömer Faruk
Öncelikle güzel bir yazı olmuş.Benim küçüklüğümden beri B.M.ne ilgim vardı babamda olmak istemiş ama olamamış daha 9. Sınıftayım ve hala aklıma gelen ve istediğim tek meslek BİLGİSAYAR MÜHENDİSLİĞİ
yazilim mühendisi
Java, C/C++, python, perl vs ve bilgisayar müh. derslerinizin ödevleri garantili yapılır, geçen sene olduğu gibi yazilimcialper@gmail.com , yazilimcialper@gmail.com
TATAR RAMAZAN MALI
Beyler bayanlar. Simdi size tatar ramazan mali ornek veriyor ya bende vereyim dedim. Top 5 10 isterse son 5 ne okul olursa olsun derslerinizi onemseyip ingilizcenizi kasın. Bunlar hayati seyler. Torpil referans vs vs varsa is bulmanjz kolaylasir amaaa normal olarakta bulabilirsiniz işten cok ne vr. Tabikide odtu itu mezunu glistirmis kendini bazilari 3.5 2.5 k maasla baslarken siz 1.5 2 baslayabilirsiniz ama bu bir sorun olmamali sizin icin takmayin. 2 3 yil tecrubeden sonra okudugunuz okulun ismi felan önemli olmayacak. Polonyada 3. Yillik okumus bir ablam simdi istanbulda sektore girdi baslangic maasi 2.5 bakin tam olarak muhendis bile degil. Bu tatar ramazan icindeki seyelri kusuyor . Kendi karsilastigi olaylari. Ayrica sakarya unisindenim bende. Ramazan mali ver ismini cismini hocalara sorduralim.
buşra
Hocam hazirlik derslerini soyler misiniz?
can
bilgisayar mühendisliğine dgs ile geçiş yapıcam puanım gtü-gazi-kocaeli.ne yetiyor ama gebze teknik %100 ile 5 yıl okutuyor,gazininde teknoloji fakültesine puanım yetiyor (mühendislik fakültesinden farkı ne bilmiyorum),kocaelininde her dersten geçme notu 65. sizce hangisini seçmeliyim neden?(ingilizcem çok iyi degil ve 2 senedir dgs çalıştıgım için çogu programı unuttum)
K4RN4L
İleride en iyi bilgisayar mühendisi olacağım. yapacaklarımın haddi hesabı olmayacak sadece biraz hırs ve azim
Rabia
Gerçekten faydalı bir yazı olmuş öncelikle teşekkürler:) gerçekten bilgisayar mühendisliği hayalim hele ki Googleda çalışmak elimden geleni yapicam burdan da söz veriyorum SAYGILARIMLA:))
Öğrenmeye Aç, Bir Misafir!
Abi seni daha (12.08.2018) yeni keşfettim. Ben aslında bilgisayar mühendisliğini 2 dala ayrılıdığını biliyordum, hani şöyle 1- Yazılım Mühendisliği 2- Donanım Mühendisliği (PC parçası yapmak gibi şeyler) biliyorum, saçma geliyor ama bildiğimi sanıyordum ta ki; bu siteyi bulana kadar! Meğer bilgisayar mühendisliği zaten yazılımla ilgileniyormuş.. Abi bu arada 10. Sınıfım, İngilizce seviyem gayet iyi daha da geliştirmeye çalışıcam... Hayalim B.M olmaktı, İnşallah olurum bu arada sayfanın kalitesini biraz daha geliştirebilirsin. Ya hani çok sade duruyor.... ;) Selamlar!!
Tatar Ramazan
Türkkep .net mi java mı istiyorsun. Onu yaz önce. Ben devlette rahatım her çıkan teknolojiyi öğrenenem. Rahat bırakın beni. Bir ton niteliğimiz var MVC bilmiyoruz diye boş teneke muamelesi görüyoruz. Bilişim sektörü köle arıyor. 90lı yıllarda bir tane desktop geliştirme dili, bir tane veritabanı bilirdin tamam. Şimdi 10 tane teknoloji bilecen. Yok yaa! Kılı kırk yaracaklar, tipimizi beğenmeyecekler. Sizinle mi uğraşcaz be! Üniversiteyi uzatan, baraja takılan adamları işe alırlar. Ben bölümün en çalışkanlardandım. Bize afra tafra yaptılar. YDS ye hazırlanıyorum. Günde 1500 kelimeyi tekrar ediyorum. Aşırı çalışmaktan sinir sistemim iflas etti.

Bilgisayar Mühendisleri
Here is the website inspired me to use 
it as a guide when I tried to define 
myself as an engineer candidate a few 
years ago. It really helped me to work
 and study feeling in confidence with 
being on the right way. I suggest this 
website to whom it may direct her/his 
to find the right career path. It 
includes many articles varies from 
real life experiences to detailed 
software engineering issues. But the 
most dignified parts for me are the 
articles in general and career titles.
Son okunan makaleler:
ASP.NET ile GIS Uygulamaları
Kim neyi niye seçer? Java mı c# mı? Oracle vs SqlServer?
Yazılım Mühendisi alırken en çok dikkat edilenler?
Bill Gates Emekli Oldu
Açık Kaynak Kodlu Yazılım (Open Source Software) Nedir?
CSS Dersleri - CSS Nedir
Bilgisayar Mühendisliği Hakkındaki 10 Büyük Yalan!
Kendini Geliştirmek Ne Demek?
Bilgisayar Mühendisleri Kaç Para Alır?
Bilgisayar Mühendisliği Hakkındaki 10 Büyük Yalan!
Bilgisayar Mühendisleri Ne İster?
BİLGİSAYAR MÜHENDİSLİĞİ GEREKSİZ BİR MESLEKTİR !!!
Türkiye'de Bilgisayar Mühendisliğinin Durumu? Bilg. Mühendisliğinin bugünü ve geleceği
Kulak asmayın.
Bir bilgisayar mühendisinin bilmesi gereken en temel teknolojiler
Sanal Bellek Nedir?
Bilgisayar Mühendisliğini yeni kazandım, neler yapmalıyım?
Oracle - SQL Trace ve TKPROF nedir, nasıl kullanılır?
En iyi bilgisayar mühendisliği bölümüne sahip üniversiteler
En iyi bilgisayar mühendisliği bölümüne sahip üniversiteler

Bilgisayar Mühendisleri Portalı

ASP.NET ile GIS Uygulamaları

Hemen hemen tüm uygulamalarda yer alan GIS ( Coğrafi Bilgi Sistemleri )  , zaman içerisinde isteklere bağlı olarak gittikçe gelişmektedir . Kullanılacağı alana göre Windows , Web ve Mobil uygulamalarına rahatlıkla yer almaktadır . Bu yazımda sizlere ASP.NET 2.0 ile nasıl Web tabanlı Coğrafi Bilgi Sistemi uygulaması geliştirebileceğinizi aktarıyor olacağım .

Yazıma başlamadan önce sizlere GIS hakkında biraz bilgi vermek istiyorum . GIS : Coğrafi bilgilerin bir araya getirilmesi , bu bilgilerin bilgisayara aktarılması , depo edilmesi , işlenmesi , daha sonrada analiz edilip sunulması amacı ile geliştirilmiş olan bir sistemdir . Bu sistem sahip olduğu etkin veritabanlarına ve yapılarına göre iki grupta değerlendirilir . Vektör Tabanlı ve Raster Tabanlı .Vektör tabanlı GIS`erde vektör olarak tanımlanan veri, herhangi bir koordinat sisteminde nokta, çizgi ve alanlardan oluşan veridir. Raster tabanlı GIS'lerde raster olarak tanımlanan veri, belirli sayısal, harf veya renk olarak değerleri olan hücrelerin (piksel) bir araya gelmesiyle oluşan görsel bilgiyi kapsamaktadır. Bu bilgileri de sizlerle paylaştıktan sonra uygulamamıza başlayabiliriz .

   

Uygulamamız da , harita oluşturma ve oluşturacağımız harita üzerinde işlemler yapabilmemize olanak sağlayan fonksiyonları barındıran  sharpmap.dll`ini ve sistemimizde kullanacağımız harita katmanlarında göstermek istediğimiz şekil dosyalarını (shapefiles) uygulamamıza ekledikten sonra ilk olarak harita oluşturma fonksiyonunu düzenleyeceğiz. Sharpmap dll`ini makalemin sonunda belirteceğim referans adresinden temin edebilirsiniz yada benimle iletişime geçebilirsiniz .

 

private void haritaOlustur()
    {
        //harita bilgilerini veriyoruz
        System.Drawing.Image img = harita.GetMap();
        string imgID = SharpMap.Web.Caching.InsertIntoCache(1, img);
        imgHarita.ImageUrl = "getmap.aspx?ID=" + HttpUtility.UrlEncode(imgID);

    }
 

haritaOlustur fonksiyonu sayesinde oluşturduğumuz img nesnesini GetMap fonksiyonu ile eşleştirip ara yüzümüze eklemiş olduğumuz  imgHarita nesnesinin üzerine haritamızı oluşturduk . Bu fonksiyondan sonra haritamızın üzerinde bulunacak olan katmanları bu katmanlarda nelerin gösterileceğini ve ayarlarını yapabileceğimiz fonksiyonu düzenleyeceğiz.

 

private SharpMap.Map haritaDuzenle(System.Drawing.Size haritaBuyuklugu)
{
SharpMap.Map yeniHarita = new SharpMap.Map(haritaBuyuklugu);
SharpMap.Layers.VectorLayer katmanUlkeler = new SharpMap.Layers.VectorLayer("Ulkeler");
katmanUlkeler.DataSource = new SharpMap.Providers.ShapeFile(Server.MapPath(@"~\App_Data\ulkeler.shp"));
katmanUlkeler.Style.Fill = new SolidBrush(Color.YellowGreen);
katmanUlkeler.Style.Outline = System.Drawing.Pens.Black;
katmanUlkeler.Style.EnableOutline = true;

        SharpMap.Layers.VectorLayer katmanNehirler = new SharpMap.Layers.VectorLayer("Nehirler");
katmanNehirler.DataSource = new SharpMap.Providers.ShapeFile(Server.MapPath(@"~\App_Data\nehirler.shp"));
katmanNehirler.Style.Line = new Pen(Color.Blue, 1);

        yeniHarita.Layers.Add(katmanUlkeler);
yeniHarita.Layers.Add(katmanNehirler);
return yeniHarita;

}
 

haritaDuzenle fonksiyonu içerisinde  imgHarita nesnesinin büyüklüğüne göre yeni bir harita oluşturduktan sonra sırası ile Ülkeler ve Nehirler için yeni katmanlar meydana getirdik . Bu katmanlarda bulunacak olan dosyaları SharpMap.Providers.ShapeFile ile belirledikten sonra bu katmanlara özel çizgi , dolgu renkleri belirleyerek özelleştirmeler yaptık . Ve tüm bu ayarlamaları gerçekleştirdikten sonra bu katmanları oluşturmuş olduğumuz haritamıza Layers.Add ile ekleme işlemini tamamladık . Şimdide sıra sayfamız açılırken hazırlamış olduğumuz bu fonksiyonları çağımaya geldi .

 

SharpMap.Map harita;
protected void Page_Load(object sender, EventArgs e)
{
harita = haritaDuzenle(new System.Drawing.Size((int)imgHarita.Width.Value, (int)imgHarita.Height.Value));
//Haritamızın ilk görünümü
harita.ZoomToExtents();
haritaOlustur();

    }
 

Sayfamız başlatılırken hazır fonksiyonlarımızı da çağırdıktan sonra , Web.Config dosyamızın içerisini de aşağıda belirteceğim kodlar ile değiştirdikten sonra haritamızı ekranda görüntüleyebileceğiz .

 

<?xml version="1.0"?>
<configuration>
<system.web>
<httpHandlers>
<add verb="*" path="GetMap.aspx" type="SharpMap.Web.HttpHandler,SharpMap"/>
</httpHandlers>
<compilation debug="true"/>
</system.web>

</configuration>
 

Evet adım adım tüm işlemleri tamamladıktan sonra haritamızı ilk kez ekranımızda görüntüleyebildik . Bu tür uygulamalarda temel teşkil eden bölümleri bitirdikten sonra isterseniz uygulamamızı pozitif ve negatif yönlerde zum (zoom) yapabilen , hareket (pan) yeteneğine sahip bir hale getirelim . Bu işlem işleri bir listesini oluşturmak için önce uygulamamıza bir adet RadioButtonList ekleyelim eğer daha önceden ara yüzümüzde İmage nesnesi kullanmış iseniz bunun yerine ImageButton ekleyelim . Bu değişikliği ImageButton nesnesinin tıklama olayından (click event ) yararlanmak için gerçekleştirdik .Bu değişiklikleri yaptıktan sonra aşağıda belirteceğim değişiklikleri uygulayacağız .

 

protected void Page_Load(object sender, EventArgs e)
{
harita = haritaDuzenle(new System.Drawing.Size((int)imgHarita.Width.Value, (int)imgHarita.Height.Value));
if (Page.IsPostBack)
{
//Geri gönderim var ise merkez ve zum değerlerini kaydet
harita.Center = (SharpMap.Geometries.Point)ViewState["haritaMerkez"];
harita.Zoom = (double)ViewState["haritaZum"];
}
else
{
//İlk zum ve merkez bilgilerini kaydet , ilk kez haritayı oluştur
harita.ZoomToExtents();
ViewState.Add("haritaMerkez", harita.Center);
ViewState.Add("haritaZum", harita.Zoom);
haritaOlustur();
}

    }
 
Kod bloğundaki bu değişiklik sayesinde eğer sayfamızda bir geri gönderim ( post back ) var ise sadece zum ve merkez bilgileri kaydediliyor eğer sayfamız ilk kez açılıyor ise haritayı bu işlemlerin yanı sıra haritamızı da oluşturacak olan fonksiyonun çağrımını gerçekleştiriyor . Bu değişikliği de tamamladıktan sonra Tıklama olayında yapacağımız işlemleri tanımlayalım .
 

protected void imgHarita_Click(object sender, ImageClickEventArgs e)
{
//Kullanıcının tıkladığı noktayı saptayıp , bu noktayı haritamızın merkez noktası olarak belirliyoruz
harita.Center = SharpMap.Utilities.Transform.MapToWorld(new System.Drawing.Point(e.X, e.Y), harita);

//İşlem seçeneklerinden zum ile ilgili işaretleme varmı varsa değerine göre haritamıza zum uygulaması yapıyoruz
if (rdlSecenek.SelectedValue == "0")
//Zum +
harita.Zoom = harita.Zoom * 0.3;
else if (rdlSecenek.SelectedValue == "1")
//Zum -
harita.Zoom = harita.Zoom * 1.2;
//Bu hali ile Zum ve merkez bilgilerini kaydediyoruz
ViewState.Add("haritaMerkez", harita.Center);
ViewState.Add("haritaZum", harita.Zoom);

haritaOlustur();

    }
 

Zum işlemlerinde sıfır ile bir arasındaki değerlerde (+) yönde bir zum gerçekleştiriliyor ve değer sıfıra yaklaştıkça zum değeri daha fazla artıyor .

 
 

Şimdiye kadar ki bölümde basit bir harita uygulamasının nasıl oluşturulabileceğini ve üzerinde yapabileceğimiz en yaygın işlemlerden bazılarını sizlerle paylaşmaya çalıştım . Bu yazımızın devamında da sizlerle bu tür uygulamalarda gerçekleştirilebilecek birkaç uygulamayı da sizlerle paylaşmaya çalışacağım . Tekrar görüşmek üzere .


İlk olarak haritamız üzerinde istediğimiz bir noktaya nasıl bir nokta yada bir resim ile belirleyebiliriz . Bu ve bundan sonra vereceğim örneklerde haritamızı oluşturmuş olduğumuzu göz önünde bulundurarak mevcut sistemimiz üzerine eklemeler yaparak devam edeceğim . 

   

// sistem üzerinde ekleme yapacağımız noktaları bu değişkene aktaracağız
static SharpMap.Geometries.GeometryCollection kol = new SharpMap.Geometries.GeometryCollection(); //
protected void imgHarita_Click(object sender, ImageClickEventArgs e)
{
SharpMap.Geometries.Point belirlenenNokta = new SharpMap.Geometries.Point(29, 37.7);
//burada istersek fare ile işaretlenen noktayıda aldırabiliriz

        kol.Collection.Add(belirlenenNokta);
SharpMap.Geometries.LineString yeni = new SharpMap.Geometries.LineString();

            SharpMap.Layers.VectorLayer katmanBel = new SharpMap.Layers.VectorLayer("KatmanBelirlenen");
katmanBel.DataSource = new SharpMap.Data.Providers.GeometryProvider(belirlenenNokta);

            katmanBel.Style.Symbol = new Bitmap(@"D:\gisUygulama\App_Data\ikon.png");

            harita.Layers.Add(katmanBel);
haritaOlustur();

}
 
Yukarıdaki kod blok`u sayesinde haritamız üzerinde bir yeri ikon.png resmi ile aşağıdaki resimde gördüğümüz şekli ile  işaretlemiş olduk .
 

 

Eğer birden fazla noktayı aynı anda belirlemek istiyor iseniz ilk örneğimizdeki kodu aşağıdaki gibi değiştirmeliyiz .

 

SharpMap.Geometries.Point belirlenenNokta = new SharpMap.Geometries.Point(29, 37.7);
SharpMap.Geometries.Point belirlenenNokta1 = new SharpMap.Geometries.Point(30, 39);
//burada istersek fare ile işaretlenen noktayıda aldırabiliriz

        kol.Collection.Add(belirlenenNokta);
kol.Collection.Add(belirlenenNokta1);

        if (kol.Collection.Count < 2)
{

            SharpMap.Geometries.LineString yeni = new SharpMap.Geometries.LineString();

            SharpMap.Layers.VectorLayer katmanBel = new SharpMap.Layers.VectorLayer("KatmanBelirlenen");
katmanBel.DataSource = new SharpMap.Data.Providers.GeometryProvider(belirlenenNokta);

            katmanBel.Style.Symbol = new Bitmap(@"D:\tahir\sharpmap2\App_Data\icon.png");

            harita.Layers.Add(katmanBel);
haritaOlustur();

        }
else
{
for (int i = 0; i < kol.Collection.Count; i++)
{
kol.Collection.Add(belirlenenNokta);
}
SharpMap.Layers.VectorLayer katmanBel = new SharpMap.Layers.VectorLayer("KatmanBelirlenen");
katmanBel.DataSource = new SharpMap.Data.Providers.GeometryProvider(kol);
katmanBel.Style.Symbol = new System.Drawing.Bitmap(@"D:\tahir\sharpmap2\App_Data\icon.png");
harita.Layers.Add(katmanBel);
haritaOlustur();

        }

 

Vermiş olduğumuz noktaları bir işaretçi yardımı ile belirledikten sonra , şimdide belirleyeceğimiz iki nokta arasında nasıl bir yol çizdirebiliriz .  Bunun için sayfama tetikleyici olarak bir adat buton ekledikten sonra , bu botunun tıklanma olayına aşağıdaki kodu ekleyelim .

 

protected void btnCiz_Click(object sender, EventArgs e)
{
SharpMap.Geometries.LineString yeniCizgi = new SharpMap.Geometries.LineString();

        //yolumuzun geçeceği noktaları yeniCizgi ye ekliyoruz
yeniCizgi.Vertices.Add(new SharpMap.Geometries.Point(29, 37.7));
yeniCizgi.Vertices.Add(new SharpMap.Geometries.Point(30, 39));

SharpMap.Layers.VectorLayer katmanVek = new SharpMap.Layers.VectorLayer("katmanVektör");
katmanVek.DataSource = new SharpMap.Data.Providers.GeometryProvider(yeniCizgi);

        //Oluşturacağımız yolun özelliklerini belirliyoruz
katmanVek.Style.Line = new Pen(Color.Red, 2);
katmanVek.SRID = 4326;
harita.Layers.Add(katmanVek);
haritaOlustur();

    }

 

 

Ve uygulamamıza bu kodu ekledikten sonra çalıştırdığımızda aşağıdaki gibi bir görünüm elde etmiş oluyoruz . Burada bir sıkıntı yaşamış olabiliriz buda , yolu çizdirdikten sonra eğer haritamızı yakınlaştırır isek yol kaybolacaktır  çünkü her yakınlaştırmada yol haritaOlustur(); fonksiyonu ile yeniden oluşturulmaktadır . Bunu da sizlerle paylaşacak olduğum 3. örnekte belirlemiş olduğumuz bir alanı yakınlaştırma ile çözüyor olacağız . Tabi sadece tek çözüm de bu değil .

 

 
Bu yazımda sizlerle paylaşacak olduğum son örnek ise belirlemiş olduğumuz bir alanı ekrana yaklaştırma örneği olacak . Bu örneğimizde yakınlaştırmak istediğimiz alan için kuzey-güney ve doğu batı sınırlarını belirlememiz yeterli oluyor .
 

protected void btnCiz_Click(object sender, EventArgs e)
{

//Yakınlaştırmak istediğimiz alanın koordinatlarını belirliyoruz
SharpMap.Geometries.BoundingBox yakinAlan = new SharpMap.Geometries.BoundingBox(new SharpMap.Geometries.Point(26, 36), new SharpMap.Geometries.Point(42, 45));
harita.ZoomToBox(yakinAlan);
haritaOlustur();

}
 

Bu yazımda sizlerle paylaşacak olduğum son örnek ise belirlemiş olduğumuz bir alanı ekrana yaklaştırma örneği olacak . Bu örneğimizde yakınlaştırmak istediğimiz alan için kuzey-güney ve doğu batı sınırlarını belirlememiz yeterli oluyor .

 

Eğer 2. ve 3. örneklerimizdeki kodları birleştirir isek , 2. örnekte yaşamış olduğumuz problemi çözmüş oluruz .

Bu ve bir önceki yazımda ASP:NET ile GIS uygulamaları  üzerine sizlere temelden başlayarak bu tür uygulamalar nasıl geliştirebileceğinizi aktarmaya çalıştım . Yaşayacağınız problemlere benimle iletişime geçebilirsiniz . Tekrar görüşmek üzere .

 http://www.codeplex.com/SharpMap
Tahir MUTLU
Bu makaleyi beğendin mi? Yorumunu Yaz!







Sizden Gelen Yorumlar:

Yorum Yazın

Gülşen(4.4.2018 17:30:40)
Makaleniz iyi olmuş. Teşekkürler. Yalnızca bende yeni kullanmaya başladım GIS ve sharpmap i. Yukarda gösterdiğiniz şekilde kodumu oluşturuyorum. Onun öncesinde sharpmap kütüphanelerini nuget kullanarak yükledim. Ama kodu yazıp da çalıştırdığımda ekrana harita gelmiyor(hiçbirşey gelmiyor). Acaba birşeyleri eksikmi yapıyorum? Geri dönüş yaparsanız çok memnun olurum. İyi Çalışmlar.
mail adresim: rosegarden161@yahoo.com
%82 %0 %18
Katılıyorum Çekimserim Katılmıyorum



yavuz topcu(21.1.2010 06:31:30)
makaleyi beyendim..bende sayayı çalıştırmak istedim ama ulkeler.shp ve nehirler.shp yi bulamadığımdan takıldım kaldım . o dosyaları bana mail atarsanız sevinirim asdresim: yavuztopcu@gmail.com
%33 %17 %50
Katılıyorum Çekimserim Katılmıyorum






Copyright© 2001-2018. Bilgisayar Mühendisleri Portalı | Bütün hakları saklıdır.