2///創建:"面"-"點數"的字段.3///4///5publicstaticESRI.ArcGIS.Geodatabase.IFieldsCreateFields(){6ESRI.ArcGIS.Geodatabase.IFieldfieldId=newESRI.ArcGIS.Geodatabase.FieldClass();7//todo(" />

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

統計"面"要素中"點"要素的個數.

系統 1989 0

步驟

  1,創建字段 IFields

      
         1
      
      
        ///
      
      
        <summary>
      
      
         2
      
      
        ///
      
      
         創建:"面"-"點數"的字段.


      
      
         3
      
      
        ///
      
      
        </summary>
      
      
         4
      
      
        ///
      
      
        <returns></returns>
      
      
         5
      
      
        public
      
      
        static
      
      
         ESRI.ArcGIS.Geodatabase.IFields CreateFields() {


      
      
         6
      
                   ESRI.ArcGIS.Geodatabase.IField fieldId = 
      
        new
      
      
         ESRI.ArcGIS.Geodatabase.FieldClass();


      
      
         7
      
      
        //
      
      
        todo(IFieldEdit2).


      
      
         8
      
      
        //
      
      
        面ID.
      
      
         9
      
                   ESRI.ArcGIS.Geodatabase.IFieldEdit2 fieldIdEdit =
      
         (ESRI.ArcGIS.Geodatabase.IFieldEdit2)fieldId;


      
      
        10
      
                   fieldIdEdit.Type_2 =
      
         ESRI.ArcGIS.Geodatabase.esriFieldType.esriFieldTypeInteger;


      
      
        11
      
                   fieldIdEdit.Name_2 = 
      
        "
      
      
        面ID
      
      
        "
      
      
        ;


      
      
        12
      
      
        13
      
      
        //
      
      
        點數.
      
      
        14
      
                   ESRI.ArcGIS.Geodatabase.IField fieldCount = 
      
        new
      
      
         ESRI.ArcGIS.Geodatabase.FieldClass();


      
      
        15
      
                   ESRI.ArcGIS.Geodatabase.IFieldEdit2 fieldCountEdit =
      
         (ESRI.ArcGIS.Geodatabase.IFieldEdit2)fieldCount;


      
      
        16
      
                   fieldCountEdit.Type_2 =
      
         ESRI.ArcGIS.Geodatabase.esriFieldType.esriFieldTypeInteger;


      
      
        17
      
                   fieldCountEdit.Name_2 = 
      
        "
      
      
        個數
      
      
        "
      
      
        ;


      
      
        18
      
      
        19
      
                   ESRI.ArcGIS.Geodatabase.IObjectClassDescription objClsDes = 
      
        new
      
      
         ESRI.ArcGIS.Geodatabase.ObjectClassDescriptionClass();


      
      
        20
      
                   ESRI.ArcGIS.Geodatabase.IFields fields =
      
         objClsDes.RequiredFields;


      
      
        21
      
                   ESRI.ArcGIS.Geodatabase.IFieldsEdit fieldsEdit =
      
         (ESRI.ArcGIS.Geodatabase.IFieldsEdit)fields;


      
      
        22
      
      
                    fieldsEdit.AddField(fieldId);


      
      
        23
      
      
                    fieldsEdit.AddField(fieldCount);


      
      
        24
      
      
        return
      
      
         fields;


      
      
        25
      
               }
    

  2,根據Fields穿件 ITable

      
         1
      
      
        ///
      
      
        <summary>
      
      
         2
      
      
        ///
      
      
         Creates a table with some default fields.


      
      
         3
      
      
        ///
      
      
        </summary>
      
      
         4
      
      
        ///
      
      
        <param name="workspace">
      
      
        An IWorkspace2 interface
      
      
        </param>
      
      
         5
      
      
        ///
      
      
        <param name="tableName">
      
      
        表名稱,如: "owners"
      
      
        </param>
      
      
         6
      
      
        ///
      
      
        <param name="fields">
      
      
        An IFields interface or Nothing.
      
      
        </param>
      
      
         7
      
      
        ///
      
      
        <returns></returns>
      
      
         8
      
      
        public
      
      
        static
      
      
         ESRI.ArcGIS.Geodatabase.ITable CreateTable(ESRI.ArcGIS.Geodatabase.IWorkspace2 workspace, System.String tableName, ESRI.ArcGIS.Geodatabase.IFields fields) {


      
      
         9
      
      
        //
      
      
         create the behavior clasid for the featureclass
      
      
        10
      
                   ESRI.ArcGIS.esriSystem.UID uid = 
      
        new
      
      
         ESRI.ArcGIS.esriSystem.UIDClass();


      
      
        11
      
      
        //
      
      
         valid feature workspace not passed in as an argument to the method
      
      
        12
      
      
        if
      
       (workspace == 
      
        null
      
      ) 
      
        return
      
      
        null
      
      
        ;


      
      
        13
      
      
        14
      
                   ESRI.ArcGIS.Geodatabase.IFeatureWorkspace featureWorkspace =
      
         (ESRI.ArcGIS.Geodatabase.IFeatureWorkspace)workspace;


      
      
        15
      
      
        16
      
      
        //
      
      
         table with that name already exists return that table 
      
      
        17
      
      
        if
      
      
         (workspace.get_NameExists(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTTable, tableName))


      
      
        18
      
      
        return
      
      
         featureWorkspace.OpenTable(tableName);


      
      
        19
      
      
        20
      
                   uid.Value = 
      
        "
      
      
        esriGeoDatabase.Object
      
      
        "
      
      
        ;


      
      
        21
      
      
        22
      
                   ESRI.ArcGIS.Geodatabase.IObjectClassDescription objClsDes = 
      
        new
      
      
         ESRI.ArcGIS.Geodatabase.ObjectClassDescriptionClass();


      
      
        23
      
      
        24
      
      
        //
      
      
         if a fields collection is not passed in then supply our own
      
      
        25
      
      
        if
      
       (fields == 
      
        null
      
      
        ) {


      
      
        26
      
      
        //
      
      
         create the fields using the required fields method
      
      
        27
      
                       fields =
      
         objClsDes.RequiredFields;


      
      
        28
      
                       ESRI.ArcGIS.Geodatabase.IFieldsEdit fieldsEdit = (ESRI.ArcGIS.Geodatabase.IFieldsEdit)fields; 
      
        //
      
      
         Explicit Cast
      
      
        29
      
      
        30
      
                       ESRI.ArcGIS.Geodatabase.IField field = 
      
        new
      
      
         ESRI.ArcGIS.Geodatabase.FieldClass();


      
      
        31
      
      
        32
      
      
        //
      
      
         create a user defined text field
      
      
        33
      
                       ESRI.ArcGIS.Geodatabase.IFieldEdit fieldEdit =
      
         (ESRI.ArcGIS.Geodatabase.IFieldEdit)field;


      
      
        34
      
      
        35
      
      
        //
      
      
         setup field properties
      
      
        36
      
                       fieldEdit.Name_2 = 
      
        "
      
      
        SampleField
      
      
        "
      
      
        ;


      
      
        37
      
                       fieldEdit.Type_2 =
      
         ESRI.ArcGIS.Geodatabase.esriFieldType.esriFieldTypeString;


      
      
        38
      
                       fieldEdit.IsNullable_2 = 
      
        true
      
      
        ;


      
      
        39
      
                       fieldEdit.AliasName_2 = 
      
        "
      
      
        Sample Field Column
      
      
        "
      
      
        ;


      
      
        40
      
                       fieldEdit.DefaultValue_2 = 
      
        "
      
      
        test
      
      
        "
      
      
        ;


      
      
        41
      
                       fieldEdit.Editable_2 = 
      
        true
      
      
        ;


      
      
        42
      
                       fieldEdit.Length_2 = 
      
        100
      
      
        ;


      
      
        43
      
      
        44
      
      
        //
      
      
         add field to field collection
      
      
        45
      
      
                        fieldsEdit.AddField(field);


      
      
        46
      
                       fields =
      
         (ESRI.ArcGIS.Geodatabase.IFields)fieldsEdit;


      
      
        47
      
      
                    }


      
      
        48
      
      
        49
      
      
        //
      
      
         Use IFieldChecker to create a validated fields collection.
      
      
        50
      
                   ESRI.ArcGIS.Geodatabase.IFieldChecker fieldChecker = 
      
        new
      
      
         ESRI.ArcGIS.Geodatabase.FieldCheckerClass();


      
      
        51
      
                   ESRI.ArcGIS.Geodatabase.IEnumFieldError enumFieldError = 
      
        null
      
      
        ;


      
      
        52
      
                   ESRI.ArcGIS.Geodatabase.IFields validatedFields = 
      
        null
      
      
        ;


      
      
        53
      
                   fieldChecker.ValidateWorkspace =
      
         (ESRI.ArcGIS.Geodatabase.IWorkspace)workspace;


      
      
        54
      
                   fieldChecker.Validate(fields, 
      
        out
      
       enumFieldError, 
      
        out
      
      
         validatedFields);


      
      
        55
      
      
        56
      
      
        //
      
      
         The enumFieldError enumerator can be inspected at this point to determine 


      
      
        57
      
      
        //
      
      
         which fields were modified during validation.


      
      
        58
      
      
        59
      
      
        //
      
      
         create and return the table
      
      
        60
      
      
        return
      
       featureWorkspace.CreateTable(tableName, validatedFields, uid, 
      
        null
      
      , 
      
        ""
      
      
        );


      
      
        61
      
               }
    

  3,根據創建ITable的結構,統計"面"要素中"點"要素的個數

      
         1
      
      
        ///
      
      
        <summary>
      
      
         2
      
      
        ///
      
      
         查詢"面"要素中的"點個數".


      
      
         3
      
      
        ///
      
      
        </summary>
      
      
         4
      
      
        ///
      
      
        <param name="polygonFeatureClass">
      
      
        "面"要素類.
      
      
        </param>
      
      
         5
      
      
        ///
      
      
        <param name="pointFeatureClass">
      
      
        "點"要素類.
      
      
        </param>
      
      
         6
      
      
        ///
      
      
        <param name="t">
      
      
        ITable表.
      
      
        </param>
      
      
         7
      
      
        ///
      
      
        <returns></returns>
      
      
         8
      
      
        public
      
      
        static
      
      
         ESRI.ArcGIS.Geodatabase.ITable PointInPolygonCount(ESRI.ArcGIS.Geodatabase.IFeatureClass polygonFeatureClass, ESRI.ArcGIS.Geodatabase.IFeatureClass pointFeatureClass, ESRI.ArcGIS.Geodatabase.ITable t) {


      
      
         9
      
      
        if
      
       (!(polygonFeatureClass.ShapeType ==
      
         ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon))


      
      
        10
      
      
        throw
      
      
        new
      
       InvalidCastException(
      
        "
      
      
        Statistics_Assist::PointInPolygonCount:polygonFeatureClass
      
      
        "
      
      
        );


      
      
        11
      
      
        if
      
       (!(pointFeatureClass.ShapeType ==
      
         ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPoint))


      
      
        12
      
      
        throw
      
      
        new
      
       InvalidCastException(
      
        "
      
      
        Statistics_Assist::PointInPolygonCount:pointFeatureClass
      
      
        "
      
      
        );


      
      
        13
      
      
        14
      
                   ESRI.ArcGIS.Geodatabase.ISpatialFilter polySpatialFilter = 
      
        new
      
      
         ESRI.ArcGIS.Geodatabase.SpatialFilterClass();


      
      
        15
      
                   polySpatialFilter.WhereClause = 
      
        "
      
      
        name like '%遼寧%'
      
      
        "
      
      ; 
      
        //
      
      
        指定名稱的"面"要素.
      
      
        16
      
      
        17
      
                   ESRI.ArcGIS.Geodatabase.IFeatureCursor fCurPoly = polygonFeatureClass.Search(polySpatialFilter, 
      
        false
      
      
        );


      
      
        18
      
                   ESRI.ArcGIS.Geodatabase.IFeature fPoly = 
      
        null
      
      
        ;


      
      
        19
      
      
        while
      
       ((fPoly = fCurPoly.NextFeature()) != 
      
        null
      
      
        ) {


      
      
        20
      
                       ESRI.ArcGIS.Geometry.IGeometry polyGeo =
      
         fPoly.Shape;


      
      
        21
      
                       ESRI.ArcGIS.Geodatabase.ISpatialFilter pntSpatialFilter = 
      
        new
      
      
         ESRI.ArcGIS.Geodatabase.SpatialFilterClass();


      
      
        22
      
                       pntSpatialFilter.Geometry =
      
         polyGeo;


      
      
        23
      
      
        //
      
      
        包含在"面"要素中的"點".
      
      
        24
      
                       pntSpatialFilter.SpatialRel =
      
         ESRI.ArcGIS.Geodatabase.esriSpatialRelEnum.esriSpatialRelContains;


      
      
        25
      
                       ESRI.ArcGIS.Geodatabase.IFeatureCursor fCurPnt = pointFeatureClass.Search(pntSpatialFilter, 
      
        false
      
      
        );


      
      
        26
      
                       ESRI.ArcGIS.Geodatabase.IFeature fPnt = 
      
        null
      
      
        ;


      
      
        27
      
      
        int
      
       count = 
      
        0
      
      ;  
      
        ///
      
      
        /"點"要素的個數.
      
      
        28
      
      
        while
      
       ((fPnt = fCurPnt.NextFeature()) != 
      
        null
      
      
        )


      
      
        29
      
                           ++
      
        count;


      
      
        30
      
      
        31
      
      
        if
      
       (count != 
      
        0
      
      
        ) {


      
      
        32
      
                           ESRI.ArcGIS.Geodatabase.IRow r =
      
         t.CreateRow();


      
      
        33
      
                           r.set_Value(
      
        1
      
      , fPoly.get_Value(
      
        0
      
      )); 
      
        //
      
      
        注意的是,0下標是不可更改的(OID).
      
      
        34
      
                           r.set_Value(
      
        2
      
      
        , count);


      
      
        35
      
      
                            r.Store();


      
      
        36
      
      
                        }


      
      
        37
      
      
                    }


      
      
        38
      
      
        39
      
      
        return
      
      
         t;


      
      
        40
      
               }
    

  4,在住函數中調用

      
         1
      
      
        try
      
      
         {


      
      
         2
      
      
        //
      
      
        面.
      
      
         3
      
                       ESRI.ArcGIS.Carto.IFeatureLayer PolyFLyr = (ESRI.ArcGIS.Carto.IFeatureLayer)Engine.App_Code.Layer_Assist.GetLayerByName(mapCtrl_main.Map, 
      
        "
      
      
        省市
      
      
        "
      
      
        );


      
      
         4
      
      
         5
      
      
        //
      
      
        點.
      
      
         6
      
                       ESRI.ArcGIS.Carto.IFeatureLayer PntFLyr = (ESRI.ArcGIS.Carto.IFeatureLayer)Engine.App_Code.Layer_Assist.GetLayerByName(mapCtrl_main.Map, 
      
        "
      
      
        地市級以上居民地
      
      
        "
      
      
        );


      
      
         7
      
      
         8
      
      
        //
      
      
        表.
      
      
         9
      
      
        string
      
       tPath = 
      
        @"
      
      
        G:\doc\gis\1.400\data\feature
      
      
        "
      
      
        ;


      
      
        10
      
      
        11
      
      
        //
      
      
        1,根據"表路徑"和"表名"創建.


      
      
        12
      
      
        //
      
      
        ESRI.ArcGIS.Geodatabase.ITable tOri = Engine.App_Code.AttributeTable_Assist.CreateTable(tPath, "tOri");


      
      
        13
      
      
        //
      
      
        2,根據"表路徑"和"表名",以及"字段"創建.
      
      
        14
      
                       ESRI.ArcGIS.Geodatabase.IWorkspaceFactory2 wsf = 
      
        new
      
      
         ESRI.ArcGIS.DataSourcesFile.ShapefileWorkspaceFactoryClass();


      
      
        15
      
                       ESRI.ArcGIS.Geodatabase.IWorkspace2 ws = (ESRI.ArcGIS.Geodatabase.IWorkspace2)wsf.OpenFromFile(tPath, 
      
        0
      
      
        );


      
      
        16
      
                       ESRI.ArcGIS.Geodatabase.IFields fields =
      
         Engine.App_Code.AttributeTable_Assist.CreateFields();


      
      
        17
      
                       ESRI.ArcGIS.Geodatabase.ITable t = Engine.App_Code.AttributeTable_Assist.CreateTable(ws, 
      
        "
      
      
        fields_table_LiaoNing
      
      
        "
      
      
        , fields);


      
      
        18
      
      
        //
      
      
        查詢面中的點.
      
      
        19
      
                       ESRI.ArcGIS.Geodatabase.ITable tRes =
      
         Engine.App_Code.Statistics_Assist.PointInPolygonCount(PolyFLyr.FeatureClass, PntFLyr.FeatureClass, t);


      
      
        20
      
                   }
    


