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

แพคเกจไซต์ที่สร้างโดย Esri เพื่อแสดงตำแหน่งทางภูมิศาสตร์ของ ArcGIS Desktop (ArcMap และ ArcGIS Pro) การประมวลผลการทำแผนที่การทำแผนที่และ Python

6
วิธีการสุ่มเซต X% ของคะแนนที่เลือก
มีวิธีการใดบ้างใน ArcGIS 10.2 เพื่อเลือกคะแนนย่อยแบบสุ่ม ตัวอย่างเช่นในภาพหน้าจอที่แนบมาฉันสนใจที่จะเก็บคะแนนที่เลือกไว้ 20% และลบที่เหลือ

2
กำลังรีเฟรชโมดูลที่อิมพอร์ตในกล่องเครื่องมือ ArcGIS Python?
เมื่อใช้กล่องเครื่องมือหลาม (.pyt) ใน ArcMap โดยทั่วไปแล้วฉันจะทำตามรูปแบบที่ไฟล์. pyt นั้นเป็นตัวหุ้มในการรวบรวมอาร์กิวเมนต์อินพุตและกำหนดเครื่องมือเอง รหัสสนับสนุนจะถูกเก็บไว้ในโมดูลที่ทดสอบแยกหน่วยได้ ตัวอย่าง: import supporting_module class MyTool(object): ... def execute(self, parameters, messages): """The source code of the tool.""" some_input = parameters[0].valueAsText some_output = parameters[1].valueAsText supporting_module.do_something(some_input, some_output) arcpy.SetParameter(2, some_output) มันใช้งานได้ดีมาก แต่ฉันพบเจอปัญหาที่น่าผิดหวังอย่างหนึ่งระหว่างการพัฒนา คลิกขวา -> รีเฟรชที่. pyt ใน ArcMap รีเฟรชโค้ดของไฟล์. pyt เท่านั้น มันไม่รีเฟรชโมดูลที่นำเข้าดังนั้นฉันต้องปิดและเปิด ArcMap ใหม่ทุกครั้งที่ฉันเปลี่ยนบางสิ่งที่นั่น โชคดีที่ฉันกำลังทดสอบโค้ดอย่างอิสระฉันไม่ต้องทำแบบนี้เลย แต่มันก็ยังเป็นปัญหาที่สำคัญ …

4
รวบรวม Python Addin อีกครั้งหลังจากแก้ไขสคริปต์หรือไม่
ฉันได้พัฒนา python addins สองสามตัวและฉันก็แค่สงสัยว่าอะไรคือวิธีที่ดีที่สุดในการรวบรวม Addin ใหม่ทุกครั้งที่ฉันแก้ไขสคริปต์ ปัจจุบันถ้าฉันแก้ไขสคริปต์ดูเหมือนว่าฉันต้องทำ ปิด ArcMap ไปที่โฟลเดอร์ Addin ของฉันแล้วดับเบิลคลิกไฟล์หลาม 'makeaddin' ดับเบิลคลิกที่ไฟล์ 'Python Addin รีสตาร์ท ArcMap เพื่อให้การเปลี่ยนแปลงมีผล หากฉันไม่ทำตามขั้นตอนเหล่านี้การแก้ไขจะไม่ได้รับการยอมรับ สิ่งนี้น่ารำคาญและใช้เวลานานเมื่อฉันต้องการวางสายการพิมพ์ง่ายๆที่ไหนสักแห่งหรือฉันจะทำการแก้ไขเพียงเล็กน้อยเพื่อทดสอบผลลัพธ์ มีวิธีที่ดีกว่าในการทำเช่นนี้?

3
ส่งออกเฉพาะบางคอลัมน์ไปยังไฟล์ CSV ใน ArcGIS for Desktop หรือไม่
ฉันได้เขียนสคริปต์ไพ ธ อนโดยใช้ arcpy ซึ่งแสดงคลาสของรูปหลายเหลี่ยมในฐานข้อมูลไฟล์ ฉันได้เพิ่มฟังก์ชั่นเพื่อส่งออกคุณสมบัติไปยังไฟล์ CSV แยกต่างหาก ฉันใช้รหัสที่ฉันพบในโพสต์นี้ซึ่งทำงานได้อย่างสมบูรณ์ อย่างไรก็ตามรหัสนั้นจะส่งออกทุกคอลัมน์ในคลาสคุณลักษณะ ฉันเพียงต้องการส่งออกเขตข้อมูลที่ไม่ได้มีรายชื่อดังต่อไปนี้: OBJECTID, หรือShapeShape_Length ไฟล์ CSV ของฉันสร้างสำเร็จและไม่ถูกต้องรวมถึงOBJECTIDหรือShape_Lengthฟิลด์ อย่างไรก็ตามShapeฟิลด์นี้เขียนลงไฟล์ ค่าตัวอย่างที่เขียนลงในฟิลด์นั้นคือ: <geoprocessing describe geometry object object at 0x28CB90A0> ฉันได้เพิ่มบรรทัดเพื่อพิมพ์ชื่อฟิลด์ตามที่วนซ้ำและแปลกใจที่Shapeไม่ได้พิมพ์ออกมา เหมือนกับว่า ArcGIS ซ่อนหรือให้ชื่ออื่น รหัสสำหรับฟังก์ชั่นของฉันอยู่ด้านล่าง: def exportToTable(): """ Exports the final outputs to a CSV File. """ # Create path to CSV File (note the …

