คำถามติดแท็ก arcobjects

ArcObjects เป็นชุด API ที่อิงกับ COM จาก ESRI Inc. ที่ใช้ในผลิตภัณฑ์หลายชนิดรวมถึง ArcGIS Desktop, ArcGIS Engine และ ArcGIS Server

2
ใช้. NET Generics เพื่อจัดเก็บ ArcObjects?
อะไรคือความหมายของการใช้ Generic types ใน. NET เพื่อเก็บ ArcObjects เช่น ILayer, IField เป็นต้น คอมไพเลอร์ส่งคำเตือนให้ฉันเมื่อใช้ค่าเหล่านี้ public class Foo { private List<ILayer> fooLayers; public List<ILayer> FooLayers { get { ... } set { ... } } } นี่คือคำเตือน: คำเตือน 15 การประมวลผลคำเตือนผู้ส่งออกไลบรารีชนิด 'ArcMemorialCore.Topography.IMemorialDocument.set_ProfessionalsEnvolved (ค่า), ArcMemorialCore' คำเตือน: ผู้ส่งออกไลบรารีประเภทพบอินสแตนซ์ชนิดทั่วไปในลายเซ็น รหัสทั่วไปอาจไม่สามารถส่งออกไปยัง COM ArcMemorialCore ความกังวลของฉันไม่เพียง แต่มีอยู่ของคำเตือนเท่านั้น แต่ยังรวมถึงแนวทางการออกแบบที่ดีประสิทธิภาพ ฯลฯ
11 arcobjects  .net 

2
เรียกใช้แอปพลิเคชั่น ArcGIS 10.1 บน 10.2
ฉันรองรับแอปพลิเคชั่น. NET ที่คอมไพล์แล้วบนพีซีที่ติดตั้ง ArcGIS 10.1 แอปพลิเคชันประกอบด้วยส่วนต่อประสานผู้ใช้และส่วนขยายเดสก์ท็อป ArcGIS รวมถึงแอสเซมบลีของตัวติดตั้งที่ Windows Installer เรียกใช้เพื่อลงทะเบียนส่วนขยายเดสก์ท็อประหว่างการติดตั้ง ปัญหาที่ฉันมีคือแอปพลิเคชันจะไม่ทำงานบนพีซีที่มี ArcGIS 10.2 เนื่องจากไม่พบชุดประกอบ ESRI 10.1 ดังนั้นจึงเกิดปัญหา ดูเหมือนว่าตั้งแต่ v9.3 ESRI จะไม่ส่งไฟล์นโยบายของผู้เผยแพร่อีกต่อไปเพื่อเปลี่ยนเส้นทางโปรแกรมขณะใช้งานเป็นเวอร์ชันล่าสุด ฉันจัดการเพื่อเปลี่ยนเส้นทางโปรแกรมเพื่อโหลดชุดประกอบ 10.2 โดยเพิ่มการรวมรันไทม์แอสเซมบลีลงใน. exe.config ของแอปพลิเคชัน อย่างไรก็ตามสิ่งนี้จะไม่เปลี่ยนเส้นทางส่วนขยายเดสก์ท็อปและจะไม่แก้ปัญหาด้วยตัวติดตั้งที่กำลังมองหาไลบรารี 10.1 เมื่อติดตั้งแอปพลิเคชัน ดูเหมือนว่าโซลูชันของ ESRI จะรวบรวมแอปพลิเคชั่นใหม่ทุกครั้งที่มีการปล่อย ArcGIS เวอร์ชันใหม่ อย่างไรก็ตามนี่หมายความว่าฉันต้องมีสำเนาของ ArcGIS ทุกรุ่นที่ผู้ใช้ใช้ และฉันจะต้องถอนการติดตั้งและติดตั้งเวอร์ชันที่แตกต่างกันใหม่ทุกครั้งที่ฉันต้องเปลี่ยนรหัสแอปพลิเคชันเพื่อรวบรวมใหม่ ไม่มีใครมีข้อเสนอแนะใด ๆ ? สามารถโหลดไลบรารีแบบไดนามิกที่รันไทม์เพื่อหลีกเลี่ยงการค้นหารุ่นที่เฉพาะเจาะจงหรือไม่ มีวิธีแก้ปัญหาอื่น ๆ อีกไหม?