可以通過"表路徑"和"表名"創建ITable

      
         1
      
      
        ///
      
      
        <summary>
      
      
         2
      
      
        ///
      
      
         創建表.


      
      
         3
      
      
        ///
      
      
        </summary>
      
      
         4
      
      
        ///
      
      
        <param name="tablePath">
      
      
        即將創建表的路徑,如:"G:\doc\gis\1.400\data\feature"
      
      
        </param>
      
      
         5
      
      
        ///
      
      
        <param name="tableName">
      
      
        表名,如:"owner"
      
      
        </param>
      
      
         6
      
      
        ///
      
      
        <returns></returns>
      
      
         7
      
      
        public
      
      
        static
      
       ESRI.ArcGIS.Geodatabase.ITable CreateTable(
      
        string
      
       tablePath, 
      
        string
      
      
         tableName) {


      
      
         8
      
      
        //
      
      
        需要注意的是必須為"IWorkspaceFactory2",不能為"IWorkspaceFactory".
      
      
         9
      
                   ESRI.ArcGIS.Geodatabase.IWorkspaceFactory2 wsf = 
      
        new
      
      
         ESRI.ArcGIS.DataSourcesFile.ShapefileWorkspaceFactoryClass();


      
      
        10
      
                   ESRI.ArcGIS.Geodatabase.IFeatureWorkspace fws = (ESRI.ArcGIS.Geodatabase.IFeatureWorkspace)wsf.OpenFromFile(tablePath, 
      
        0
      
      
        );


      
      
        11
      
      
        12
      
                   ESRI.ArcGIS.esriSystem.UID uid = 
      
        new
      
      
         ESRI.ArcGIS.esriSystem.UIDClass();


      
      
        13
      
      
        14
      
                   ESRI.ArcGIS.Geodatabase.IField fieldId = 
      
        new
      
      
         ESRI.ArcGIS.Geodatabase.FieldClass();


      
      
        15
      
      
        //
      
      
        todo(IFieldEdit2).


      
      
        16
      
      
        //
      
      
        面ID.
      
      
        17
      
                   ESRI.ArcGIS.Geodatabase.IFieldEdit2 fieldIdEdit =
      
         (ESRI.ArcGIS.Geodatabase.IFieldEdit2)fieldId;


      
      
        18
      
                   fieldIdEdit.Type_2 =
      
         ESRI.ArcGIS.Geodatabase.esriFieldType.esriFieldTypeInteger;


      
      
        19
      
                   fieldIdEdit.Name_2 = 
      
        "
      
      
        面ID
      
      
        "
      
      
        ;


      
      
        20
      
      
        21
      
      
        //
      
      
        點數.
      
      
        22
      
                   ESRI.ArcGIS.Geodatabase.IField fieldCount = 
      
        new
      
      
         ESRI.ArcGIS.Geodatabase.FieldClass();


      
      
        23
      
                   ESRI.ArcGIS.Geodatabase.IFieldEdit2 fieldCountEdit =
      
         (ESRI.ArcGIS.Geodatabase.IFieldEdit2)fieldCount;


      
      
        24
      
                   fieldCountEdit.Type_2 =
      
         ESRI.ArcGIS.Geodatabase.esriFieldType.esriFieldTypeInteger;


      
      
        25
      
                   fieldCountEdit.Name_2 = 
      
        "
      
      
        個數
      
      
        "
      
      
        ;


      
      
        26
      
      
        27
      
                   ESRI.ArcGIS.Geodatabase.IObjectClassDescription objClsDes = 
      
        new
      
      
         ESRI.ArcGIS.Geodatabase.ObjectClassDescriptionClass();


      
      
        28
      
                   ESRI.ArcGIS.Geodatabase.IFields fields =
      
         objClsDes.RequiredFields;


      
      
        29
      
                   ESRI.ArcGIS.Geodatabase.IFieldsEdit fieldsEdit =
      
         (ESRI.ArcGIS.Geodatabase.IFieldsEdit)fields;


      
      
        30
      
      
                    fieldsEdit.AddField(fieldId);


      
      
        31
      
      
                    fieldsEdit.AddField(fieldCount);


      
      
        32
      
      
        33
      
      
        return
      
       fws.CreateTable(tableName, fields, uid, 
      
        null
      
      , 
      
        ""
      
      
        );


      
      
        34
      
               }
    

