C#.NET

Enlem ve Boylam Koordinatlarının x ve y Pixel Dönüşümü ve Harita Ölçeklendirmesi

Selamün Aleyküm Arkadaşlar,

Koordinatları verilmiş bir çokgenin çizimi nasıl yapılır bunu inceleyeceğiz.

polygon

 

Çokgen Enlem ve Boylam

Index Boylam (Longitude) Enlem (Latitude)
0 -142.734375 -44.087585
1 -129.726563 -40.313043
2 -117.246094 -45.460131
3 -110.742188 -53.225768
4 -117.070313 -59.800634
5 -132.011719 -64.168107
6 -148.535156 -59.888937
7 -154.335938 -53.014783
8 -142.734375 -44.087585

 

Tablodan enlem ve boylam için maksimum ve minimum değerlerini bulalım.

Boylam max: -110.742188

Boylam min: -154.335938

Enlem max: -40.313043

Enlem min: -64.168107

cizim5

Bu enlem ve boylam değerlerinin x ve y koordinatlarına çevirmemiz gerekir. Bunun için Merkator Projeksiyonundan (Mercator Projection) yararlanırız. Bu projeksiyon bize dünyanın bir dikdörtgen olarak harita açılımını verir. İlk önce enlem ve boylam radyan cinsine çevrilir.

C#

Merkator Projeksiyonuna çevirdiğimiz zaman:

 

maxmin

Enlem ve boylamları x ve y koordinatlara çevirelim:

Index X Y
0 -2.49118471 -0.859029233
1 -2.26415563 -0.770058334
2 -2.04633045 -0.892776847
3 -1.93281579 -1.10139823
4 -2.04326248 -1.31001961
5 -2.30403924 -1.47262156
6 -2.59242749 -1.31308758
7 -2.69367027 -1.09526229
8  -2.49118471 -0.859029233

 

Çizim Alanımız:

cizim

Çizim alanımızla çokgenin boyutlarının oranını bulmamız gerekir. İlk önce çizim alanımızdan 10px lik boşluk bırakalım. Genişlikten sağ ve sol olmak üzere 10px boşluk bıraktığımızda genişlik = genişlik – 20. Aynı şekilde yükseklik = yükseklik – 20. Yeni çizim alanımız 562×353

Şimdi ise Çokgenin x ve y deki boyutunu bulalım.

Xboyut = Xmax – Xmin

Yboyut = Ymax – Xmin

cizim5

genislikoran = 562 / Xboyut

yukseklikoran = 353 / Yboyut

Hangi oran daha düşükse o oran bizim genel oranımız olur.

genislikoran = 738.6432

yukseklikoran = 502.4459

geneloran = 502.4459

Genişlik ve Yükseklik boşluklarını bulalım.

Yukseklikbosluk = (373 – (Yboyut * geneloran)) / 2

Genislikbosluk = (582 – (Xboyut * geneloran)) / 2


cizim1

X ve Y koordinatlarımızı çizim için başlangıç durumuna getirelim.

X = X – Xmin

Y = Y – Ymin

Index X – Xmin Y – Ymin
0 0.202485561 0.6135923
1 0.429514647 0.7025632/td>
2 0.6473398 0.5798447
3 0.7608545 0.37122333
4 0.6504078 0.162601948
5 0.389631033 0.0
6 0.101242781 0.159533978
7 0.0 0.377359271
8 0.202485561 0.6135923

 

X ve Y koordinatlarını çizim alanına göre ölçekleyelim.

X = Genislikbosluk + (X * geneloran)

Y koordinatı 0,0 dan başlayacağı için tersine çevirelim.

Y = 373 – Yukseklikbosluk – (Y * geneloran)

Index X Y
0 201.593933 54.703064
1 315.663757 10.0
2 425.109131 71.65941
3 482.1441 176.480362
4 426.6506 281.301331
5 295.62442 363.0
6 150.724915 282.8428
7 99.855896 173.397385
8 201.593933 54.703064

 

cizim5

C#


 

Hayırlı Günler. Sağlıcakla kalın.

Bu döküman www.ibasoglu.com’a aittir. Kaynak belirtmek suretiyle alıntı yapılabilir.

C# using Kullanımı

Merhaba Arkadaşlar;

Uzun bir aradan sonra blogumda yazmaya başlıyorum. Bugün C# using kullanımına, nasıl kullanıldığına ve niçin kullanıldığına bir göz atalım.

C# ‘ta using kullanımı; using directive ve using statement olarak ikiye ayrılır.

USING DIRECTIVE (USING BİLDİRİMİ)

Namespace’leri dahil ettiğimiz ismini yazmadan içinde bulunan sınıfları (class) kullandığımız yapıdır. Namespace dışında en üstte şu şekilde tanımlanır: using namespaceadi;

List sınıfı (class) System.Collections.Generic isim uzayının (namespace) içinde yer alır. using ile dahil etmediğimiz için namespace adını da yazarak çağırmak durumunda kaldık.

Burada ise System.Collections.Generic isim uzayını dahil ettiğimizden dolayı sadece içinde bulunan List sınıfını çağırarak kullandık.

Aynı zamanda using bildirimi ile dahil ettiğimiz namespace ve namespace içindeki sınıfları adlandırmak içinde kullanılır.

Burada System.Collections.Generic.List<int> sınıfını Liste olarak adlandırdık ve bu yüzden o isimle kullandık.

USING STATEMENT (USING İFADESİ)

Bir sınıf kullanıldıktan sonra, çöp toplayıcından (Garbage Collector) önce; IDisposable arayüzünün (interface) Dispose metodunun çalıştırılarak hafızadan (memory) silinmesi işlemidir.

