프로그래밍 방식으로 ArcMap에서 shapefile을 편집 하시겠습니까?


9

이것이 할 수있는 일입니까?

예를 들어,지도에 오버레이를 만들어 모양 파일로 저장 한 경우이 파일 ( 기존 파일 ) 오버레이를 편집하고 싶습니다 . 점 추가 / 점 제거 색상 / 채우기 스타일 등을 변경합니다.

이상적으로는 새 모양 파일을 만들고 이전 모양 파일을 삭제하지 않으려 고합니다.

생각?

편집 1 : 좋아, 이제 누군가가 할 수 있다고 말했습니다. 명백한 질문은 어떻게 형상 파일을 편집합니까 (ArcObjects에서 프로그램 적으로)?

편집 2 : 주석을 보면 이와 같은 작업을 수행해야하지만 확실하지 않습니다.

현재 C #의 ArcObjects에서 편집하려는 기본 모양 파일이 있습니다.

FeatureClass, Workspace를 만든 다음 분명히 모양을 전달하여 shapefile을 만들었습니다. 이 경우 몇 점이있는 단순한 폴리 라인 일뿐입니다. 내가하고 싶은 것은이 shapefile을 업데이트하는 기능입니다.

해당 FeatureClass, Workspace를 재사용하고 새로운 형태로 전달해야한다고 가정합니다. 그러나 내가하고있는 일은 효과가없는 것 같습니다. 이것은 내가 편집에있는 곳입니다-조언은 좋을 것입니다.

IWorkspaceEdit workspaceEdit = (IWorkspaceEdit)inWorkspace;
workspaceEdit.StartEditing(true);
workspaceEdit.StartEditOperation();

ComReleaser comReleaser = new ComReleaser();

IFeatureCursor featureCursor = inFeatureClass.Update(null , true);

IFeature feature = null;
while((feature = featureCursor.NextFeature()) != null)
{
   int id = feature.Fields.FindField("shape");
   IFeatureBuffer featureBuffer = inFeatureClass.CreateFeatureBuffer();
   featureCursor.DeleteFeature(); //Delete the old 
   featureBuffer.Shape = (IGeometry)inShape;
   featureCursor.InsertFeature(featureBuffer);
}

workspaceEdit.StopEdidtOperation();
workspaceEdit.StopEditing(true);

편집 3 : 최종 솔루션

featureCursor = inFeatureClass.Update(null ,true);
//DELETE old shape
featureCursor = inFeatureClass.Insert(true);
//Insert new 
workspaceEdit.StopEditOperation();
workspaceEdit.StopEditing(true);

ArcMap의 그리기 도구를 사용하여지도에 주석 레이어를 그렸다는 말입니까? 이 파일을 모양 파일로 변환 한 경우 모양 파일 인 것처럼 확실히 편집 할 수 있습니다.
jvangeld

ArcMap.TrackPolygon을 사용하여 IPolygon을 만든 다음 결국 모양 파일로 바꿉니다. 내가하고 싶은 것은이 shapefile을 편집하는 것입니다. ... 속성 (점, 필 스타일, 색상 등)을 얻는 방법을 알고 있습니다
ist_lion

1
프로그래밍 방식으로 ArcObjects에서?
Mapperz

네, 제가하고 싶은 일입니다
ist_lion

솔루션을 공유해 주셔서 감사합니다. f # C #으로 태그를 지정하면 구문 강조 표시가 나타납니다.
patrick

답변:


4

셰이프 파일을 프로그래밍 방식으로 만들고 조작했습니다. 따라서 포인트를 추가하는 데 도움이되는 힌트를 얻을 수 있습니다. IGeometry를 디스크에 레이어 파일로 저장

레이어를 채색하는 것은 매우 간단합니다.

IGeoFeatureLayer geolayer = thislayer as IGeoFeatureLayer;
ISimpleRenderer simplerenderer = geolayer.Renderer as ISimpleRenderer;
if (simplerenderer != null)
{
//depending on the type one of these objects will probably not be null -- then set .Color and .Symbol 

IMarkerSymbol markersymbol = simplerenderer.Symbol as IMarkerSymbol;
ILineSymbol linesymbol = simplerenderer.Symbol as ILineSymbol;
SimpleFillSymbol simpleFillSymbol = simplerenderer.Symbol as SimpleFillSymbol;
}

흠, 아마도이 질문을 올바르게 말하지 않을 것입니다. 프로그래밍 방식으로 셰이프 파일을 이미 만들고 저장할 수 있습니다. 내가하고 싶은 것은이 기존 파일을 편집하는 것입니다. 그래도 같은 논리가 작동하는 것
같아요

1
@PSU_Kardi featureCursor.InsertFeature (fb)를 사용해야한다고 생각합니다. 및 featureCursor.DeleteFeature – 기존 파일 편집
patrick

나는 그것을 조사 할 것이다-그것이 내가 원하는 것 같아요
ist_lion
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.