แก้ไข Shapefile ใน ArcMap โดยทางโปรแกรมหรือไม่


9

นี่เป็นสิ่งที่สามารถทำได้หรือไม่?

ตัวอย่างเช่นถ้าฉันสร้างการซ้อนทับบนแผนที่และบันทึกเป็นรูปร่างไฟล์ฉันต้องการไปและแก้ไขการซ้อนทับ( ไฟล์ที่มีอยู่ก่อน ) นี้ ... ทั้งเพิ่มจุด / ลบจุดเปลี่ยนสี / fillstyle / ฯลฯ

เป็นการดีที่ฉันต้องการหลีกเลี่ยงการสร้างรูปร่างไฟล์ใหม่และลบไฟล์เก่า

คิด?

แก้ไข 1: ตกลงตอนนี้มีคนบอกว่าสามารถทำได้ คำถามที่ชัดเจนคือคุณจะแก้ไข shapefile ได้อย่างไร (ใน ArcObjects pro-grammatically)

แก้ไข 2: ดูความคิดเห็นที่ปรากฏฉันต้องทำอะไรแบบนี้ แต่ฉันไม่แน่ใจ

ขณะนี้ฉันมีรูปร่างพื้นฐานที่ฉันต้องการแก้ไขใน ArcObjects ใน C #

ฉันได้สร้าง shapefile โดยสร้าง FeatureClass, Workspace แล้วเห็นได้ชัดว่าผ่านรูปร่างของฉันไปแล้ว ในกรณีนี้มันเป็นแค่โพลีไลน์ที่มีเพียงไม่กี่จุด สิ่งที่ฉันต้องการจะทำคือสามารถอัปเดตรูปร่างไฟล์นี้ได้

ฉันสมมติว่าฉันต้องใช้ 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 pro-grammatically
Mapperz

ใช่นั่นคือสิ่งที่ฉันต้องการจะทำ
ist_lion

ขอบคุณที่แบ่งปันโซลูชัน fyi ถ้าคุณแท็กด้วย C # คุณจะได้รับการเน้นไวยากรณ์
patrick

คำตอบ:


4

ฉันสร้างและจัดการกับ shapefile โดยทางโปรแกรม - ดังนั้นนี่อาจให้คำแนะนำสำหรับการเพิ่มจุด: บันทึก IGeometry ลงดิสก์เป็นไฟล์ Layer

สำหรับการระบายสีเลเยอร์มันค่อนข้างง่าย

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

อืมฉันอาจจะไม่ได้ใช้คำถามนี้อย่างถูกต้อง ฉันสามารถสร้างและบันทึกไฟล์รูปร่างโดยทางโปรแกรมแล้ว สิ่งที่ฉันต้องการจะทำคือแก้ไขไฟล์ที่มีอยู่ก่อนหน้านี้ ฉันเดาว่าตรรกะเดียวกันจะใช้ได้แม้ว่า ....
ist_lion

1
@PSU_Kardi ฉันคิดว่าคุณต้องใช้ FeatureCursor.InsertFeature (fb); และ featureCursor.DeleteFeature เพื่อแก้ไขไฟล์ที่มีอยู่ก่อน
patrick

ฉันจะดูมัน - ฉันคิดว่านั่นคือสิ่งที่ฉันต้องการ
ist_lion
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.