聯系博主          博客地圖
                     

          Map Objects2.1 創建shape文件

          Posted on 2007-10-24 10:37 怎么羨慕天空的飛鳥 閱讀(1251) 評論(0)  編輯  收藏 所屬分類: WebGis
                  近來一直修改一個由Map Objects2.1和vs2005 開發的一個桌面gis,設計到了doc文檔格式控制和動態生成點或面屬性的shape格式的文件。
                  生成shape文件的思路是先通過AddGeoDataset方法生成文件,然后添加屬性數據,下面會在代碼中詳細解釋個參數的含義。
                  
           //創建Isoseis
                  private void createIsoseis(MapObjects2.DataConnection dcIso,SeismEClass.SeismEClass tmpse)
                  
          {
                      
                      
          try
                      
          {
                          
          //blw:::attribute parameters
                          
                          
          string iso_id = TM.ToString("yyyyMMddHHmmss");
                          
          string iso_name = "Isoseis" + iso_id;
                          
          double iso_longitude = Math.Round(PCenter.X,2);
                          
          double iso_latitude = Math.Round(PCenter.Y,2);
                          
          float iso_magnitude = magnitude;
                          
          string iso_location = poly_pos;
                          
          string iso_date = TM.Year + "-" + TM.Month + "-" + TM.Day;
                          
          string iso_depth = angle;

                          
          int j = 0
                          
          for (int i = 6; i < elli.Length;i++ )
                          
          {
                              
          if(elli[i]!=null)
                              
          {
                                  j
          ++;
                              }

                          }

                          
                          
          //blw:::add shp files
                          MapObjects2.MapLayer temp_iso = getLayer(BasePath + "\\DataLayer\\SDE_Isoseis20070618165431.shp");
                          MapObjects2.Recordset temp_isorec 
          = temp_iso.Records;
                          MapObjects2.TableDesc temp_isodesc 
          = temp_isorec.TableDesc;
                          MapObjects2.GeoDataset temp_isogeo 
          = dcIso.AddGeoDataset(iso_name ,temp_iso.shapeType ,temp_isodesc , false ,false);
                          MapObjects2.MapLayer temp_iso1 
          = new MapObjects2.MapLayer();
                          temp_iso1.GeoDataset 
          = temp_isogeo;
                          MapObjects2.Recordset temp_isorec2
          =temp_iso1.Records;

                          
          //blw:::add attributes
                         

                        
                          
          for (int k = 0; k < j;k++ )
                          
          {
                              temp_isorec2.AddNew();
                              temp_isorec2.Fields.Item(
          "ID").Value = iso_id;
                              temp_isorec2.Fields.Item(
          "LATITUDE").Value = iso_latitude;
                              temp_isorec2.Fields.Item(
          "LONGITUDE").Value = iso_longitude;
                              temp_isorec2.Fields.Item(
          "MAGNITUDE").Value = iso_magnitude;
                              temp_isorec2.Fields.Item(
          "LOCATION").Value = iso_location;
                              temp_isorec2.Fields.Item(
          "DATE_").Value = iso_date;
                              temp_isorec2.Fields.Item(
          "DEPTH").Value = iso_depth;
                              temp_isorec2.Fields.Item(
          "Shape").Value = elli[k+6];
                              
          if (k == 0)
                              
          { temp_isorec2.Fields.Item("AREA_").Value = tmpse.AreaSQVI;
                              temp_isorec2.Fields.Item(
          "IDX").Value = "VI";
                              }

                              
          else if (k == 1
                              
          { temp_isorec2.Fields.Item("AREA_").Value = tmpse.AreaSQVII;
                                 temp_isorec2.Fields.Item(
          "IDX").Value="VII";                    
                              }

                              
          else if (k == 2
                              
          { temp_isorec2.Fields.Item("AREA_").Value = tmpse.AreaSQVIII;
                              temp_isorec2.Fields.Item(
          "IDX").Value="VIII";
                              }

                              
          else if (k == 3
                              
          { temp_isorec2.Fields.Item("AREA_").Value = tmpse.AreaSQIX;
                              temp_isorec2.Fields.Item(
          "IDX").Value = "IX";
                              }


                              temp_isorec2.Update();
                          }

                          
                      }

                      
          catch(Exception ex)
                      
          {
                          MessageBox.Show(ex.Message);
                      }

                  
                  }

                   下面是從網絡上搜集的一端比較精簡的代碼,很有代表性。
          private void createshapefile()

                  
          {
                      
          int i;
                      MapObjects2.DataConnection mapdc
          =new MapObjects2.DataConnection();
                      mapdc.Database 
          = "D:\\test";
                      mapdc.Connect();

                      MapObjects2.TableDesc mapdes 
          = new MapObjects2.TableDesc();
                      mapdes.FieldCount 
          = 2;
                      mapdes.set_FieldName(
          0,"Name");
                      mapdes.set_FieldType(
          0, MapObjects2.FieldTypeConstants.moString);
                      mapdes.set_FieldName(
          1,"Length");
                      mapdes.set_FieldType(
          1, MapObjects2.FieldTypeConstants.moDouble);

                      MapObjects2.GeoDataset mapgeo;
                      
          object zm=false;
                      mapgeo 
          = mapdc.AddGeoDataset("hi",   MapObjects2.ShapeTypeConstants.moShapeTypePolygon, mapdes,zm,zm);

                      MapObjects2.MapLayer maplayer
          =new MapObjects2.MapLayer();
                      maplayer.GeoDataset 
          = mapgeo;

                      MapObjects2.Recordset maprs
          =maplayer.Records;

                      
          for (i = 0; i < 10; i++)
                      
          {
                          MapObjects2.Polygon mappolygon 
          = new MapObjects2.Polygon();
                          MapObjects2.Points mappoints 
          = new MapObjects2.Points();
                          MapObjects2.Point mappoint 
          = new MapObjects2.Point();

                          mappoint.X 
          = i*100;
                          mappoint.Y 
          = 0;
                          mappoints.Add(mappoint);
                          mappoint.X 
          = (i+1)*100;
                          mappoint.Y 
          = 0;
                          mappoints.Add(mappoint);
                          mappoint.X 
          = (i+1)*100;
                          mappoint.Y 
          = 100;
                          mappoints.Add(mappoint);
                          
                          mappolygon.Parts.Add(mappoints);

                          maprs.AddNew();
                          maprs.Fields.Item(
          "Shape").Value = mappolygon;
                          maprs.Fields.Item(
          "Name").Value = "hi";
                          maprs.Fields.Item(
          "Length").Value = 341.4;
                          maprs.Update();
                          mappolygon 
          = null;
                          mappoints 
          = null;
                          mappoint 
          = null;
                      }

                  }



              核心: 勇敢進取年輕的心

           

          Copyright © 怎么羨慕天空的飛鳥

          主站蜘蛛池模板: 阳新县| 石首市| 永兴县| 正安县| 麻栗坡县| 财经| 苏州市| 都江堰市| 普兰店市| 铅山县| 昆明市| 龙门县| 兴仁县| 茂名市| 浏阳市| 许昌市| 池州市| 抚远县| 肃宁县| 广河县| 沐川县| 顺昌县| 浑源县| 会泽县| 浦江县| 伊通| 定安县| 新干县| 大埔区| 蒙阴县| 新和县| 利津县| 宜良县| 根河市| 慈利县| 金川县| 高陵县| 和政县| 拜城县| 耿马| 卢龙县|