最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#如何提取經緯度文件中的經緯度數據

 更新時間:2022年08月23日 10:38:20   作者:IC00  
近期開發(fā)時需要獲取當前的經緯度坐標,下面這篇文章主要給大家介紹了關于C#如何提取經緯度文件中經緯度數據的相關資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下

前言:

之前我們使用對List將數據封裝進KML經緯度文件中,今天我們來學習一下如何將經緯度文件中的經緯度數據讀出來,并保存在變量中,這個變量可以是list也可以是數組,只要能儲存數據就可以,我們對KML文件中的Point數據下面的coordinates數據讀出來即可!??!

一、界面設計

設計了兩個選項,可以選擇不同的效果進行提取經緯度數據,第一代表可以把數據提取到TXT文本文件中,而第二表示不會生成TXT文件只在文本框中展示你的提取數據,可以看后面的代碼邏輯,有一個函數是專門負責數據的提取,是使用XML讀取的形式讀取指定的標簽數據

二、效果展示

目前只展示了不會導出TXT文件的效果,只是對數據展示在文本框中。你們也可以按照自己的需求接著寫接著添加自己想要的功能,后面有代碼邏輯,代碼也有注解,不至于不能懂,有啥問題評論區(qū)評論

三、代碼邏輯

使用的是XML文件讀取的形式,利用XML的節(jié)點的方式,對數據的標簽遍歷得到,對應的標簽,再對指定的coordinates標簽的數據進行提取并賦值,從而實現提取KML文件中的經緯度的數據效果。

//自定義類的函數
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml;
?
namespace FileConversion
{
    public class DataExtract
    {
        /// <summary>
        /// 對指定路徑的kml文件,經緯度讀取,并返回經緯度集合MapConfig
        /// </summary>
        /// <param name="Path">文件路徑名</param>
        /// <returns></returns>
        public List<String> MapConfigs(string filename)
        {
            List<String> mapConfigs = new List<String>();//實例化list集合
           
            string destPath = filename;//賦值文件路徑
            if (destPath == null)//判斷路徑是否為空
            {
                MessageBox.Show("路徑為空");
                return null;
            }   
            XmlDocument xmldoc = new XmlDocument();
            try
            {
                xmldoc.Load(destPath);//加載kml文件
                XmlElement root = xmldoc.DocumentElement;
                XmlNodeList xmlmark = root.GetElementsByTagName("coordinates");//獲取coordinates節(jié)點
                int i = 0;
                foreach (XmlNode xmlmarkNode in xmlmark)//遍歷所有coordinates節(jié)點
                {
                    if (xmlmarkNode.Name == "coordinates")
                    {
                        i++;
                        string mapConfig = "";//實例化
                        string str = xmlmarkNode.InnerText;//獲取節(jié)點的值
                        if (str.Equals("") || str.Contains(",") == false)
                        {
                            MessageBox.Show("第"+i.ToString()+"行數據有誤,將返回NULL值","錯誤");
                            return null;
                        }
                        string[] strings = str.Split(',');//對節(jié)點的值字符串進行分割
                        mapConfig+= strings[0]+",";//經度值
                        mapConfig+= strings[1]+",";//緯度值
                        mapConfig+= strings[2];//
                        mapConfigs.Add(mapConfig);//添加在list中
                    }
                }
                return mapConfigs;
            }
            catch
            {
                MessageBox.Show("文件加載失敗或coordinates節(jié)點數據獲取失敗", "錯誤");
                return null;//注:kml文件如果使用wps或者word打開會再運行本程序會報錯,文本打開運行不會報錯
            }
            
        }
    }
}
?
?
//上面是我們需要調用的類
??
//這個是我們界面設計調用的類
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
?
namespace FileConversion
{
    public partial class Form4 : Form
    {
        public Form4()
        {
            InitializeComponent();
        }
        public string KmlPath = "";
        private void button6_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFile = new OpenFileDialog();
            openFile.Filter = "KML文件(*.kml)|*.kml|所有文件|*.*";
            if (openFile.ShowDialog() != DialogResult.OK)//打開文件是否點擊了取消
                return;
            KmlPath = openFile.FileName;
            textBox1.Text = KmlPath;
        }
?
        private void button7_Click(object sender, EventArgs e)
        {
            DataExtract data = new DataExtract();//自定義的函數,復制kml文件經緯度數據提取
            if (KmlPath.Equals("") == true)
            {
                MessageBox.Show("選擇文件之后才能導出");
            }
            else
            {
                if (checkBox1.Checked == true && checkBox2.Checked == false || checkBox1.Checked == true && checkBox2.Checked == true)
                {
                    List<string> list = data.MapConfigs(KmlPath);
                    string localFilePath = "";//文件路徑
                    SaveFileDialog save = new SaveFileDialog();
                    save.Filter = "Txt(*.txt)|*.txt";        //設置文件類型  
                    save.RestoreDirectory = true; //保存對話框是否記憶上次打開的目錄 
                    if (save.ShowDialog() == DialogResult.OK)//點了保存按鈕進入 
                    {
                        localFilePath = save.FileName.ToString(); //獲得文件路徑 
                        string fileName = localFilePath.Substring(localFilePath.LastIndexOf("\") + 1); //獲取文件名,不帶路徑
                        //FileStream file = new FileStream(localFilePath, FileMode.Create);
                        foreach (string kml in list)
                        {
                            textBox2.Text += kml + "\r\n";
                            File.AppendAllText(localFilePath, kml + "\r\n");
                        }
?
                    }
                }
                else if (checkBox1.Checked == false && checkBox2.Checked == true)
                {
                    List<string> list = data.MapConfigs(KmlPath);
                    foreach (string kml in list)
                    {
                        textBox2.Text += kml + "\r\n";
                    }
                }
                else
                {
                    MessageBox.Show("選擇你需要的項");
                }
            }
        }
    }
}

總結:

這篇文章比較簡單,里面也已經寫好了方法讓我們調用就可以了,界面制作比較簡單,但是是一個比較實用的一個小工具。

到此這篇關于C#如何提取經緯度文件中經緯度數據的文章就介紹到這了,更多相關C#提取經緯度數據內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C# 嵌入dll 的方法

