Gis etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Gis etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

27 Temmuz 2016 Çarşamba

MapInfo_Ders8

Artık projenin son demlerine yaklaşıyoruz. Projeye başlarken haritanın anket şirketlerinin yakın tahminlerine göre şirketin rengine boyanacağından bahsetmiştik. Yani gerçek seçim sonucuna en yakın tahmini veren şirketin rengi ilin rengi olacaktı. Yapacağımız bu işleme tematik adı verilmektedir. Yani haritayı tematik harita yapacağız bu sebeple formumuza koymuş olacağımız tematik analizler butonunu kodlamaya başlayalım. Ama öncelikle bir form daha oluşturalım. Bu formun adı yazmış olduğum programda form2 olarak geçmektedir. Formun tasarımı aşağıdaki resimde görüldüğü gibi olacaktır. 
Bu form üzerinde 6 adet buton vardır. butonlara birer renk ekledik. Böylelikle hangi rengin hangi şirkete ait olduğu görülmüş olacak. Parti isimlerinin yer aldığı bir adet listbox ve payların bölüneceği range kısmı bulunmaktadır. Range renkleri oluşturmamızı sağlayacaktır. Eğer listboxtan bir parti bir seçip tümü butonuna basarsanız şirketleri sıralayan bir tematik oluşturacaktır. Ancak parti seçip şirket adını seçerseniz şirketin en yakın tahminden en uzak tahmine göre  iller koyudan açığa tematiklendirilecektir.
Aşağıdaki örneğe göre Türkiye'de Akp için en doğru tahmini veren şirket AKAM anket şirketi olarak görülmektedir.
Chp için bakacak olursak ;
Doğu illerinde Türkiye genelinde ve ağırlıklı olarak doğu illerinde Andy-Ar Başarılı iken iç anadoluda metropol şirketi daha başarılı çalışmalar vermiştir. Ayrıca sol alt köşede ne kadarlık bir yanılma payının olduğunu da görebilirsiniz. Sol alt köşedeki alana cartografic legend denmektedir. hangi rengin ne kadarlık bir farkı ifade ettiğine buradan bakabilirsiniz.
Form2 kodları aşağıdaki gibidir. 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Secim
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
       
         
        private void button1_Click(object sender, EventArgs e)
        {
            string p = panel1.Handle.ToString();
            int n = Convert.ToInt16(textBox1.Text);
            string thematic_column = string.Empty;

            if (listBox1.SelectedItem.ToString().Equals(listBox1.Items[0]))
            {
                try
                {

                    Form1.mi.Do("Add Column " + "\"Iller\"" + " (FARK_AKP Float)From AKAM_ICIN Set To FARK_AKP Where COL1 = COL2");
                }
                catch
                {
                }
                thematic_column = "FARK_AKP";
                Form1.mi.Do("select FARK_AKP from Iller order by FARK_AKP  into sel");
            }
            else if (listBox1.SelectedItem.ToString().Equals(listBox1.Items[1]))
            {
                try
                {
                    Form1.mi.Do("Add Column " + "\"Iller\"" + " (FARK_CHP Float)From AKAM_ICIN Set To FARK_CHP Where COL1 = COL2");
                }
                catch
                {
                }
                Form1.mi.Do("select FARK_CHP from Iller order by FARK_CHP into sel");
                thematic_column = "FARK_CHP";
            }
            else if (listBox1.SelectedItem.ToString().Equals(listBox1.Items[2]))
            {
                try
                {
                    Form1.mi.Do("Add Column " + "\"Iller\"" + " (FARK_HDP Float)From AKAM_ICIN Set To FARK_HDP Where COL1 = COL2");
                }
                catch
                {
                }
                Form1.mi.Do("select FARK_HDP from Iller order by FARK_HDP into sel");
                thematic_column = "FARK_HDP";
            }
            else if (listBox1.SelectedItem.ToString().Equals(listBox1.Items[3]))
            {
                try
                {
                    Form1.mi.Do("Add Column " + "\"Iller\"" + " (FARK_MHP Float)From AKAM_ICIN Set To FARK_MHP Where COL1 = COL2");
                }
                catch
                {
                }
                Form1.mi.Do("select FARK_MHP from Iller order by FARK_MHP into sel");
                thematic_column = "FARK_MHP";
            }
            // TEMATİKKK OLUŞTURMA


            int range = Convert.ToInt16(Form1.mi.Eval("int(tableinfo(sel,8)/" + Convert.ToString(n) + ")"));
            int c_range = Convert.ToInt16(255 / n);

            //----------part 2 -----
            Form1.mi.Do("fetch first from sel");
            string r1 = Convert.ToString(Form1.mi.Eval("sel.col1"));
            string r2 = string.Empty;
            string cmstr = string.Empty;

            for (int i = 1; i < n; i++)
            {
                Form1.mi.Do("fetch rec " + Convert.ToString(i * range) + " from sel");
                r2 = Convert.ToString(Form1.mi.Eval("sel.col1"));
                string rgb = Convert.ToString(Form1.mi.Eval("RGB(" + Convert.ToString((n - i) * c_range) + "," + Convert.ToString((n - i) * c_range) + ",255)"));
                cmstr = cmstr + r1 + ":" + r2 + " brush(2," + rgb + ",16777215), ";
                r1 = r2;
            }

            Form1.mi.Do("fetch last from sel");
            r2 = Convert.ToString(Form1.mi.Eval("sel.col1"));
            cmstr = cmstr + r1 + ":" + r2 + " brush(2,255,16777215)";


            Form1.mi.Do("shade window " + Form1.win_id + " iller with " + thematic_column + " ranges apply all use color Brush (2,16711680,16777215) " + cmstr);
            Form1.mi.Do("Set Next Document Parent " + p + " Style 1");
            Form1.mi.Do("Create Cartographic Legend From Window " + Form1.win_id + " Behind Frame From Layer 2");
            Form1.mi.Do("select * from iller where plaka_no =\"82\" into sel");
            
        }


        //TEMATİK SİLME

        public void removetematik()
        {
            for (int k = Convert.ToInt16(Form1.mi.Eval("mapperinfo(" + Form1.win_id + ",9)")); k > 0; k = k - 1)
            {
                if (Convert.ToInt16(Form1.mi.Eval("layerinfo(" + Form1.win_id + "," + Convert.ToString(k) + ",24)")) == 3)
                {
                    Form1.mi.Do("remove map layer \"" + Form1.mi.Eval("layerinfo(" + Form1.win_id + "," + Convert.ToString(k) + ",1)") + "\"");
                }
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            int n = Convert.ToInt16(textBox1.Text);
           string thematic_column = string.Empty;
            removetematik();
        }

      
        private void button4_Click(object sender, EventArgs e)
        {
            string p = panel1.Handle.ToString();
            int n = Convert.ToInt16(textBox1.Text);
            string thematic_column = string.Empty;

            if (listBox1.SelectedItem.ToString().Equals(listBox1.Items[0]))
            {
                try
                {

                    Form1.mi.Do("Add Column " + "\"Iller\"" + " (FARK_AKP_2 Float)From METROPOLL_ICIN Set To FARK_AKP Where COL1 = COL2");
                }
                catch
                {
                }
                thematic_column = "FARK_AKP_2";
                Form1.mi.Do("select FARK_AKP_2 from Iller order by FARK_AKP_2  into sel");
            }
            else if (listBox1.SelectedItem.ToString().Equals(listBox1.Items[1]))
            {
                try
                {
                    Form1.mi.Do("Add Column " + "\"Iller\"" + " (FARK_CHP_2 Float)From METROPOLL_ICIN Set To FARK_CHP Where COL1 = COL2");
                }
                catch
                {
                }
                Form1.mi.Do("select FARK_CHP_2 from Iller order by FARK_CHP_2 into sel");
                thematic_column = "FARK_CHP_2";
            }
            else if (listBox1.SelectedItem.ToString().Equals(listBox1.Items[2]))
            {
                try
                {
                    Form1.mi.Do("Add Column " + "\"Iller\"" + " (FARK_HDP_2 Float)From METROPOLL_ICIN Set To FARK_HDP Where COL1 = COL2");
                }
                catch
                {
                }
                Form1.mi.Do("select FARK_HDP_2 from Iller order by FARK_HDP_2 into sel");
                thematic_column = "FARK_HDP_2";
            }
            else if (listBox1.SelectedItem.ToString().Equals(listBox1.Items[3]))
            {
                try
                {
                    Form1.mi.Do("Add Column " + "\"Iller\"" + " (FARK_MHP_2 Float)From METROPOLL_ICIN Set To FARK_MHP Where COL1 = COL2");
                }
                catch
                {
                }
                Form1.mi.Do("select FARK_MHP_2 from Iller order by FARK_MHP_2 into sel");
                thematic_column = "FARK_MHP_2";
            }
            // TEMATİKKK OLUŞTURMA


            int range = Convert.ToInt16(Form1.mi.Eval("int(tableinfo(sel,8)/" + Convert.ToString(n) + ")"));
            int c_range = Convert.ToInt16(255 / n);

            //----------part 2 -----
            Form1.mi.Do("fetch first from sel");
            string r1 = Convert.ToString(Form1.mi.Eval("sel.col1"));
            string r2 = string.Empty;
            string cmstr = string.Empty;

            for (int i = 1; i < n; i++)
            {
                Form1.mi.Do("fetch rec " + Convert.ToString(i * range) + " from sel");
                r2 = Convert.ToString(Form1.mi.Eval("sel.col1"));
                string rgb = Convert.ToString(Form1.mi.Eval("RGB(" + Convert.ToString((n - i) * c_range) + "," + Convert.ToString((n - i) * c_range) + ",255)"));
                cmstr = cmstr + r1 + ":" + r2 + " brush(2," + rgb + ",16777215), ";
                r1 = r2;
            }

            Form1.mi.Do("fetch last from sel");
            r2 = Convert.ToString(Form1.mi.Eval("sel.col1"));
            cmstr = cmstr + r1 + ":" + r2 + " brush(2,255,16777215)";


            Form1.mi.Do("shade window " + Form1.win_id + " iller with " + thematic_column + " ranges apply all use color Brush (2,16711680,16777215) " + cmstr);
            Form1.mi.Do("Set Next Document Parent " + p + " Style 1");
            Form1.mi.Do("Create Cartographic Legend From Window " + Form1.win_id + " Behind Frame From Layer 2");
            Form1.mi.Do("select * from iller where plaka_no =\"82\" into sel");
        }

        private void button6_Click(object sender, EventArgs e)
        {
            int n = Convert.ToInt16(textBox1.Text);
            string p = panel1.Handle.ToString();
            string thematic_column = string.Empty;

            if (listBox1.SelectedItem.ToString().Equals(listBox1.Items[0]))
            {
                try
                {

                    Form1.mi.Do("Add Column " + "\"Iller\"" + " (FARK_AKP_3 Float)From ANDY_AR_ICIN Set To FARK_AKP Where COL1 = COL2");
                }
                catch
                {
                }
                
                Form1.mi.Do("select FARK_AKP_3 from Iller order by FARK_AKP_3  into sel");
                thematic_column = "FARK_AKP_3";
            }
            else if (listBox1.SelectedItem.ToString().Equals(listBox1.Items[1]))
            {
                try
                {
                    Form1.mi.Do("Add Column " + "\"Iller\"" + " (FARK_CHP_3 Float)From ANDY_AR_ICIN Set To FARK_CHP Where COL1 = COL2");
                }
                catch
                {
                }
                Form1.mi.Do("select FARK_CHP_3 from Iller order by FARK_CHP_3 into sel");
                thematic_column = "FARK_CHP_3";
            }
            else if (listBox1.SelectedItem.ToString().Equals(listBox1.Items[2]))
            {
                try
                {
                    Form1.mi.Do("Add Column " + "\"Iller\"" + " (FARK_HDP_3 Float)From ANDY_AR_ICIN Set To FARK_HDP Where COL1 = COL2");
                }
                catch
                {
                }
                Form1.mi.Do("select FARK_HDP_3 from Iller order by FARK_HDP_3 into sel");
                thematic_column = "FARK_HDP_3";
            }
            else if (listBox1.SelectedItem.ToString().Equals(listBox1.Items[3]))
            {
                try
                {
                    Form1.mi.Do("Add Column " + "\"Iller\"" + " (FARK_MHP_3 Float)From ANDY_AR_ICIN Set To FARK_MHP Where COL1 = COL2");
                }
                catch
                {
                }
                Form1.mi.Do("select FARK_MHP_3 from Iller order by FARK_MHP_3 into sel");
                thematic_column = "FARK_MHP_3";
            }
            // TEMATİKKK OLUŞTURMA


            int range = Convert.ToInt16(Form1.mi.Eval("int(tableinfo(sel,8)/" + Convert.ToString(n) + ")"));
            int c_range = Convert.ToInt16(255 / n);

            //----------part 2 -----
            Form1.mi.Do("fetch first from sel");
            string r1 = Convert.ToString(Form1.mi.Eval("sel.col1"));
            string r2 = string.Empty;
            string cmstr = string.Empty;

            for (int i = 1; i < n; i++)
            {
                Form1.mi.Do("fetch rec " + Convert.ToString(i * range) + " from sel");
                r2 = Convert.ToString(Form1.mi.Eval("sel.col1"));
                string rgb = Convert.ToString(Form1.mi.Eval("RGB(" + Convert.ToString((n - i) * c_range) + "," + Convert.ToString((n - i) * c_range) + ",255)"));
                cmstr = cmstr + r1 + ":" + r2 + " brush(2," + rgb + ",16777215), ";
                r1 = r2;
            }

            Form1.mi.Do("fetch last from sel");
            r2 = Convert.ToString(Form1.mi.Eval("sel.col1"));
            cmstr = cmstr + r1 + ":" + r2 + " brush(2,255,16777215)";


            Form1.mi.Do("shade window " + Form1.win_id + " iller with " + thematic_column + " ranges apply all use color Brush (2,16711680,16777215) " + cmstr);
            Form1.mi.Do("Set Next Document Parent " + p + " Style 1");
            Form1.mi.Do("Create Cartographic Legend From Window " + Form1.win_id + " Behind Frame From Layer 2");
            Form1.mi.Do("select * from iller where plaka_no =\"82\" into sel");
        }

        private void button5_Click(object sender, EventArgs e)
        {
            int n = Convert.ToInt16(textBox1.Text);
            string p = panel1.Handle.ToString();
            string thematic_column = string.Empty;

            if (listBox1.SelectedItem.ToString().Equals(listBox1.Items[0]))
            {
                try
                {

                    Form1.mi.Do("Add Column " + "\"Iller\"" + " (FARK_AKP_4 Float)From ORC_ICIN Set To FARK_AKP Where COL1 = COL2");
                }
                catch
                {
                }
                thematic_column = "FARK_AKP_4";
                Form1.mi.Do("select FARK_AKP_4 from Iller order by FARK_AKP_4  into sel");
            }
            else if (listBox1.SelectedItem.ToString().Equals(listBox1.Items[1]))
            {
                try
                {
                    Form1.mi.Do("Add Column " + "\"Iller\"" + " (FARK_CHP_4 Float)From ORC_ICIN Set To FARK_CHP Where COL1 = COL2");
                }
                catch
                {
                }
                thematic_column = "FARK_CHP_4";
                Form1.mi.Do("select FARK_CHP_4 from Iller order by FARK_CHP_4 into sel");
                
            }
            else if (listBox1.SelectedItem.ToString().Equals(listBox1.Items[2]))
            {
                try
                {
                    Form1.mi.Do("Add Column " + "\"Iller\"" + " (FARK_HDP_4 Float)From ORC_ICIN Set To FARK_HDP Where COL1 = COL2");
                }
                catch
                { }

                thematic_column = "FARK_HDP_4";
                Form1.mi.Do("select FARK_HDP_4 from Iller order by FARK_HDP_4 into sel");

            }
            else if (listBox1.SelectedItem.ToString().Equals(listBox1.Items[3]))
            {
                try
                {
                    Form1.mi.Do("Add Column " + "\"Iller\"" + " (FARK_MHP_4 Float)From ORC_ICIN Set To FARK_MHP Where COL1 = COL2");
                }
                catch
                {
                }
                thematic_column = "FARK_MHP_4";
                Form1.mi.Do("select FARK_MHP_4 from Iller order by FARK_MHP_4 into sel");

            }
            // TEMATİKKK OLUŞTURMA


            int range = Convert.ToInt16(Form1.mi.Eval("int(tableinfo(sel,8)/" + Convert.ToString(n) + ")"));
            int c_range = Convert.ToInt16(255 / n);

            //----------part 2 -----
            Form1.mi.Do("fetch first from sel");
            string r1 = Convert.ToString(Form1.mi.Eval("sel.col1"));
            string r2 = string.Empty;
            string cmstr = string.Empty;

            for (int i = 1; i < n; i++)
            {
                Form1.mi.Do("fetch rec " + Convert.ToString(i * range) + " from sel");
                r2 = Convert.ToString(Form1.mi.Eval("sel.col1"));
                string rgb = Convert.ToString(Form1.mi.Eval("RGB(" + Convert.ToString((n - i) * c_range) + "," + Convert.ToString((n - i) * c_range) + ",255)"));
                cmstr = cmstr + r1 + ":" + r2 + " brush(2," + rgb + ",16777215), ";
                r1 = r2;
            }

            Form1.mi.Do("fetch last from sel");
            r2 = Convert.ToString(Form1.mi.Eval("sel.col1"));
            cmstr = cmstr + r1 + ":" + r2 + " brush(2,255,16777215)";


            Form1.mi.Do("shade window " + Form1.win_id + " iller with " + thematic_column + " ranges apply all use color Brush (2,16711680,16777215) " + cmstr);
            Form1.mi.Do("Set Next Document Parent " + p + " Style 1");
            Form1.mi.Do("Create Cartographic Legend From Window " + Form1.win_id + " Behind Frame From Layer 2");
            Form1.mi.Do("select * from iller where plaka_no =\"82\" into sel");
        }

        private void button3_Click(object sender, EventArgs e)
        {

            int n = Convert.ToInt16(textBox1.Text);
            string p = panel1.Handle.ToString();
            string thematic_column = string.Empty;

            if (listBox1.SelectedItem.ToString().Equals(listBox1.Items[0]))
            {
                try
                {
                    Form1.mi.Do("Add Column " + "\"Iller\"" + " (G_AKP Float)From karsılaştırma Set To G_AKP Where COL1 = COL2");
                }
                catch
                {
                }
                thematic_column = "G_AKP";
                Form1.mi.Do("select G_AKP from Iller order by G_AKP  into sel");
            }
            else if (listBox1.SelectedItem.ToString().Equals(listBox1.Items[1]))
            {
                try
                {
                    Form1.mi.Do("Add Column " + "\"Iller\"" + " (G_CHP Float)From karsılaştırma Set To G_CHP Where COL1 = COL2");
                }
                catch
                {
                }
                Form1.mi.Do("select G_CHP from Iller order by G_CHP into sel");
                thematic_column = "G_CHP";
            }
            else if (listBox1.SelectedItem.ToString().Equals(listBox1.Items[2]))
            {
                try
                {
                    Form1.mi.Do("Add Column " + "\"Iller\"" + " (G_HDP Float)From karsılaştırma Set To G_HDP Where COL1 = COL2");
                }
                catch
                {
                }
                Form1.mi.Do("select G_HDP from Iller order by G_HDP into sel");
                thematic_column = "G_HDP";
            }
            else if (listBox1.SelectedItem.ToString().Equals(listBox1.Items[3]))
            {
                try
                {
                    Form1.mi.Do("Add Column " + "\"Iller\"" + " (G_MHP Float)From karsılaştırma Set To G_MHP Where COL1 = COL2");
                }
                catch
                {
                }
                Form1.mi.Do("select G_MHP from Iller order by G_MHP into sel");
                thematic_column = "G_MHP";
            }
            // TEMATİKKK OLUŞTURMA


            int range = Convert.ToInt16(Form1.mi.Eval("int(tableinfo(sel,8)/" + Convert.ToString(n) + ")"));
            int c_range = Convert.ToInt16(255 / n);

            //----------part 2 -----
            Form1.mi.Do("fetch first from sel");
            string r1 = Convert.ToString(Form1.mi.Eval("sel.col1"));
            string r2 = string.Empty;
            string cmstr = string.Empty;

            for (int i = 1; i < n; i++)
            {
                Form1.mi.Do("fetch rec " + Convert.ToString(i * range) + " from sel");
                r2 = Convert.ToString(Form1.mi.Eval("sel.col1"));
                string rgb = Convert.ToString(Form1.mi.Eval("RGB(" + Convert.ToString((n - i) * c_range) + "," + Convert.ToString((n - i) * c_range) + ",255)"));
                cmstr = cmstr + r1 + ":" + r2 + " brush(2," + rgb + ",16777215), ";
                r1 = r2;
            }

            Form1.mi.Do("fetch last from sel");
            r2 = Convert.ToString(Form1.mi.Eval("sel.col1"));
            cmstr = cmstr + r1 + ":" + r2 + " brush(2,255,16777215)";


            Form1.mi.Do("shade window " + Form1.win_id + " iller with " + thematic_column + " ranges apply all use color Brush (2,16711680,16777215) " + cmstr);
            Form1.mi.Do("Set Next Document Parent " + p + " Style 1");
            Form1.mi.Do("Create Cartographic Legend From Window " + Form1.win_id + " Behind Frame From Layer 2");
            Form1.mi.Do("select * from iller where plaka_no =\"82\" into sel");
        }

        public void Form2_Load(object sender, EventArgs e)
        {
            
            
        }
       
        private void panel1_Paint(object sender, PaintEventArgs e)
        {

        }

        private void panel1_Paint_1(object sender, PaintEventArgs e)
        {

        }

        public string p { get; set; }
    }
}
Burada kodları tek tek açıklama gereksinimi duymuyorum Çünkü daha önceki derslerde mapinfo komutlarını açıklamıştım. Komutların içeriği ise sıradan bildiğimiz sql sorguları. Bu formun içerisindeki en önemli kodlama tematiğin yapıldığı kodlamadır. Bu kodlama içeriğinde iller teker teker taranmış sütunlar fark değerlerine göre karşılaştırılmıştır. Karşılaştırılmaya göre de renklendirme yapılmıştır. Projemiz burada sona erdi umarım bu anlatımın size bir faydası dokunur.  Kolay gelmesi dileğiyle...

