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

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

1
การแยกสิ่งปลูกสร้างด้วยข้อมูล LiDAR (ปรับปรุงกระบวนการ)
ฉันมีขั้นตอนต่อไปนี้สำหรับการสร้างโครงร่าง / รอยเท้าอาคารจากไฟล์ Las โดยอัตโนมัติและสงสัยว่าใครสามารถช่วยปรับปรุงหรือมีคำแนะนำสำหรับกระบวนการอื่น ๆ ที่จะใช้? การทดลอง: A. ArcGIS - เครื่องมือ Lidardataset : ในขณะที่คุณสามารถเห็นเพียงแค่จุดระดับอาคารคุณไม่สามารถสร้างรูปหลายเหลี่ยมได้โดยอัตโนมัติ มีรูปทรงเรขาคณิตที่มีขอบเขตต่ำสุด แต่เมื่อดูที่ชุดข้อมูลโดยรวมคุณจะต้องเลือกจุดสำหรับแต่ละอาคารด้วยตนเอง B. เครื่องมือวิเคราะห์ไลโดร์ภายนอกโดย Overwatch การสกัดอาคารเป็นหน้าที่หลัก http://www.featureanalyst.com/lidar_analyst.htm (ไม่ทำงานอีกต่อไป - 28 กรกฎาคม 2014) ใช้เวลาประมาณ 8 นาทีในการสร้างโลกเปลือย (จำเป็น) แล้วจึงแยกสิ่งปลูกสร้างออก มันให้ผลลัพธ์ที่ดีที่สุดเท่าที่เคยมีมาแม้กระทั่งการจับสิ่งก่อสร้างใต้ต้นไม้ (1 & 4) สิ่งนี้ไม่ได้ดูแม้แต่การสอนเพราะมันเป็นอินเทอร์เฟซที่ใช้งานง่ายมาก ปัญหาบางอย่างมันพลาดทางเดินที่ครอบคลุม (3) แต่มีการเปิดหลังคาทิ้งไว้อย่างถูกต้อง (2) C. LASTOOLS -ใช้ lasmerge เพื่อรวม 4 กระเบื้องที่เกี่ยวข้องจากนั้น lasclip เพื่อแยกโซนของ …

2
วิธีการปรับการประมวลผลแบบมัลติคอร์ให้เหมาะสมใน ArcGIS
ฉันสนใจที่จะเรียนรู้วิธีการใช้ประโยชน์จากพลังการประมวลผลแบบมัลติคอร์ที่มีอยู่ในคอมพิวเตอร์เดสก์ท็อป อาร์คระบุว่าพื้นหลังการประมวลผลทางภูมิศาสตร์ช่วยให้ผู้ใช้สามารถใช้หลายคอร์อย่างไรก็ตามงานจำเป็นต้องรอให้งานก่อนหน้าเสร็จสิ้น มีใครพัฒนาวิธีการประมวลผลทางภูมิศาสตร์แบบขนานหรือแบบมัลติเธรดใน Arc / Python หรือไม่? มีปัญหาคอขวดของฮาร์ดแวร์ที่ป้องกันการประมวลผลแบบมัลติคอร์ในแต่ละงานหรือไม่? ฉันพบตัวอย่างที่น่าสนใจใน Stackoverflow ที่ดึงดูดความสนใจของฉันแม้ว่าจะไม่ใช่ตัวอย่างของกระบวนการทางภูมิศาสตร์: from multiprocessing import Pool import numpy numToFactor = 976 def isFactor(x): result = None div = (numToFactor / x) if div*x == numToFactor: result = (x,div) return result if __name__ == '__main__': pool = Pool(processes=4) possibleFactors = range(1,int(numpy.floor(numpy.sqrt(numToFactor)))+1) print …