1
ArcObjects เทียบเท่ากับปุ่ม ArcMap Flip หรือไม่?
ในส่วนขยาย ArcMap ฉันต้องพลิกหลายบรรทัดจากการเลือก ปุ่ม ArcMap Flip ช่วยให้คุณสามารถพลิกได้ทีละคุณสมบัติเท่านั้น อะไรคือ ArcObjects เทียบเท่ากับปุ่ม Flip ของ ArcMap?

2
เวอร์ชั่น C # สำหรับ ArcObjects 9.3
ฉันสามารถใช้ C # 4.0 กับกรอบงานเป้าหมายที่กำหนดเป็น. NET 3.5 เพื่อพัฒนาส่วนขยายสำหรับ ArcMap 9.3 ได้หรือไม่? หรือต้องเป็น C # 3.0 หรือเก่ากว่า
10 arcobjects  arcmap  c#  .net 

1
อ้างถึง NaN หรือ±∞ (ค่าทศนิยมพิเศษ) ในแบบสอบถามคำจำกัดความ ArcMap?
ฉันบังเอิญค้นพบว่า ArcMap แสดงค่าทศนิยมพิเศษให้กับผู้ใช้อย่างไร + ∞ (บวกอนันต์) แสดงเป็น 1.#INF –∞ (อินฟินิตี้ลบ) ควรจะแสดงเป็น-1.#INF- ฉันยังไม่ได้ยืนยันตัวนี้ NaN (ไม่ใช่ตัวเลข) แสดงเป็นจัดชิดขวา<Null>- เพื่อไม่ให้สับสนกับจัดชิดซ้าย<Null>ซึ่งหมายถึง NULL (ค่าที่หายไป): (รับค่าที่ไม่ซ้ำกันในเครื่องคิดเลขฟิลด์ไม่ได้แสดงรายการ NaN เลย) แต่ฉันไม่ได้ค้นพบวิธีเขียนแบบสอบถามคำจำกัดความของเลเยอร์เพื่อเลือกแถวตามค่าพิเศษเหล่านี้: ColumnName IS NULL จะเลือกเฉพาะค่า NULL ปกติ แต่ไม่ใช่ NaN ColumnName = 1.#INF ถูกปฏิเสธเนื่องจากมีไวยากรณ์ที่ไม่ถูกต้อง ไม่มีใครรู้วิธีการทำเช่นนี้? โค้ด C # ArcObjects สำหรับการจัดเก็บค่า 1. # INF ลงในฟิลด์ตาราง (แนวคิดพื้นฐาน): ตามที่ขอ. เนื่องจากฉันไม่ได้ทำงานต่อไปนี้ไม่ใช่รหัสจริงที่ฉันใช้และฉันไม่สามารถทดสอบได้ในตอนนี้ แต่ควรให้เอฟเฟกต์ที่แสดงในหน้าจอด้านบน: ITable table …

1
กำหนดเวอร์ชันของไฟล์ ArcGIS Layer (*. lyr) โดยทางโปรแกรม
ฉันใช้ IStorage, Microsoft Compound File Spec, ArcObjects deserialization และอื่น ๆ พยายามตรวจสอบรุ่นของไฟล์. lyr การใช้ ArcObjects ฉันสามารถรับได้ที่คุณสมบัติ Layer แหล่งข้อมูลขอบเขต ฯลฯ แต่คุณสมบัติ documentVersion ของ LayerFileClass จะรายงานกลับมา 'esriArcGISVersion10' ในไฟล์ 9.3 Layer เสมอ ILayerFile l = new LayerFileClass(); l.Open(fileName); LayerFileClass t = (LayerFileClass)l; string version = t.DocumentVersion.ToString(); ความช่วยเหลือใด ๆ ที่ชื่นชม หมายเหตุโพสต์ฟอรั่มที่คึกคักจากปี 2007