2 Şubat 2016 Salı

Coğrafi Bilgi Sistemleri

Wikipedia tanımı :Coğrafi Bilgi Sistemi (CBS) : Dünya üzerindeki karmaşık sosyalekonomikçevresel vb. sorunların çözümüne yönelik mekana/konuma dayalı karar verme süreçlerinde kullanıcılara yardımcı olmak üzere, büyük hacimli coğrafi verilerin; toplanması, depolanması, işlenmesi, yönetimi, mekansal analizi, sorgulaması ve sunulması fonksiyonlarını yerine getiren donanım, yazılım, personel, coğrafi veri ve yöntem bütünü  olarak bilinmektedir. Coğrafi Bilgi Sistemlerindeki temel amaç verileri görsele dökerek kullanıcının karar vermesini kolaylaştırmaktadır. İngilizce'de Geografic Information System olarak  bilinmektedir. Bu yazı dizisinin sonunda  bir cbs programının nasıl kodlandığını, hangi araçların kullanılacağını anlatmaya çalışacağım. Yapacağım proje anket şirket şirketlerinin güvenilirliğini ortaya döken bir proje olacak. Buna göre gerçek seçim sonuçlarına en yakın sonucu gösteren anket şirketlerini Türkiye haritası üzerinde göstereceğiz. Böylelikle programı kullanan kişiler hangi bölgelerde hangi şirkete inanmaları gerektiğini kolay bir şekilde anlamış olacak. Programın algoritma kısmına gelirsek; gerçek seçim sonucuyla  anket şirketlerinin sonuçları çıkartılacak ve şehir en az farka sahip olan şirketin rengine boyanacak. tüm çıkarma işlemleri 81 il için yapılacak. Kullanılacak toollara gelirsek MapInfo ve Mapbasic Cbs programları kullanılacak. Ayrıca Program C# dilinde visual studio ortamında yazılacak. Yazı dizisini başlatma amacım MapInfo'nun, C# ile  kullanımını anlatmak. Yaptığım internet araştırmaları sonucu giriş seviyesi için pek Türkçe kaynak bulamadım ve bu eksikliği gidermeyi umuyorum. Gerekli dosyaları konuları anlatırken paylaşmayı düşünüyorum Ayrıca MapInfo kullanımını Başarsoft'un sitesinden bulabilirsiniz.