1
ArcPy เพิ่มวงแหวนภายในที่ผิดพลาดเมื่อเขียนเรขาคณิตหลายส่วนที่อยู่ติดกัน?
ฉันพบปัญหาแปลก ๆ เมื่อใช้ Arcpy เพื่อเขียนเรขาคณิตหลายส่วนไปยังรูปร่างไฟล์ ฉันใช้ InsertCursor เพื่อสร้างคุณสมบัติหลายส่วนจากรายการของชิ้นส่วนแต่ละรายการด้วยรายการของคู่จุดสุดยอด ฉันเข้าใจว่าเมื่อคุณลักษณะนี้สร้างขึ้นชิ้นส่วนที่อยู่ติดกันจะถูก "ละลาย" โดยอัตโนมัติเป็นส่วนเดียว แต่ด้วยเหตุผลบางอย่างนี่เป็นการสร้างวงแหวนภายในแม้ว่าฉันไม่ได้รวม Null arcpy.point () ในอาเรย์ตามปกติจะต้องเพิ่มวงแหวนภายใน นี่คือการสร้างภาพ: ไม่มีใครมีความคิดใด ๆ ว่าทำไมสิ่งนี้จึงเกิดขึ้นและ / หรือวิธีการแก้ไขปัญหานี้หรือไม่? สำหรับการอ้างอิงนี่คือรหัสของฉัน: import arcpy arcpy.CreateFeatureclass_management(r"C:\temp", "test.shp", "POLYGON") OutputCursor = arcpy.InsertCursor(r"C:\temp\test.shp") # List of parts, each with list of vertex pairs ListOfParts = [] ListOfParts.append([[0,1],[1,1],[1,0],[0,0],[0,1]]) ListOfParts.append([[0,2],[1,2],[1,1],[0,1],[0,2]]) ListOfParts.append([[0,3],[1,3],[1,2],[0,2],[0,3]]) ListOfParts.append([[1,1],[2,1],[2,0],[1,0],[1,1]]) ListOfParts.append([[1,2],[2,2],[2,1],[1,1],[1,2]]) ListOfParts.append([[1,3],[2,3],[2,2],[1,2],[1,3]]) …

5
Batch Clipping ในเดสก์ท็อป ArcGIS โดยใช้ ArcPy?
ฉันได้พบคำถามที่คล้ายกันสองสามข้อสำหรับ ArcGIS รุ่นเก่า แต่ไม่พบคำตอบที่เหมาะสมสำหรับ ArcGIS 10 ฉันมีรูปหลายเหลี่ยมสองรูปที่ครอบคลุมพื้นที่ขนาดใหญ่ (เช่นทั้งรัฐ / จังหวัด) Shapefile แรกแสดงถึงการครอบคลุมที่ดินสำหรับทั้งรัฐและที่สองหมายถึงแหล่งต้นน้ำ 50 แห่ง ผมอยากจะคลิป shapefile ปกคลุมดินบนพื้นฐานของแต่ละลุ่มน้ำ (แต่ละคนมีชื่อไม่ซ้ำกันเก็บไว้ในสนาม) ฉันต้องการบันทึกไฟล์ที่ตัดออก (หนึ่งไฟล์สำหรับแต่ละแหล่งต้นน้ำ 50 แห่ง) โดยใช้ชื่อพื้นที่ต้นน้ำ ระบุว่ามี 50 คลิปที่จะดำเนินการกระบวนการนี้เป็นตัวเลือกที่ยอดเยี่ยมสำหรับการประมวลผลแบทช์

5
รวบรวมสคริปต์ Python (เป็น. exe) ที่ใช้เครื่องมือ ArcGIS Geoprocessing?
ฉันได้รับการเข้ารหัสกับ Python มาหลายเดือนแล้วและได้พัฒนาสคริปต์ที่ซับซ้อนพอสมควรสำหรับงานการประมวลผลทางภูมิศาสตร์เป็นหลัก ที่ถูกกล่าวว่าฉันยังคงเรียนรู้มากขณะที่ฉันมาจากพื้นหลัง SQL / VBA / VBScript ฉันรู้ว่ารหัสที่คอมไพล์ทำงานได้เร็วกว่าโค้ดที่ต้องใช้ตัวแปลภาษาดังนั้นฉันจึงสนใจที่จะรวบรวมสคริปต์ Python สำหรับการประมวลผลทางภูมิศาสตร์กับไฟล์. EXE สำหรับการทำงานกับข้อมูลขนาดใหญ่ เป็นไปได้ไหม ถ้าเป็นวิธีที่ดีที่สุดในการรวบรวมสคริปต์ Python (.py) ที่นำเข้าโมดูล arcgisscripting หรือ arcpy คืออะไร ฉันใช้เวลาสองสามนาทีเพื่อค้นหาสิ่งที่ฉันต้องการจะทำและการค้นหาส่งคืนบทความนี้ให้คนอื่น ๆ : http://www.ehow.com/how_2091641_compile-python-code.html คอมไพเลอร์ดูเหมือนจะใช้งานได้ แต่เมื่อทำการประมวลผลไฟล์. EXE ที่เกิดขึ้นมันทำให้เกิดข้อผิดพลาดที่ซ่อนเร้นว่าบางไฟล์ไม่มี สคริปต์ Python ทำงานในสิ่งที่ดูเหมือนจะดีพอสมควรจากบรรทัดคำสั่ง แต่ฉันสงสัยว่าฉันจะเห็นการปรับปรุงเล็กน้อยถ้าฉันสามารถรวบรวมไฟล์. py อีกครั้งฉันกำลังทำงานกับชุดข้อมูลขนาดใหญ่ที่ใช้เวลาในการประมวลผลประมาณ 20 ชั่วโมง (การแยกแหล่งต้นกำเนิดจากแหล่งตัวอย่างคุณภาพน้ำที่ป้อน) ฉันจะทำทุกอย่างที่จะทำให้ดีขึ้น สคริปต์รันเร็วกว่า 10% นอก ArcGIS จากบรรทัดคำสั่งโดยใช้ชุดทดสอบของเว็บไซต์เทียบกับการตั้งค่าสคริปต์เป็นเครื่องมือสคริปต์ในกล่องเครื่องมือใหม่ใน ArcCatalog ฉันใช้งานสคริปต์จากบรรทัดคำสั่งโดยไม่มีอินสแตนซ์ใด ๆ ของ …

