• Programming by 白影를 방문하신 여러분을 환영합니다 :)

매우 간단하다...

shp 파일의 경로로 파일을 열고

객체를 호출한 다음에

해당 sde의 layer에 집어넣는다...

여기서 객체가 1개인 경우는 상관없지만 여러개가 있는 경우 아래와 같이 while문을 이용해서 넣어주는 것이 좋다.

몇개인지 굳이 셀 필요는 없으니까...

Arcobject를 만져본 사람이라면 대략 변수가 뭘 의미하는지는 아실거라 생각하고

아래 소스만 올립니다. (아래소스만으로는 안되고... 위에 기본적인 설정 및 접속 세팅은 필요합니다...)



            IFeatureClass pFClass = pWorkspace.openFeatureClass(layerName);             

            FeatureClass shpFClass = null;    

            ShapefileWorkspaceFactory shapefileWorkspaceFactory = new ShapefileWorkspaceFactory();

            Workspace workspace = new Workspace(shapefileWorkspaceFactory.openFromFile(shpPath, 0));

            shpFClass = new FeatureClass(workspace.openFeatureClass(shpNm));

            

            String shapeFieldName = shpFClass.getShapeFieldName();

            Fields shpFields = (Fields) shpFClass.getFields();

              

            int lngIndex = shpFields.findField(shapeFieldName);

            Field field = (Field) shpFields.getField(lngIndex);

            

            int shpFieldCount = shpFields.getFieldCount();

            FeatureCursor featureCursor = new FeatureCursor(shpFClass.search(null, true));            

            IFeature shpFeature = (IFeature) featureCursor.nextFeature();

              

            while (shpFeature != null) {

                StringBuffer row = new StringBuffer();

                IFeature pFeature = pFClass.createFeature();                


                for (int index = 0; index < shpFieldCount; index++) {

                    int fieldType = shpFeature.getFields().getField(index).getType();

                    if(pFeature.getFields().findField(shpFeature.getFields().getField(index).getName())==-1){

                        if(shpFeature.getFields().getField(index).getName().equals("FID"))

                            strError=shpFeature.getValue(index).toString();

                        continue;

                    }

                switch (fieldType) {

                    case esriFieldType.esriFieldTypeDouble:

                        if(!shpFeature.getFields().getField(index).getName().equals("AREA") && !shpFeature.getFields().getField(index).getName().equals("LEN")){         

                            row.append(shpFeature.getValue(index) + "\t");

                          }

                        break;

                    case esriFieldType.esriFieldTypeInteger:      

                        break;

                    case esriFieldType.esriFieldTypeSingle:

                        row.append(shpFeature.getValue(index) + "\t");

                        break;

                    case esriFieldType.esriFieldTypeSmallInteger:

                        row.append(shpFeature.getValue(index) + "\t");

                        break;

                    case esriFieldType.esriFieldTypeString:

                      row.append(shpFeature.getValue(index) + "\t");

                    break;

                    case esriFieldType.esriFieldTypeGeometry:

                      row.append("(geometry)" + "\t");

                      

                    IGeometry Geometry = shpFeature.getShape();

                    Geometry.setSpatialReferenceByRef(FromProjection);

                    Geometry.project(ToProjection);

                  

                    IEnvelope shpExtent = Geometry.getEnvelope();

                    pFeature.setShapeByRef(Geometry);

                    break;

                }

              }

                  

                pFeature.setValue(pFeature.getFields().findField("FieldNm"), FieldValue);

                pFeature.store(); 

                shpFeature = (IFeature) featureCursor.nextFeature();     

            }


'Programming > Arcgis' 카테고리의 다른 글

ArcObject API Local 설치  (0) 2015.03.27
1