    C# 嵌入dll 的方法

    這篇文章主要介紹了C# 嵌入dll 的方法,本文圖文并茂給大家及時的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-07-07
  • c#實現把漢字轉為帶田字格背景的jpg圖片

    c#實現把漢字轉為帶田字格背景的jpg圖片

    這篇文章主要介紹了c#實現把漢字轉為帶田字格背景的jpg圖片示例,需要的朋友可以參考下
    2014-03-03
  • C#實現輸入10個數存入到數組中并求max和min及平均數的方法示例

    C#實現輸入10個數存入到數組中并求max和min及平均數的方法示例

    這篇文章主要介紹了C#實現輸入10個數存入到數組中并求max和min及平均數的方法,涉及C#簡單數據轉換與數值運算相關操作技巧,需要的朋友可以參考下
    2017-07-07
  • c#?Task.Wait()與awaiat?Task異常處理的區(qū)別說明

    c#?Task.Wait()與awaiat?Task異常處理的區(qū)別說明

    這篇文章主要介紹了c#?Task.Wait()與awaiat?Task異常處理的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Unity實現刮獎效果

    Unity實現刮獎效果

    這篇文章主要為大家詳細介紹了Unity實現刮獎效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • 輕松學習C#的屬性

    輕松學習C#的屬性

    輕松學習C#的屬性,對C#的屬性感興趣的朋友可以參考本篇文章,幫助大家更靈活的運用C#的屬性
    2015-11-11
  • WinForm單例窗體用法實例

    WinForm單例窗體用法實例

    這篇文章主要介紹了WinForm單例窗體,結合實例形式分析了窗體的單例模式定義、實現與使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2016-07-07
  • 淺談C#在網絡波動時防重復提交的方法

    淺談C#在網絡波動時防重復提交的方法

    這篇文章主要介紹了淺談C#在網絡波動時防重復提交的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • C#實現塊狀鏈表的項目實踐

    C#實現塊狀鏈表的項目實踐

    這篇文章主要介紹了C#實現塊狀鏈表的項目實踐,通過定義塊和鏈表類,利用塊內元素引用實現塊與塊之間的鏈接關系,從而實現對塊狀鏈表的遍歷、插入和刪除等操作,感興趣的可以了解一下
    2023-11-11
  • WPF使用WrapPanel實現虛擬化效果

    WPF使用WrapPanel實現虛擬化效果

    這篇文章主要為大家詳細介紹了如何利用WPF WrapPanel實現虛擬化效果,文中的示例代碼講解詳細,對我們學習或工作有一定幫助,感興趣的小伙伴可以了解一下
    2022-09-09

最新評論

德江县| 始兴县| 成安县| 界首市| 平山县| 伽师县| 长丰县| 新竹县| 胶州市| 唐山市| 威海市| 固原市| 玉环县| 剑河县| 肃南| 如皋市| 广灵县| 黑河市| 达拉特旗| 裕民县| 当涂县| 安丘市| 博爱县| 盐城市| 泾源县| 当雄县| 曲麻莱县| 东至县| 沿河| 宜兴市| 昌都县| 临邑县| 江阴市| 南充市| 民权县| 伊吾县| 庆安县| 高青县| 丹棱县| 黄骅市| 资源县|