1
Arcobjects ใน Python: กำหนดอินเตอร์เฟสให้กับวัตถุที่มีรูปทรงเรขาคณิต (รูปร่าง)
ฉันพยายามใช้ ArcObject ใน Python ฉันมีปัญหากับการกำหนดอินเทอร์เฟซ (เช่น IZ.InterpolateZsBetween) ให้กับวัตถุของฉันด้วยข้อมูลเรขาคณิตรหัสคือ: from Comtypes.client import CreateObject, GetModule import arcgisscripting gp = arcgisscripting.create(9.3) gp.setproduct("ArcInfo") esriSystem = GetModule("C:/Program Files (x86)/ArcGIS/com/esriSystem.olb") esriGeometry = GetModule("C:/Program Files (x86)/ArcGIS/com/esriGeometry.olb") esriDataSourcesGDB = GetModule("C:/Program Files (x86)/ArcGIS/com/esriDataSourcesGDB.olb") esriGeoDatabase = GetModule("C:/Program Files (x86)/ArcGIS/com/esriGeoDatabase.olb") sPath ="c:/temp/test.gdb" pWSF = CreateObject(esriDataSourcesGDB.FileGDBWorkspaceFactory,\ interface=esriGeoDatabase.IWorkspaceFactory) pWS = pWSF.OpenFromFile(sPath, 0) pFWS …

4
ด้วย arcpy ฉันจะตรวจสอบคลาสความสัมพันธ์ในไฟล์ GDB (หรือฉันไม่สามารถ) ได้อย่างไร
ฉันต้องการตรวจสอบคลาสความสัมพันธ์ในไฟล์ GDB เนื่องจากผู้ใช้สคริปต์ของฉันอาจมีสิทธิ์ใช้งานระดับ ArcView เท่านั้นพวกเขาจะไม่สามารถจัดการสคีมาของคลาสคุณลักษณะ (โดยเฉพาะเพื่อเพิ่มฟิลด์) ที่อยู่ในพื้นที่ทำงานที่มีคลาสความสัมพันธ์ ฉันจะตรวจสอบการมีอยู่ของคลาสความสัมพันธ์เพื่อให้ฉันสามารถจัดทำเอกสารพวกเขาหลีกเลี่ยงพวกเขาเป็นโปรแกรมและอนุญาตให้สคริปต์เพื่อดำเนินการต่อ

4
SHAPE_Length คำนึงถึงค่าระดับความสูงของบัญชีหรือไม่
ที่ไม่Shape_Lengthแอตทริบิวต์คำนึงถึงระดับความสูง? ตัวอย่างเช่นถ้าฉันมี 3 จุด: A, BและC A.X = 10 A.Y = 10 A.Z = 10 B.X = 10 B.Y = 10 B.Z = 50 C.X = 0 C.Y = 0 C.Z = 10 แล้วฉันจะสร้างสองบรรทัด: และL1L2 L1.fromPoint = A L1.toPoint = C L2.fromPoint = B L2.toPoint = C สิ่งที่ฉันสังเกตในผลก็คือว่าSHAPE_Lengthแอตทริบิวต์จะเหมือนกันสำหรับทั้งสองและL1 L2ฉันได้ตรวจสอบแล้วว่าคะแนนและ polylines …

