• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      CASS地籍圖中界址信息批量轉(zhuǎn)出方法研究

      2020-07-09 09:55:20陳麗金
      資源信息與工程 2020年3期
      關(guān)鍵詞:宗地界址數(shù)組

      陳麗金

      (福建東辰綜合勘察院,福建 福州 350001)

      1 引言

      地籍調(diào)查是依照國家相關(guān)法律法規(guī),通過地籍測繪和權(quán)屬調(diào)查,確定宗地的權(quán)屬狀態(tài)、位置坐落、界址分布、宗地面積、宗地用途等信息,并形成一系列調(diào)查表格、圖件、數(shù)據(jù)庫等信息成果,為土地登記和發(fā)證提供依據(jù)的一項重要基礎(chǔ)工作[1]。宗地是地籍調(diào)查的基本單元,是指由封閉的權(quán)屬線所包圍的地塊或空間,構(gòu)成宗地的邊界線稱為界址線,而界址線的轉(zhuǎn)折點稱為界址點,因此可以說,界址點、界址線唯一確定了宗地的空間位置[2]。

      在地籍調(diào)查中,地籍圖和地籍調(diào)查表是兩類非常重要的成果,地籍圖是以特定的投影、比例、符號系統(tǒng)將地籍要素表示在地圖中,反映各宗地的位置分布和空間關(guān)系的圖件,CASS是地籍調(diào)查中應(yīng)用非常廣泛的制圖軟件[3]。地籍調(diào)查表是以表格的形式記錄宗地相關(guān)屬性信息的載體,由封面、宗地基本信息表、界址信息表等部分構(gòu)成,其中,界址信息表中記錄界址點號、界址間距等界址描述信息[4]。由于地籍圖中已經(jīng)記錄了宗地各界址點的坐標,因此可以利用地籍圖中的相關(guān)信息自動生成界址信息表。本文將討論CASS軟件繪制的地籍圖中批量轉(zhuǎn)出界址信息的方法。

      2 CASS地籍圖中界址信息存儲及轉(zhuǎn)出方式

      CASS地籍圖中宗地、界址線、界址點通過宗地代碼進行關(guān)聯(lián),對于同一宗地,其界址點編號自宗地西北角從1開始順時針進行編號,如圖1所示。

      圖1 地籍圖中的界址點編號

      CASS提供了兩種方式批量轉(zhuǎn)出界址信息,一種是通過“輸出宗地屬性”工具將所有宗地的權(quán)屬信息轉(zhuǎn)出到mdb數(shù)據(jù)庫中,該數(shù)據(jù)庫包含zdinfo、jzdinfo、jzxinfo三個表,分別存儲宗地、界址點、界址線屬性信息。在jzxinfo表中QDH和ZDH分別記錄界址線的起止界址點點號,然而該編號是以地籍子區(qū)為單位而不是以宗地為單位進行順序編號,與圖面表達不一致,如圖2所示。

      圖2 CASS中批量轉(zhuǎn)出的jzxinfo表的界址點號

      另一種方式是通過“繪制地籍表格”菜單組中的“界址點成果表(excel)”導(dǎo)出界址信息,以excel方式存儲,每宗地的界址信息存儲在一個表單(sheet)中,如圖3所示。該種方式中的界址點號仍以地籍子區(qū)為單位進行順序編號。此外,如果宗地數(shù)量較多,該種方式導(dǎo)出界址信息時軟件容易崩潰,無法將所有宗地的界址信息導(dǎo)出。

      圖3 CASS中批量轉(zhuǎn)出的界址點成果表

      上述兩種方式轉(zhuǎn)出的界址信息的共同點是界址點無法按宗地進行從1開始編號,本文探索一種基于CASS中權(quán)屬文件的界址信息批量轉(zhuǎn)出方式。

      3 基于權(quán)屬文件的界址信息批量轉(zhuǎn)出算法

      首先,利用CASS軟件中的“權(quán)屬文件生成”菜單組中的“由界址線生成”,指定一條閉合線,可將內(nèi)部所有宗地的界址信息導(dǎo)出到外部后綴格式為.qs的文本文件中,用記事本打開該文件,內(nèi)容格式如圖4所示。文件中,每宗地包含一組信息,第一行為宗地代碼,第二行為權(quán)利人名稱,第三行為地類代碼,第四行開始每三行為一個界址點信息,包含點號和橫縱坐標值,宗地信息以“E,宗地面積”作為最后一行,然后繼續(xù)下一宗地的信息組,直到最后一宗地,再以“E”結(jié)束權(quán)屬文件。

      圖4 權(quán)屬文件格式

      權(quán)屬文件中,界址點以地籍子區(qū)為單位從小到大編號,對于單宗地,從西北角開始按順時針方向編號。例如,某地籍子區(qū)第一宗地的界址點編號為J1-J5,第二宗地的界址點號為J6-J12,以此類推。在地籍調(diào)查表中,每一宗地的界址點編號一般從西北角開始順時針從1開始編號,因此,需要對上述權(quán)屬文件(.qs)進行解析處理,對每宗地的界址點重新進行編號即可。算法步驟如下:

      (1)讀取權(quán)屬文件,將所有行的內(nèi)容存儲在行信息數(shù)組中。

      (2)創(chuàng)建宗地信息動態(tài)數(shù)組,數(shù)組元素為宗地信息,宗地信息元素包含宗地代碼屬性和界址點動態(tài)數(shù)組,界址點數(shù)組元素包含界址點x,y坐標值。

      (3)遍歷行信息數(shù)組,讀取并記錄第一行宗地代碼,存入當前宗地元素的宗地代碼屬性。

      (4)跳3行讀取原始界址點號,如果不是以“E,”開頭,則記錄下面2行的坐標值,存入當前宗地元素界址點數(shù)組。

      (5)重復(fù)執(zhí)行步驟(4),直到遇到“E,”,說明本宗地信息組結(jié)束。轉(zhuǎn)入步驟(3),繼續(xù)讀取下一宗地信息。

      (6)重復(fù)執(zhí)行步驟(3)到步驟(5),直到所有行信息讀取結(jié)束。

      (7)創(chuàng)建一個csv文件用于存儲界址信息,每行用于存儲一條界址線信息,包括宗地代碼、起始界址點號、終止界址點號、界址線長度四個字段信息。

      (8)遍歷上述宗地信息動態(tài)數(shù)組,讀取每一宗地的宗地代碼屬性和界址點動態(tài)數(shù)組,界址點編號從1開始續(xù)編,相鄰兩個界址點構(gòu)成一條界址線(最后一個點與第一個點閉合),計算其直線距離即為界址線長度,存入界址信息文件。

      (9)直到宗地信息動態(tài)數(shù)組遍歷結(jié)束,關(guān)閉界址信息文件,轉(zhuǎn)換結(jié)束。

      4 算法實現(xiàn)

      用C#語言對上述算法進行編程實現(xiàn),核心代碼如下所示:

      private void ConvertQS(string qsFile,string result)

      {

      string zddm = "";

      string[]lines = File.ReadAllLines(qsFile, Encoding.Default);//行信息數(shù)組

      lines = lines.Take(lines.Length-1).ToArray();//去掉最后一行結(jié)束標記(E)

      int line_count = lines.Length;//行數(shù)

      int lineIndex = 0;//行序號

      List zdInfos = new List();//宗地信息動態(tài)數(shù)組

      while(lineIndex < line_count)//遍歷行信息數(shù)組

      {

      zddm = lines[lineIndex];//第一行為宗地代碼

      ZDInfo zdInfo = new ZDInfo(zddm);

      lineIndex += 3;//轉(zhuǎn)到界址點記錄處

      string jzp_no = lines[lineIndex];//原始界址點點號

      //未遇到E,表示本宗地界址點未遍歷結(jié)束,記錄本界址點信息

      while(!jzp_no.StartsWith("E,"))

      {

      string x = lines[lineIndex + 1];

      string y = lines[lineIndex + 2];

      zdInfo.jzs.Add(new JZInfo(x, y));//當前界址點存入宗地信息

      lineIndex += 3;//每個點有3行信息

      jzp_no = lines[lineIndex];//繼續(xù)遍歷本宗地界址點

      }

      zdInfos.Add(zdInfo)//本宗地遍歷結(jié)束,存入宗地信息數(shù)組

      lineIndex++;//轉(zhuǎn)入下一宗地

      }

      //遍歷宗地信息動態(tài)數(shù)組進行界址點重編號

      string[]contents = zdInfos.OrderBy(item => item.zddm).ToList().Select(zdInfo =>

      {

      StringBuilder sb = new StringBuilder();

      //遍歷當前宗地界址點動態(tài)數(shù)組,相鄰兩點構(gòu)成一條界址線(最后一點與起點閉合)

      for(int i = 1, len = zdInfo.jzs.Count; i <= len; i++)//對每一宗地的界址點從1開始序編

      {

      string start = string.Format("J{0}", i);

      string end = i != len ? string.Format("J{0}", i + 1): "J1";

      //計算兩點之間的直線距離

      JZInfo startP = zdInfo.jzs[i-1];

      JZInfo endP = zdInfo.jzs[i != len ? i : 0];

      string dis = Math.Sqrt(Math.Pow(startP.x-endP.x, 2)+ Math.Pow(startP.y-endP.y, 2)).ToString("F3");

      sb.AppendLine(string.Format("{0},{1},{2},{3}", zdInfo.zddm, start, end, dis));

      }

      return sb.ToString().TrimEnd(new char[]{ ‘ ’, ‘ ’ });

      }).ToArray();

      //寫入結(jié)果文件

      File.WriteAllText(result, "宗地代碼,起始點號,終止點號,界址線長度 " + string.Join(" ", contents), Encoding.Default);

      }

      5 結(jié)果分析

      運行上述代碼對原始權(quán)屬文件進行處理,得到如圖5所示結(jié)果,可以看出,每一宗地的界址點號已從1開始編碼,并自動計算得到每條界址線的長度。在地籍圖中對宗地原始的界址點號和界址線的長度

      圖5 轉(zhuǎn)換結(jié)果

      進行了比對,轉(zhuǎn)換結(jié)果中相鄰界址點的編號保持了原有的相對關(guān)系,且界址線長度也與地籍圖上一致,驗證了該方法的可行性。在該結(jié)果的基礎(chǔ)上可以很容易地進行地籍調(diào)查表中界址信息的格式化輸出以及數(shù)據(jù)入庫等其他轉(zhuǎn)化,本文不做深入闡述。

      猜你喜歡
      宗地界址數(shù)組
      兩只小兔移界址
      兩只小兔移界址
      JAVA稀疏矩陣算法
      電腦報(2022年13期)2022-04-12 00:32:38
      JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
      電腦報(2020年24期)2020-07-15 06:12:41
      尋找勾股數(shù)組的歷程
      在ArcMap中實現(xiàn)對金圖建庫系統(tǒng)中界址線屬性的便捷錄入
      基于歷史歸檔的宗地查詢系統(tǒng)的設(shè)計與實現(xiàn)
      河南科技(2014年22期)2014-02-27 14:18:03
      地籍宗地時空數(shù)據(jù)庫中的變化檢測
      基于多色圖的宗地信息歷史回溯模型及實現(xiàn)
      廣州SCS中界址點的檢查與處理
      城市勘測(2012年2期)2012-09-22 10:01:56
      阿鲁科尔沁旗| 南丹县| 桂平市| 建德市| 新疆| 沈丘县| 盐山县| 亚东县| 浏阳市| 宜兰市| 上高县| 潮安县| 嘉义县| 临西县| 吉林市| 池州市| 大新县| 惠水县| 青海省| 格尔木市| 喀喇| 乃东县| 呈贡县| 鲁甸县| 冕宁县| 乐至县| 通山县| 保靖县| 光泽县| 修武县| 林口县| 中西区| 马关县| 延津县| 磐石市| 离岛区| 德令哈市| 静安区| 泾川县| 株洲市| 任丘市|