1
เข้าใจว่าทำไมเครื่องมือ ArcPy Cost Path Analysis เร็วกว่า ArcObjects [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน3 ปีที่ผ่านมา แม้ว่าฉันจะใช้หลามเพื่อสร้างสคริปต์ / บริการประมวลผลเชิงภูมิศาสตร์ แต่ฉันก็รู้สึกว่าการใช้ ArcObjects เพื่อทำงานที่เทียบเท่าจะมีประสิทธิภาพที่ดีขึ้น ฉันได้โพสต์ArcGIS Server GP Service แล้ว - RasterIO.dll crashing ArcSOC.exeและArcGIS Geoprocessing Script ทำงานได้ดีในเดสก์ท็อป แต่ล่มเป็น Geoprocessing Service? ในช่วงสองสามวันที่ผ่านมาเกี่ยวกับการรับสคริปต์ประมวลผลทางภูมิศาสตร์ที่ใช้เครื่องมือวิเคราะห์เชิงพื้นที่เพื่อทำงานเป็นบริการประมวลผลเชิงภูมิศาสตร์ กำหนดเส้นตายของฉันใกล้เข้ามาอย่างรวดเร็วดังนั้นฉันจึงตัดสินใจที่จะใช้เส้นทาง SOE เพื่อให้สามารถใช้งานได้ตามที่ต้องการ การรับการวิเคราะห์เส้นทางต้นทุนใน ArcObjects นั้นค่อนข้างตรงไปตรงมาโดยใช้. NET ESRI.ArcGISSpatialAnalyst.RasterDistanceOpClassโดยเฉพาะวิธีการ CostDistanceFull () และ CostPath () ตัวอย่างโค้ดของวิธีการที่ฉันทำสิ่งต่าง ๆ : หลาม # Get Cost Path …

2
โทรหา arcpy / python จาก. NET หรือไม่
มีตัวอย่างที่แสดงว่า python สามารถรวมเข้ากับ. NET ArcGIS Addin หรือนามสกุลได้หรือไม่? ฉันมีชุดของสคริปต์หลามที่ฉันต้องการโทรจากเหตุการณ์ฟอร์ม (เช่นการคลิกปุ่ม) ใน. NET ฉันต้องการตั้งค่าตัวแปรในสคริปต์จากรูปแบบ. NET ฉันควรกัดสัญลักษณ์แสดงหัวข้อย่อยและเขียนสคริปต์เหล่านี้ใหม่ใน. NET หรือมีวิธีที่ง่ายต่อการตัดโค้ดไพ ธ อนหรือไม่?

3
การเลือกรูปหลายเหลี่ยม ArcSDE ทีละจุดใน ArcGIS Desktop โดยใช้ ArcPy?
ฉันคิดอยู่เสมอว่าจะต้องมีบางอย่างหายไป แต่ดูเหมือนว่าจะไม่มีเครื่องมือใน ArcGIS 10 ที่จะเลือกคุณสมบัติ (โดยเฉพาะรูปหลายเหลี่ยม) จากเลเยอร์ที่ตำแหน่ง (X, Y) ผ่าน ArcPy พารามิเตอร์สำหรับเครื่องมือเช่นนี้จะเป็นชื่อเลเยอร์และตำแหน่ง XY เท่านั้น ในขณะนี้ฉันแก้ไขปัญหานี้โดยการสร้างคุณลักษณะระดับจุดที่มีจุดและดำเนินการ SelectLayerByLocation บนมัน อย่างไรก็ตามเมื่อคลาสคุณลักษณะรูปหลายเหลี่ยมอยู่ใน Oracle (เข้าถึงผ่าน ArcSDE 9.x) และมี 3.5 ล้านรูปหลายเหลี่ยมเวลาที่ใช้ในการเลือกอาจมากกว่า 5 นาทีเมื่อฉันคิดว่าสองหรือสอง (ด้วยรหัสน้อยกว่า) จะเป็น เหมาะสมกว่า คลาสคุณลักษณะมีดัชนีเชิงพื้นที่และฉันได้ลองใช้ arcpy.env.extent (ซึ่ง SelectLayerByLocation ดูเหมือนจะไม่สนใจ) เพื่อ จำกัด การเข้าถึงพื้นที่ทางภูมิศาสตร์ แต่ประสิทธิภาพยังคงแย่มาก มีวิธีที่รวดเร็วกว่าในการทำเช่นนี้โดยใช้ ArcGIS Desktop 10 และ ArcPy?

1
แยกรูปหลายเหลี่ยมที่จุดกึ่งกลางโดยใช้ ArcPy?
ฉันพยายามแยกรูปหลายเหลี่ยมประมาณ 4000 รูปหลายเหลี่ยมที่จุดกึ่งกลางของพวกเขาตั้งฉากกับแกนที่ยาวที่สุดของพวกเขา (เช่นข้ามความกว้างที่จุดกึ่งกลาง) ดังในแผนภาพด้านล่าง เป็นการดีที่ฉันต้องการทำสิ่งนี้โดยอัตโนมัติและหลีกเลี่ยงการแบ่งแต่ละรูปหลายเหลี่ยมด้วยตนเอง ฉันได้แยกจุดกึ่งกลางของรูปหลายเหลี่ยมด้วยการแปลงเส้นที่ยาวที่สุดที่สามารถวาดได้ในแต่ละอันฉันแค่ต้องกำหนดวิธีในการวาดเส้นความกว้างข้ามจุดนี้โดยอัตโนมัติ รูปหลายเหลี่ยมแตกต่างกันไปในความกว้างของพวกเขาและด้วยเหตุนี้เครื่องมือที่แบ่งรูปหลายเหลี่ยมโดยการกำหนดเส้นความกว้างที่มีความยาวที่แน่นอนนั้นไม่ใช่สิ่งที่ฉันกำลังมองหา ความคิดใด ๆ

2
เลือกระเบียนที่เกี่ยวข้องอย่างมีประสิทธิภาพโดยใช้ ArcPy?
ด้านล่างเป็นรหัสที่ฉันใช้เพื่อทำซ้ำปุ่ม "ตารางที่เกี่ยวข้อง" ใน ArcMap ใน ArcMap ปุ่มนั้นจะเลือกคุณสมบัติในคลาสหรือตารางคุณลักษณะหนึ่งโดยยึดตามการเลือกคุณสมบัติในคลาสหรือตารางคุณสมบัติอื่นที่เกี่ยวข้อง ใน ArcMap ฉันสามารถใช้ปุ่มนั้นเพื่อ "ดัน" การเลือกของฉันไปยังตารางที่เกี่ยวข้องในไม่กี่วินาที ฉันไม่สามารถค้นหาสิ่งใด ๆ ที่อยู่ใน arcpy ที่ทำซ้ำปุ่มดังนั้นฉันจึงใช้ลูปซ้อนกันเพื่อทำงานเดียวกัน รหัสด้านล่างวนผ่านตารางของ "การรักษา" สำหรับการรักษาแต่ละครั้งมันจะวนรอบรายการของ "ต้นไม้" เมื่อพบคู่ที่ตรงกันระหว่างฟิลด์ ID ของการรักษาและต้นไม้การเลือกจะเกิดขึ้นในเลเยอร์ต้นไม้ เมื่อพบการจับคู่สำหรับการรักษารหัสจะไม่ดำเนินการค้นหาเลเยอร์ต้นไม้สำหรับการแข่งขันเพิ่มเติม มันจะกลับไปที่ตารางการรักษาเลือกการรักษาถัดไปและค้นหาอีกครั้งผ่านคลาสคุณลักษณะทรี โค้ดนั้นใช้งานได้ดี แต่มันช้ามาก "ตารางการรักษา" ในกรณีนี้มี 16,000 บันทึก คลาสคุณลักษณะ "tree" มี 60,000 รายการ มีวิธีอื่นที่มีประสิทธิภาพมากกว่าในการสร้างสิ่งที่ ESRI ทำเมื่อผลักการเลือกจากตารางหนึ่งไปยังอีกตารางหนึ่งหรือไม่ ฉันควรสร้างดัชนีสำหรับตารางหรือไม่ หมายเหตุ: ข้อมูลนี้ถูกเก็บไว้ใน SDE # Create search cursor to loop …

5
ทำงานเป็นทีม Python Development Project กับ ArcGIS หรือไม่?
เรามีโครงการพัฒนาใน Python (ArcGIS 10) โครงการนี้เกี่ยวข้องกับการผสมผสานของกล่องเครื่องมือแม่แบบแผนที่ไฟล์เลเยอร์แม่แบบฐานข้อมูลไฟล์ (ทำหน้าที่เป็นแม่แบบที่นำเข้าสู่แผนที่โดยสคริปต์) และสิ่งอื่น ๆ เราใช้ Eclipse เป็น source editor และ SVN ของเราเป็น Source Code Repository แม้ว่าเราจะมีปัญหาในการเก็บไฟล์ทั้งหมด (ไม่ใช่ไฟล์ py) ในโครงการที่ทุกคนทำข้อมูลให้ตรงกัน กล่องเครื่องมือได้รับความสับสนเป็นประจำโดยหลาย ๆ คนที่แก้ไขกล่องเครื่องมือจากนั้นไฟล์เทมเพลตจะได้รับการปรับและไม่ได้รับการอัปเดตสำหรับผู้อื่นเนื่องจากพวกเขาไม่ได้เช็คอิน ผู้คนในองค์กรที่มีนักพัฒนาหลามมากกว่าหนึ่งคนในโครงการกล่องเครื่องมือของ บริษัท ทำอย่างไรจึงมั่นใจได้ว่าโครงการและไฟล์ต่าง ๆ ทั้งหมดได้รับการกำหนดเวอร์ชันและจัดการอย่างถูกต้อง หรือเป็นกรณีผ่านทุกอย่างไปสู่ ​​Eclipse (รวมถึงแม่แบบเลเยอร์และ GDB ที่ใช้โดยสคริปต์) ในโครงการและหวังว่าผู้คนจะตรวจสอบไฟล์อย่างถูกต้อง?

1
การซ่อมแหล่งข้อมูลใน MXD หลายเครื่องโดยใช้ ArcPy?
ฉันมีประมาณ 50 mxd ด้วยเลเยอร์ที่ชำรุดทั้งหมดที่ฉันได้ผ่านและรีเซ็ตด้วยตนเอง ข้อมูลถูกย้ายจากคอมพิวเตอร์เครื่องอื่นและโครงสร้างของโฟลเดอร์เปลี่ยนไปดังนั้นจึงไม่ใช่เพียงแค่กระบวนการเปลี่ยนแปลงอย่างง่าย (ตัวอย่าง): "F: \ Data \ Rivers.shp" ถึง "C: \ Data \ Rivers.shp" มันเหมือน: "F: \ Data \ Rivers.shp" ถึง C: \ Data \ Park \ Water \ Rivers.shp และอื่น ๆ สำหรับข้อมูลทุกชนิด (ขอบเขตปก veg ถนน ฯลฯ ) แต่ละรายการในโฟลเดอร์ย่อยของตนเอง ฉันต้องการสร้างสคริปต์ที่ฉันสามารถเรียกใช้ซ้ำ ๆ เมื่อใดก็ตามที่ฉันเปิดหนึ่งใน mxd เหล่านี้ที่จะซ่อมแซมเลเยอร์ทั่วไปที่พบในส่วนใหญ่ของ mxd ของฉันและจากนั้นฉันสามารถซ่อมแซมส่วนที่เหลือด้วยตนเอง วิธีที่สามารถบันทึกอย่างน้อยตัวเองบางเวลา …

5
ค้นหาเพื่อนบ้านลำดับที่ 1 ได้อย่างมีประสิทธิภาพ 200k polygons
สำหรับกลุ่มบล็อกการสำรวจสำมะโนประชากร 208,781 ทุกกลุ่มฉันต้องการดึงข้อมูลรหัสประจำตัว FIPS ของเพื่อนบ้านลำดับที่ 1 ทั้งหมด ฉันมีการดาวน์โหลดขอบเขตไทเกอร์ทั้งหมดและรวมเป็น 1GB เชพไฟล์เดียว ฉันลองใช้สคริปต์ ArcPython ที่ใช้ SelectLayerByLocation สำหรับ BOUNDARY_TOUCHES ที่แกนกลาง แต่ใช้เวลามากกว่า 1 วินาทีสำหรับแต่ละกลุ่มบล็อกซึ่งช้ากว่าที่ฉันต้องการ นี่คือแม้หลังจากที่ฉัน จำกัด การค้นหา SelectLayerByLocation เพื่อบล็อกกลุ่มในสถานะเดียวกัน ฉันพบสคริปต์นี้แต่ยังใช้ SelectLayerByLocation ภายในเพื่อให้ไม่เร็วขึ้น การแก้ปัญหาไม่จำเป็นต้องเป็นแบบ Arc - ฉันเปิดให้แพคเกจอื่น ๆ แม้ว่าฉันจะเขียนโค้ดด้วย Python ได้สบาย

5
การเปลี่ยนคลาสคุณลักษณะและชื่อแทนฟิลด์เป็นกลุ่มโดยใช้ ArcPy?
ฉันมี FCs มากกว่าหนึ่งร้อยแต่ละตัวมี 10 หรือ 20 คุณลักษณะเพื่อเพิ่มหรือเปลี่ยนนามแฝงปีละสองครั้งขึ้นไป ไม่จำเป็นต้องพูดแบบนี้ไม่ใช่สิ่งที่ฉันจะทำในสิ่งที่ไม่ดี ฉันจะทำให้กระบวนการนี้เป็นอัตโนมัติได้อย่างไร แนะนำให้ใช้โซลูชัน Python แต่จะใช้ทุกอย่างที่ทำงานได้ ฉันมีสิทธิ์เข้าถึง Arcgis 9.3.1 และ 10 (ระดับสิทธิ์การใช้งาน ArcInfo)

2
การเรียกใช้สคริปต์ Python ใน Task Scheduler— สคริปต์จะไม่ทำงาน
ฉันมีสคริปต์ที่ฉันต้องการเรียกใช้เป็นประจำทุกเดือนโดยไม่ต้องเปิดและใช้งาน ฉันได้อ้างถึงทุกหน้าเว็บที่ฉันสามารถหาได้จาก Windows Task Scheduler และปฏิบัติตามคำแนะนำของพวกเขา อย่างไรก็ตามการเรียกใช้สคริปต์จาก Task Scheduler จะเปิดสคริปต์ใน Python เท่านั้นและไม่เรียกใช้ ในหน้าต่าง Run Task Scheduler ฉันได้ลองป้อนทั้งพา ธ ไปยังสคริปต์เพียงอย่างเดียวและพา ธ ไปยังสคริปต์ด้วยพา ธ ไปยังโปรแกรม Python ของฉัน ฉันได้ลองป้อนเส้นทางไปยังโปรแกรม Python ของฉันเป็นสคริปต์ด้วยสคริปต์ของฉันเป็นอาร์กิวเมนต์ตามที่แนะนำในโพสต์บล็อกนี้ สคริปต์ของฉันเขียนโค้ดยากดังนั้นฉันไม่คิดว่าฉันจะต้องเพิ่มอาร์กิวเมนต์ใด ๆ ฉันขาดอะไรที่ชัดเจนหรือไม่ ฉันประสบปัญหาเพราะฉันใช้เส้นทางไปยังโปรแกรม Python ไม่ใช่บรรทัดคำสั่ง Python นั่นคือฉันใช้ "C: \ Python27 \ ArcGIS10.1 \ Lib \ site-packages \ pythonwin \ Pythonwin.exe" เมื่อฉันต้องการใช้ …

4
แยกจำนวนจุดยอดในแต่ละรูปหลายเหลี่ยม?
ฉันมี ArcGIS Desktop 10.2 และความท้าทายของฉันคือวิธีการแยกจำนวนจุดยอดในแต่ละรูปหลายเหลี่ยมสำหรับคุณสมบัติทั้งหมดดังนี้: ฉันมีพัสดุจำนวนมากในคลาสคุณลักษณะของฉันและฉันต้องการแยกจำนวนจุดยอดสำหรับคุณสมบัติทั้งหมดแยกจากนั้นฉันต้องการแสดงพิกัด XY สำหรับจุดยอดทั้งหมด สำหรับข้อมูลเพิ่มเติมฉันแค่ต้องการแปลงจุดยอดสำหรับแต่ละรูปหลายเหลี่ยมและแสดงหมายเลขของแต่ละจุดยอดที่จ้องมองจาก 1 หมายเลขดังนั้นถ้าฉันมีรูปหลายเหลี่ยมและมีจุดยอด 4 จุดต้องการแปลงรูปหลายเหลี่ยมเป็นจุดยอดฉันแสดงจำนวนจุดยอดเช่นนี้ (1,2,3,4,5) จากนั้นแสดง xy สำหรับแต่ละจุดยอดฉันคิดว่าความท้าทายที่แท้จริงเป็นวิธีการแปลงรูปหลายเหลี่ยมทั้งหมดไปยังจุดยอดและทำให้จุดยอดแต่ละจุดเริ่มต้นจาก 1 หมายเลข

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