1
เล่น ArcGIS 10.0 ภายใต้ Virtualenv
ฉันกำลังทำงานกับแพคเกจ Python ที่มีส่วนผสมของเครื่องมือบรรทัดคำสั่งและเครื่องมือ ArcToolbox สำหรับการพัฒนาของ Python มันมีประโยชน์มากที่จะใช้ VirtualEnv โดยเฉพาะเมื่อทำงานกับตัวติดตั้ง มีวิธีที่จะให้ ArcMap หรือ ArcCatalog รู้จักเซสชัน VirtualEnv ปัจจุบันใน Python หรือไม่ดังนั้นเมื่อมีการเรียกใช้เครื่องมือแบบกำหนดเองจะใช้เส้นทาง VirtualEnv Python และแพ็คเกจแทนพา ธ และแพ็คเกจ Python เริ่มต้นที่ c: \ Python26 \ ArcGIS10 0.0?

3
คนเราเข้าถึง featurelayer ใน SDE ผ่าน Python ได้อย่างไร
ฉันกำลังพยายามใช้ Arcpy เพื่อเรียกใช้สคริปต์ CopyFeatures_management เพื่อให้ฉันสามารถคัดลอก featurelayer ใน SDE ฉันจะใช้อะไรกับอินพุต (และเอาท์พุทสำหรับเรื่องนั้นเนื่องจากฉันจะคัดลอกเลเยอร์กลับไปที่ SDE) เพื่อเข้าถึงเลเยอร์

2
ทำปุ่มที่เรียกว่าสคริปต์ Python เป็นคำสั่งมากกว่าเครื่องมือสคริปต์หรือไม่
ฉันเชื่อว่าใน Arc9.3 สามารถสร้างคำสั่งโดยใช้สคริปต์ VBA ในการเพิ่มคำสั่งที่กำหนดเองคุณจะไปที่การปรับแต่ง> แถบเครื่องมือ> ปรับแต่ง ... และคลิก UIControls อย่างไรก็ตาม UIControls ไม่มีอยู่ในรุ่น 10 ฉันกำลังสร้างสคริปต์แยกกันสองรายการสำหรับโครงการแผนที่หนังสือ หนึ่งสคริปต์จะบันทึกการตั้งค่าเค้าโครงลงในตารางและอีกหนึ่งสคริปต์จะอัปเดตเค้าโครงด้วยการตั้งค่าจากตารางเดียวกัน ฉันต้องการให้สคริปต์ทั้งสองนี้เป็นคำสั่งที่กำหนดให้กับปุ่มในแถบเครื่องมือ ฉันสร้างมันเป็นเครื่องมือสคริปต์ แต่เมื่อใดก็ตามที่ฉันคลิกพวกเขาจะเรียกใช้สคริปต์เป็นเครื่องมือประมวลผลทางภูมิศาสตร์ มันแสดงหน้าต่างความคืบหน้าและใช้เวลาดำเนินการนานกว่าประมาณ 10 เท่ากว่าถ้าฉันเรียกใช้รหัสในหน้าต่างบรรทัดคำสั่ง Python ฉันไม่ต้องการหน้าต่างความคืบหน้าหรือเวลาดำเนินการนานขึ้น ฉันจะสร้างมันขึ้นมาเพื่อที่สคริปต์จะไม่ถือว่าเป็น "เครื่องมือ" และแทนที่จะเป็นคำสั่งที่คล้ายกับปุ่มบันทึก