?

統計"面"要素中"點"要素的個數.


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日日摸夜夜摸狠狠摸日日碰夜夜做 | 亚洲免费二区三区 | 久久99精品久久久久久水蜜桃 | 不卡在线观看 | 成人毛片18岁女人毛片免费看 | 日本一区二区三区免费在线观看 | 成人国产三级在线播放 | 亚洲欧美中文字幕高清在线一 | 亚洲乱视频 | 2020国产成人免费视频 | 欧美日韩国产片 | 91视频最新地址 | 97国产在线视频公开免费 | 91精品国产高清久久久久 | 香蕉人人超人人超免费看视频 | 一级无毛 | 99在线免费视频 | 桃色视频网 | 色婷婷久久免费网站 | 精品久久天干天天天按摩 | 福利一区在线观看 | 韩国一级特黄毛片大 | 天天翘夜夜洗澡天天做 | 亚洲日本久久久午夜精品 | 欧美一级毛片不卡免费观看 | 国产一级毛片免 | 天天色网站| 成人国产一区二区 | 欧美日韩国产58香蕉在线视频 | 黄色成人一级片 | 亚洲va欧美va国产va天堂 | 精品久久久久国产 | 免费国产成人午夜在线观看 | 久青草资源福利视频 | 全免费午夜一级毛片一级毛 | 色大18成网站www在线观看 | 日本高清在线精品一区二区三区 | 在线成人免费观看国产精品 | 嫩模一区| 亚洲精品免费在线 | 国产成人高清精品免费观看 |