Kullanımı bu şekildedir. Sınıf {} içinde kullanılmalıdır.

Bu şekilde kullanımı tavsiye edilmez.

Birden fazla değişkenle kullanabilirsiniz.

using ifadesi aslında şu kodun kısa halidir.

Not: using ifadesinin kullanıldığı sınıflar IDisposable arayüzü (interface) içermek zorundadır.

Hayırlı Günler. Sağlıcakla kalın.

Bu döküman www.ibasoglu.com’a aittir. Kaynak belirtmek suretiyle alıntı yapılabilir.

SingleTon Pattern Design (Tek Görüntülü Nesneler)

SingleTon bir nesnenin tek bir görüntüsünün (instance) oluşturulup public olarak kullanılmasıdır.

Örneğin bir db adında sınıfımız (class) olsun. Bunu program başında bir kere türetip kullanmamız performans bakımından yararlıdır.

Bunu statik (static) metodlarla yapabiliriz. Sınıfımızı tutabilmek için statik bir değişken tanımlayalım.

Şimdi de bir statik metod tanımlayalım. Geriye nesnenin görüntüsü (instance) oluşmuşsa nesneyi, oluşmamışsa oluşturup nesneyi gönderelim.

Bunun testini göstermek içinde yapıcı (construct) bir metod yazalım. Rasgele bir sayı üretip değişkende tutalım.

Şimdi de iki ayrı değişkende nesnenin tek bir kere görüntüsünün oluştuğunu test edelim. Normal olarak görüntüsünü alalım.

Farklı iki sayı üretilecektir.

Şimdi de tek görüntüsünü alalım.

Üretilen sayı aynı olacaktır. Çünkü nesnenin bir kere görüntüsü oluşacaktır.

Projeyi Buradan İndirebilirsiniz.

 

Hayırlı Günler. Sağlıcakla kalın.

Bu döküman www.ibasoglu.com’a aittir. Kaynak belirtmek suretiyle alıntı yapılabilir.

ASP.NET – C# Stored Procedure Çağırmak

Selamün Aleyküm Arkadaşlar;

Ogrenciler tablosu olsun iki tane prosedur yazılmış olsun. OgrenciEkle, OgrenciListele. Biri öğrenci eklemek için diğeri öğrenci listelemek için. Alanları da no, ad, soyad olsun.

İlk önce Sql serverla işlemlerimizi yapmamızı sağlayan kütüphanemizi tanımlıyoruz.

Bağlantımızı oluşturuyoruz.

Bağlantımızı açıyoruz.

Veritabanına sorgumuzu göndermek için SqlCommand nesnesini tanımlıyoruz.

Hangi bağlantıyla bağlanacağını, sorgunun türünün ne olacağını ve hangi sorguyu çalıştıracağını tanımlıyoruz.

3 tane parametresi var. no int, ad nvarchar(50), soyad nvarchar(50) Üç tane Textbox nesnemiz olsun. Verileri oradan alalım.

Geriye veri döndürmeyeceği için ExecuteNonQuery metoduyla veriyi çalıştırıyorum ve bağlantıyı kapatıyorum.

Şimdi ikinci prosedürümüzü çağıralım. İkinci prosedürümüz geriye değer döndürüyor. O yüzden SqlDataAdapter nesnesini tanımlayacağız. Dönen değeri DataGridView de gösterelim.

Not: CommandType kullanabilmek için System.Data kütüphanesini çağırmanız gerekir.

 

Hayırlı günler. Sağlıcakla kalın.

Bu döküman www.ibasoglu.com’a aittir. Kaynak belirtmek suretiyle alıntı yapılabilir.

C# SQL Server Bağlantı

Selamün Aleyküm Arkadaşlar,

İlk önce SglClient isim uzayını (namespace) projemize dahil ediyoruz.

Baglanti adında bir class tanımlayalım. Sql bağlantımızı tanımlayalım.

Sunucu, veritabani, kullanici ve parola değişkenlerini tanımlayalım.

Bu değişkenlere private (özel) olduğu için dışarıdan erişilemez. Bu değişkenlere erişmek için özellik tanımlayalım.

Özelliklerimizi tanımladık. bu girilen verilerle bağlantımızı oluşturalım. Bunun için bir BaglantiOlustur adında bir method yazalım. ConnectionString oluşturmak için SqlConnectionStringBuilder nesnesini kullanalım.

Bağlantımızı tanımladık. Bağlantımızı Açıp, kapatmak için bir method yazalım.

ConnectionState kullanabilmek için projemize System.Data eklememiz gerekir.

Şimdi Update, Insert, Delete işlemini yaptıran bir method yazalım. Bu işlemi yapmak için SqlCommand nesnesini tanımlıyoruz. Bağlantımızı veriyoruz. Bağlantımızı açıyoruz. Sorgumuzu çalıştırıyoruz ve baglantımızı kapatıyoruz.

Şimdi verileri datatable ile geriye döndüren bir fonksiyon yazalım. datatable veya dataseti doldurabilmek için SqlDataAdapter nesnesini kullanacağız.

Şimdi de verilerimizi satır satır okumak için bir fonksiyon yazalım. Satırları okumamız için SqlDataReader nesnesini kullanacağız.

Şimdilik sınıfımızı (class) bitirelim.

Şimdi nasıl kullanacağımıza bir bakalım. İlk önce bir sınıfımızın bir görüntüsünü (instance) oluşturalım. Sonra baglantı metnimizi tanımlayalım.

SorguCalistir methodunun kullanımı

DatagridView nesnesine veri aktarımı

Verileri satır satır okumak

Hayırlı günler. Sağlıcakla kalın.

Bu döküman www.ibasoglu.com’a aittir. Kaynak belirtmek suretiyle alıntı yapılabilir.