검색
다른 검색어로 검색을 시도하시기 바랍니다.
Arcobject shp파일을 sde의 layer에 import하기
매우 간단하다...
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 |
---|