ArcMap'teki şekil dosyasını programlı olarak mı düzenliyorsunuz?


9

Bu yapılabilecek bir şey mi?

Örneğin, bir harita üzerinde bir yer paylaşımı oluşturup şekil dosyası olarak kaydettiysem, bu ( önceden var olan dosya ) yer paylaşımını gidip düzenlemek istiyorum ... Nokta ekle / kaldır noktaları renk / dolgu stilini / vb. Değiştirir.

İdeal olarak yeni bir şekil dosyası oluşturmak ve eskisini silmek istemiyorum.

Düşünceler?

Düzenleme 1: Tamam, şimdi birisi yapılabileceğini söyledi. Açık olan soru, şekil dosyasını nasıl düzenlediğinizdir (ArcObjects'te pro-grammatik olarak)?

Edit 2: Görünüşe göre böyle bir şey yapmam gerekiyor, ama emin değilim.

Şu anda C # ArcObjects düzenlemek istediğiniz temel bir şekil dosyası var.

Bir FeatureClass, Çalışma Alanı oluşturarak ve sonra açıkça benim şekil içinde geçirerek bir şekil dosyası oluşturdum. Bu durumda, üzerinde birkaç nokta bulunan basit bir Polyline. Yapmak istediğim şey bu şekil dosyasını güncelleme yeteneğine sahip olmak.

Ben o FeatureClass, Çalışma Alanı yeniden kullanmak ve yeni bir şekil geçmek gerektiğini varsayıyorum. Ancak, yaptığım işe yaramıyor. Düzenlemede olduğum yer burası - herhangi bir tavsiye harika olurdu.

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);

DÜZENLEME 3: Nihai Çözüm

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

ArcMap'ın çizim araçlarıyla haritaya bazı ek açıklama katmanları çizdiğinizi mi söylüyorsunuz? Bunu bir şekil dosyasına dönüştürdüyseniz, onu bir şekil dosyasıymış gibi düzenleyebilirsiniz.
jvangeld

Bir IPolygon oluşturmak için ArcMap.TrackPolygon kullanıyorum ve sonunda bir şekil dosyasına dönüştürün. O zaman ne yapmak istiyorum bu şekil dosyasını düzenlemek .... Ben özellikleri (puan, dolgu stili, renk, vb) almak nasıl biliyorum
ist_lion

1
ArcObjects'te pro-grammatik olarak mı?
Mapperz

Evet bunu yapmak istiyorum
ist_lion

Çözümü paylaştığınız için teşekkürler, fyi C # ile etiketlerseniz sözdizimi vurgulaması alırsınız.
patrick

Yanıtlar:


4

Bir şekil dosyasını programlı olarak oluşturdum ve değiştirdim - belki de bu nokta eklemek için bazı ipuçları sağlayabilir: IGeometry'i diske bir Katman dosyası olarak kaydedin

Bir katmanı boyamaya gelince, bu oldukça basit.

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;
}

Hmm, belki de bu soruyu doğru şekilde ifade etmiyorum. Zaten programlı bir şekil dosyası oluşturabilir ve kaydedebilirim. Yapmak istediğim bu önceden var olan dosyayı düzenlemek. Aynı mantığın işe yarayacağını tahmin ediyorum ....
ist_lion

1
@PSU_Kardi Sanırım featureCursor.InsertFeature (fb); ve featureCursor.DeleteFeature önceden var olan dosyanızı düzenlemek için
patrick

Buna bakacağım - bence istediğim bu
ist_lion
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.