3
การใช้พารามิเตอร์ตัวแทนหลายรายการพร้อมกับ arcpy.ListFeatureClasses
ฉันรู้ว่าต้องมีวิธีการทำเช่นนี้ แต่ฉันมีปัญหาในการหาวิธีการทำเช่นนั้น ฉันต้องการสร้างรายการของฟีเจอร์คลาสเพื่อทำการดำเนินการอย่างไรก็ตามฉันต้องการให้ลิสต์นั้นมีคลาสของฟีเจอร์ที่มีตัวระบุชื่อไฟล์ที่แตกต่างกัน 2 รายการ รหัสจะมีลักษณะดังนี้: FCS = arcpy.ListFeatureClasses("X_*" OR "*_Y") ฉันรู้ว่า OR ไม่ถูกต้อง แต่มีวิธีการบางอย่างนี้โดยไม่ต้องเขียนโค้ดเพื่อทำงานกับ wildcard ตัวที่สอง ขอบคุณที่ช่วยเกาต์ฉันรู้ว่ามีวิธีการเลือกใน Select By Attributes ซึ่งอนุญาตให้ใช้สัญลักษณ์ตัวแทนหลายรายการโดยใช้คำสั่ง OR
12 arcpy  list  wildcard 

2
ทำไมสคริปต์ ArcPy จึงช้า
ฉันมีสคริปต์ arcpy ง่าย ๆ ในการอัปเดตเขตข้อมูลในรูปแบบไฟล์จุดพร้อมข้อมูลจากคุณสมบัติรูปหลายเหลี่ยมที่อยู่ภายใน ใช้เวลา 9 นาทีในการทำ 100 คะแนนใน arcpy แต่การเข้าร่วมเชิงพื้นที่ใน arcmap นั้นเกิดขึ้นทันที ฉันแน่ใจว่ามีวิธีการแก้ไขปัญหานี้อย่างรวดเร็ว ใครบางคนชี้ให้ฉันในทิศทางที่ถูกต้อง? import took 0:00:07.085000 extent took 0:00:05.991000 one pt loop took 0:00:03.780000 one pt loop took 0:00:03.850000 one pt loop took 0:00:03.791000 import datetime t1 = datetime.datetime.now() import arcpy t2 = datetime.datetime.now() print "import took …

2
ค้นหาจุดกึ่งกลางของบรรทัดโดยใช้ ArcPy หรือไม่
จุดกึ่งกลางของโพลีไลน์จะคำนวณโดยใช้กรอบงานการประมวลผลทางภูมิศาสตร์เช่นในสคริปต์ Python ได้อย่างไร polyline.centroidคุณสมบัติส่งกลับเซนทรอยด์จริงถ้ามันเป็นภายในหรือคุณลักษณะ; มิฉะนั้นจุดฉลากจะถูกส่งกลับ เซนทรอยด์นั้นหาได้ยากบนเส้นที่ไม่เป็นเส้นตรงซึ่งไร้ประโยชน์สำหรับจุดประสงค์ของฉัน เครื่องมือFeature Vertices to Pointsมีตัวเลือกจุดกึ่งกลาง แต่ต้องใช้ ArcInfo ซึ่งตอนนี้ฉันไม่มี ตัวเลือกอาจจะเพิ่มมาตรการใน polylines และสร้างเหตุการณ์เส้นทาง 50% ตามเส้น วิธีแก้ปัญหาอีกวิธีหนึ่งคือการใช้ตัวเลือกคำนวณเรขาคณิตใน ArcMap แต่ในอุดมคติฉันต้องทำให้กระบวนการนี้เป็นสคริปต์โดยอัตโนมัติ คำแนะนำที่ดีกว่า / เร็วกว่านี้? ฉันถูก จำกัด ที่ ArcGIS 10.0 (ไม่สามารถเข้าถึงใบอนุญาตระดับ ArcInfo) ในขณะนี้

1
Python Script Performance เป็นเครื่องมือ ArcGIS กับ Stand-Alone
มีใครศึกษาความแตกต่างในการใช้งานสคริปต์ Python ใน ArcToolbox กับสคริปต์แบบสแตนด์อโลนหรือไม่? ฉันต้องเขียนสคริปต์ที่รวดเร็วและสกปรกเพื่อแปลงชุดของภาพ RGB เป็นแบนด์เดียวโดยแยกแบนด์ 1 เนื่องจากการอ่านและเขียนสคริปต์แบบสแตนด์อโลนในพีซีของฉันมันประมวลผลภาพขนาดเท่ากัน 1,000 รายการในเวลาประมาณ 350 วินาที การเรียกใช้สคริปต์เดียวกันจาก ArcToolbox ใช้เวลาประมาณ 1250 วินาที import arcpy import csv from os import path arcpy.env.workspace = in_folder image_list = arcpy.ListRasters() #Create a CSV file for timing output with open(outfile, 'wb') as c: cw = csv.writer(c) cw.writerow(['tile_name', 'finish_time']) …