2
Add-in ArcGIS 10: การจัดการข้อยกเว้นระดับบนสุด
Add-in ArcGIS 10 ที่ฉันกำลังใช้งานนั้นค่อนข้างง่าย - เพียงแค่การควบคุมเครื่องมือและหน้าต่างที่สามารถเชื่อมต่อได้ ฉันกำลังจัดการข้อยกเว้นเฉพาะที่ฉันคาดว่าจะเกิดขึ้นที่แหล่งที่มาและขว้างทุกอย่างอื่น แต่วิธีปฏิบัติที่ดีที่สุดสำหรับการจัดการข้อยกเว้นที่ไม่คาดคิดเหล่านั้นใน Add-in Framework คืออะไร ขณะนี้ฉันเพิ่งทำcatch (System.Exception ex)และแสดงใน MessageBox ในทุกวิธีที่ไม่มีวิธีระดับสูงกว่าที่ฉันสามารถจัดการได้ แต่ดูเหมือนจะไม่เป็นแนวปฏิบัติที่ดีที่สุด (และแน่นอน FxCop กำลังส่งเสียงครวญคราง เกี่ยวกับมัน). มีสิ่งอำนวยความสะดวกใด ๆ ในส่วนเสริมของ ArcGIS 10 สำหรับตัวจัดการข้อยกเว้นระดับบนสุดที่จะต้องถูกยกตัวอย่างเช่นไปที่Application.ThreadExceptionหรือAppDomain.UnhandledExceptionเหตุการณ์? การเห็นว่าเป็น Add-in เป็นเพียงไลบรารีคลาสและไม่ใช่แอปพลิเคชันที่ไม่สามารถเข้าถึงรหัสเริ่มต้นของแอปพลิเคชันพื้นฐาน (จากสิ่งที่ฉันรวบรวมเหตุการณ์เหล่านั้นต้องได้รับการติดตั้งแต่ต้นในกระบวนการเริ่มต้น) ฉันจะถามว่าผู้เชี่ยวชาญคนใดมีคำแนะนำใด ๆ เกี่ยวกับวิธีจัดการข้อยกเว้น "ที่ไม่คาดคิด" ใน Add-in

1
ArcMap Addin - เพิ่มการเชื่อมต่อการทำงานร่วมกันโดยทางโปรแกรม
ขณะนี้ฉันกำลังสร้าง Add-in สำหรับ ArcMap - ArcView โดยใช้. Net framework ผู้ใช้ ArcMap และ Add-in ควรเข้าถึงข้อมูลที่เผยแพร่จากบริการ WFS ฉันรู้ว่ามันเป็นไปได้ที่จะเพิ่มด้วยตนเองWFSบริการผ่านทางอินเตอร์เฟซการเชื่อมต่อการทำงานร่วมกัน แต่เป็นไปได้หรือไม่ที่จะเพิ่มบริการ WFS เหล่านี้โดยทางโปรแกรม? (มีโอกาส - ผู้ใช้ของฉันจะพบว่ามันยากที่จะเพิ่มด้วยตนเอง) และถ้าเป็นเช่นนั้นจะทำอย่างไร? ฉันไม่พบข้อมูลใด ๆ ในเรื่องนี้

2
นามสกุล ArcMap 9.3 กับ 10
ฉันได้อัปเดตส่วนขยาย ArcMap ของเราให้ทำงานกับ ArcMap 10 - ส่วนใหญ่แค่เปลี่ยนการอ้างอิงจาก ESRI.ArcGIS.ADF เป็น ESRI.ArcGIS.ADF.Local และตั้งค่าคุณสมบัติ 'รุ่นเฉพาะ' สำหรับการอ้างอิงทั้งหมดเป็นเท็จและยังใช้ใหม่ ESRIRegAsm.exe เพื่อลงทะเบียน ดังนั้นฉันสงสัยว่าตอนนี้ถ้าฉันสามารถสร้างส่วนขยายเดียวที่จะทำงานกับทั้ง 9.3.1 และ 10.0 หรือเราต้องการไบนารีแยกต่างหากสำหรับแต่ละผลิตภัณฑ์หรือไม่

3
สร้างปุ่มใน ArcMap เพื่อรันโปรแกรม Python หรือไม่?
ฉันมีสคริปต์ที่ฉันต้องการเรียกใช้ภายใน ArcMap เมื่อมีการคลิกปุ่มในแถบเครื่องมือและจนถึงตอนนี้ฉันสามารถทำให้สคริปต์เป็นเครื่องมือสคริปต์ได้เท่านั้น ฉันต้องการให้มันรันเป็นคำสั่งไม่ใช่เครื่องมือการประมวลผลทางภูมิศาสตร์ การเรียกใช้เป็นเครื่องมือประมวลผลเชิงภูมิศาสตร์ใช้เวลานานกว่าเมื่อเรียกใช้รหัสเดียวกันจากหน้าต่างบรรทัดคำสั่ง ฉันเพิ่งเริ่มค้นหา ArcObjects แต่ฉันต้องการเริ่มใช้งานหากเป็นสิ่งที่ฉันจะต้องใช้ หากใครมีรหัสตัวอย่างหรือแหล่งข้อมูลสำหรับการสร้างปุ่มมันจะยอดเยี่ยม

