Kategoriler


SON YORUMLAR
Blackwidow
Her türlü internet programla JavaScript CSS HTML PHP ödevleri yapılır.
Ramazan
İnternet programlama ödev yardımcı olabilirmisinz
Kebelek
Merhaba kelebek ben kebelek.Ben senin amacını çok iyi anladım.Eğer zengin olmak istiyorsan en kısa sürede kendine bir çok kuzu edin.Çobanlıkta iyi para var o sektöre girmeni tavsiye ederim.Özellikle Hatay.daysan ve kuzuların doğurursa kazancın 5.e katlanır.Bırak bu yazılımı kuzu işine gir.İlerde bana dua edeceksin ;)
Drazing
Youtube.com/Drazing takip edin lan
kelebek
Selamun aleyküm ben kelebek.Ben zengin olmak istiyorum hangi alana yönelmeliyim ben bu işi para için yapıorum.Lütfen bana destek oln yalvarırım.Çok zengin olmak istiyorum.Ameriga.da yaşamak istiyorum bu arada respect 2pac.
Kaan
Yakup, amacına göre değişir. Çok yüksek performans gerektiren oyunlar, oyun motorları, driverlar vb. yazılımlar için c++ kullanılır. Eğer web servisleri yazıcaksan java - Spring framework en popüler server side teknolojilerinden. Tabi şuan serverless yapısına kaymaya başlayan sistemlerden dolayı java hakimiyetini kaybediyor gibi. Frontend yazıcaksan tabiki javascript (React, Vue, Angular vb.) Mobil yazıcaksan React Native yazarsan hem android hem ios ta çalışır. Yinede perfortmans gerektiren veya komplike olan yazılımlar için Androitte kotlin (Java) ios için swift kullanmalısı. Amacın hangi konuda uzmanlaşmak onu iletirsen bana sana daha detaylı bilgi verebilirim. Bu arada öğrencilerin ödevlerinde ücreti ile yardımcı oluyorum. İhtiyacı olanlar: 0542-833-91-41 whatsapp üzerinden ulaşabilirsiniz.
Yakup
Hangisinde uzmanlaşayım java mı c++ mı
dinozorunsesi
ne yapsam bilemiyorum galiba mühendis olacağım
kelmamut
tatar ramazan karı ve iş bulamayan ezik bi orosbu çocuğusun az ötede ağla derdin zengin olmaksa mühendislk değil tıp okucaktın yanlış okumuşşun karı kızsa derdin gidip pezevenklik yapacaksin mühendislikle alakası yok senin hayatın kaymış olm benim dayım bilgisayar müh kocaeli mezunu amerikada paraları götürüyo 10k dolar maaşla sen anca ağla ezik orospu çocuğu
disko_anksiyete
dalga gectigin kamyon soforleri asgari ucretin cok ustunu aliyorlar ve is bulma sorunlari yok :D aynisini yazilim sektoru ve bilgisayar muhendisligi icin soyleyebilir misin? 4 sene okuyup lisans diplomani aldiktan sonra yurtdisindaki sirketlerde calisabilecek nitelikte olmayacaksin, yurticindekiler de asgari ucretten ya da hatta staj ucretinden baslatip amina koyacaklar, haftasonunu bile sikip atacaklar :D aptal pic seni.
Eray
Java, C ve C++ dillerindeki programlama sorularının çözümlerinde ve projelerinde hızlı ve nitelikli bir şekilde yardımcı olabilirim. Projenin başarılı bir şekilde çalışacağını garanti ederim.
Eray
AA ile geçtiğim ve sizin de yüksek notlar alacağınızı garanti ettiğim programlama dersleri için JAVA, C ve C++ programlama dillerinde özel ders verebilirim. Aynı zamanda lablarınıza, ödevlerinize hazırlanmanız için örnekler çözüp online eğitim sürecinde size destek olabilirim. Whatsapp: 05424280350
Çınar Kılınç
Ufhgry
kamyoncu bilgisayar mühendisi
@disko_anksiyete ben bu yorumdan sonra kamyon şoförlüğüne başladım arkadaşlar hakkınızı helal edin...:(

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ı
Kurumsal Yazılım Geliştirmede C# ve Java Savaşı, IDE’lerin Önemi
Bilgisayar Mühendisi olacaklara üniversite seçme rehberi?
Von Neumann mimarisi
Bilgisayar Mühendisi Ne İş yapar? Program Nedir? Çeşitli Sorular?
En iyi bilgisayar mühendisliği bölümüne sahip üniversiteler
Bilgisayar Mühendisi olacaklara üniversite seçme rehberi?
En büyük sıkıntı
Para ile ödev yapmak üzerine
Bilgisayar Mühendisliği Hakkındaki 10 Büyük Yalan!
Oracle - Data Integrity (Veri Bütünlüğü)
DataGrid ve GridView Kontrollerinde Görünmez Kolonlar
En iyi bilgisayar mühendisliği bölümüne sahip üniversiteler
ASP.NET - Server Controls
ViewState Compression
Ekstrem Programlama [eXtreme Programming] - XP
Online Java Dersleri - İstisnalar - Exceptions
Transact-SQL - T-SQL - SQL NEDİR?
Bilgisayar Mühendisi Ne İş yapar? Program Nedir? Çeşitli Sorular?
VERİ İLETİM TİPLERİ - Half Duplex - Full Duplex - Simplex

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-2020. Bilgisayar Mühendisleri Portalı | Bütün hakları saklıdır.