1
ใช้ Python เพื่อปิดใช้งานการปรับขนาดองค์ประกอบแผนที่ตามการเปลี่ยนแปลงขนาดหน้าหรือไม่
ฉันกำลังเปลี่ยนแหล่งที่มาบน MXD ในสำนักงาน differents โดยใช้ ArcPy และ ArcGIS 10.0 ดังที่สังเกตที่นี่การตั้งค่าเครื่องพิมพ์จะเปลี่ยนกลับไปเป็นเครื่องพิมพ์เริ่มต้นเมื่อส่งคำสั่ง mxd.save () การสูญเสียเครื่องพิมพ์เป็นปัญหาเล็กน้อยในกรณีของฉัน แต่จะกลายเป็นสิ่งสำคัญหากตัวเลือกการพิมพ์ "ปรับขนาดองค์ประกอบแผนที่ตามสัดส่วนการเปลี่ยนแปลงขนาดหน้า" ถูกเลือกในขณะที่เลือก "ใช้การตั้งค่ากระดาษของเครื่องพิมพ์" ภาพหน้าจอด้านล่างเป็นสถานการณ์ที่เลวร้ายที่สุดของฉันกรณีที่ดีที่สุดคือการยกเลิกการทำเครื่องหมายที่กล่องทั้งคู่ ฉันต้องการใช้ comtypes เพื่อตรวจสอบค่าของตัวเลือกนั้นและตั้งค่าเป็นเท็จ (ไม่ถูกต้อง) ก่อนบันทึก MXD - แนวคิดคือเรียกสิ่งนี้ว่าเป็นฟังก์ชันจากสคริปต์ ArcPy ที่มีอยู่ (เป้าหมายหลัก) เพื่อรักษาความปลอดภัยการตั้งค่าการพิมพ์ต่อไปฉันต้องการยกเลิกการเลือกช่อง "ใช้การตั้งค่าเครื่องพิมพ์" หากมีการทำเครื่องหมาย (เป้าหมายรอง) ใครช่วยได้บ้าง

2
การตั้งค่าหน่วยความจำในพื้นที่ทำงานใน ArcPy?
เป็นไปได้ไหมที่จะตั้งค่าenv.workspace = "in_memory"ใน ArcPy โดยใช้ทั้ง ArcGIS Pro และ ArcGIS 10.2.2 (หรือ 10.3) สิ่งที่ฉันพยายามทำคือรับเอาต์พุตของการดำเนินการsnap pour point ที่เขียนลงหน่วยความจำตรงข้ามกับดิสก์ ฉันรู้ว่าฉันสามารถเขียนลงดิสก์แล้วนำไปไว้ในหน่วยความจำได้ แต่ก็ไม่ได้ช่วยอะไร ฉันกำลังพยายามเพิ่มประสิทธิภาพชุดของงานลดการใช้การเขียนลงในสื่อทางกายภาพผลลัพธ์ของกระบวนการที่จำเป็นเพียงแค่เป็นอินพุตสำหรับกระบวนการถัดไป

1
PySAL แบ่งตามธรรมชาติจากแถว Numpy
ฉันกำลังพยายามดึงค่าตัวแบ่งตามธรรมชาติจากแรสเตอร์ด้วย Python กระบวนการที่ต้องการไป: วัตถุ Arcpyไปยัง NumPy Array (โดยใช้RasterToNumPyArray ) กับค่าการแบ่งตามธรรมชาติ (ใช้ฟังก์ชัน PySAL Natural Breaks ) import arcpy, pysal from pysal.esda.mapclassify import Natural_Breaks as nb # code to create greenIndex arcpy Raster object here greenArray = arcpy.RasterToNumPyArray(greenIndex) breaks = nb(greenArray,k=2,initial=20) รหัสนี้ส่งคืนข้อผิดพลาด "ValueError: matrix ต้องเป็น 2 มิติ" เท่าที่ฉันรู้ greenArray เป็นอาร์เรย์ 2 มิติ

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