2
วิธีทดสอบยูนิต ArcObjects ด้วยการเยาะเย้ย
ฉันเป็นแฟนตัวยงของการทดสอบหน่วย แต่ยังใช้ FGDB เพื่อคว้าคุณสมบัติสำหรับการทดสอบหน่วยเมื่อใช้งานกรอบ ArcObjects มีใครประสบความสำเร็จในการใช้การเยาะเย้ยคิดเช่น IFeature, IGeometry, IWorkspace ฯลฯ หรือไม่ถ้าใช่ฉันชอบที่จะดูตัวอย่างของวิธีการที่คุณทำ ฉันไม่สนใจว่าคุณใช้กรอบการเยาะเย้ยอะไรเพียงแค่ดูว่าคุณทำมันอย่างไรจะได้รับการชื่นชมอย่างมาก ปัญหาที่ฉันเห็นคือคุณต้องฝืนและเป็นลูกเต๋าระหว่างอินเตอร์เฟสจำนวนมากบนวัตถุเดียวกันว่าค่าใช้จ่ายในการสร้างวัตถุจำลองที่เป็นตัวแทนนั้นใหญ่มาก

3
ArcGIS คำนวณระยะห่างระหว่างจุดสองจุดด้วยการฉายภาพที่ไม่เท่ากันได้อย่างไร
นี่เป็นคำถามที่ตามมากับคำถามก่อนหน้าของฉันคุณช่วยแนะนำข้อความเบื้องต้นเกี่ยวกับการคาดคะเนระบบพิกัดได้ไหม? สมมติว่าฉันทำงานกับเครื่องฉายแผนที่ CH1903 ซึ่งสำหรับทั้งหมดที่ฉันรู้นั้นเป็นไปในทิศทางเดียวกัน แต่ไม่เท่ากัน ความหมายมุม (รูปร่าง) ได้รับการอนุรักษ์ แต่ไม่ใช่พื้นที่ระยะทางหรือมาตราส่วน (อย่างน้อยสิ่งเหล่านี้ยังไม่ได้รับการรักษาอย่างแน่นอน ) จนถึงตอนนี้ดีมาก ฉันสงสัยว่าการคำนวณแบบใดที่ ArcGIS ดำเนินการเมื่อฉันต้องการคำนวณระยะทางระหว่างจุดสองจุด ใน ArcObjects ฉันสามารถใช้IProximityOperatorอินเตอร์เฟสดังต่อไปนี้: IPoint a = ..., b = ...; double distance = ((IProximityOperator)a).ReturnDistance(b); คำถาม:เมื่อฉันทำงานกับระบบอ้างอิงที่ไม่รักษาระยะทางอย่างแม่นยำ ArcGIS จะทำอย่างไรเมื่อฉันค้นหาระยะห่างระหว่างจุดสองจุด (ดังที่แสดงด้านบน) มันแค่ทำคณิตศาสตร์พีทาโกรัส (a 2 + b 2 = c 2 ) เพื่อให้ได้ระยะทางซึ่งหมายความว่าระยะทางที่คืนมาจะมีความแม่นยำเท่ากับที่ฉายอนุญาตหรือไม่ หรือว่าจะทำอะไรที่ซับซ้อนกว่านี้เช่นการฉายภาพในบางรูปแบบเพื่อให้ได้ระยะทางที่แม่นยำยิ่งขึ้น? ( คำถามเดียวกัน แต่โดยทั่วไปแล้ว:เมื่อมีการประมาณการรูปทรงเรขาคณิตแล้ว ArcGIS จะทำการคำนวณทั้งหมดในอวกาศแบบยุคลิดหรือไม่หรือการฉายแผนที่ที่ใช้ยังคงมีผลต่อการคำนวณระยะทางมุมพื้นที่ …

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