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

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

2
กำลังตรวจจับเข้าร่วมโดยใช้โปรแกรมโดยใช้ ArcPy?
ฉันมีรหัส Python ที่เปิดตัวจากภายในโครงการ ArcMap การรวมใด ๆ ที่ผู้ใช้อาจสร้างขึ้นในโครงการจะต้องถูกลบออกเพื่อให้รหัสของฉันทำงาน น่าเสียดายที่รหัสที่ลบการเข้าร่วม… arcpy.RemoveJoin_management ("layer1", "layer2") ... ยังแบ่งคุณสมบัติเลเยอร์บางส่วนที่สำคัญต่อแอปพลิเคชันของฉัน (ฟิลด์ที่เน้นฟิลด์แบบอ่านอย่างเดียวและอื่น ๆ ) หากการรวมถูกลบออกโดยการคลิกขวาที่เลเยอร์ใน ArcMap และเลือก“ ลบการรวม” คุณสมบัติของเลเยอร์จะไม่เปลี่ยนแปลง หากฉันสามารถตรวจพบว่ามีการเข้าร่วมอยู่ภายในรหัสของฉันฉันจะออกจากรหัสและแสดงข้อความที่ผู้ใช้จะต้องลบการรวมของพวกเขาด้วยตนเองก่อนที่จะพยายามเรียกใช้รหัส ดังนั้น ... สามารถตรวจพบการเข้าร่วมโดยทางโปรแกรมได้หรือไม่

7
รับภาพแรสเตอร์เป็นอาร์เรย์ใน Python ด้วย ArcGIS Desktop หรือไม่
เมื่อเริ่มทำงานกับ Python และ ArcGIS 9.3 ฉันคิดว่าจะมีวิธีง่าย ๆ ในการนำภาพแรสเตอร์มาไว้ในอาร์เรย์ Python เพื่อที่ฉันจะสามารถจัดการมันได้ก่อนที่จะจัดเก็บไว้ในรูปแบบแรสเตอร์อื่น อย่างไรก็ตามฉันไม่สามารถหาวิธีทำสิ่งนี้ได้ ถ้าเป็นไปได้แล้วจะเป็นอย่างไร?

4
การสร้างจุดเชื่อมต่อรูปหลายเหลี่ยมที่เชื่อมต่อของหลายบรรทัดโดยใช้ ArcPy?
ฉันกำลังพยายามหาวิธีการสร้างรูปหลายเหลี่ยมที่เชื่อมต่อจุดปลายทั้งหมดของ shapefile ที่มีชุดของ polyilnes ด้วย pythonscript ใน ArcGIS ฉันมีปัญหาในการทำเช่นนี้เนื่องจากลำดับของโหนดในรูปหลายเหลี่ยมนั้นมีความสำคัญ ฉันต้องการได้รูปหลายเหลี่ยมสีเทาในรูปภาพจากเส้นสีเขียว
10 arcpy  polygon  line 

1
วิธีการลบแถวที่เลือกโดยใช้ ArcPy
ฉันต้องการลบแถวทั้งหมดในคลาสคุณลักษณะ แต่ยังคงอยู่แถวที่ 1 ถึง 5 ในอีกทางหนึ่งฉันต้องการคงแถวห้าแถวแรกและลบแถวอื่น ๆ ฉันรู้ว่าฉันต้องใช้เคอร์เซอร์ค้นหาและอัปเดตเคอร์เซอร์ แต่ฉันไม่สามารถใช้ได้ ฉันจะลบแถวโดยใช้ ArcPy ได้อย่างไร
10 arcpy  cursor 

2
ใช้ MultiValue ในพารามิเตอร์เครื่องมือสคริปต์ Python หรือไม่
clip_fc = arcpy.GetParameter(0)สคริปต์ของฉันทำงานได้ดีกับชั้นคุณลักษณะเดียวเลือกสำหรับ อย่างไรก็ตามเมื่อฉันตั้ง clip_fc เป็น MultiValue ในคุณสมบัติของสคริปต์และจากนั้นเลือกคุณสมบัติหลายชั้นฉันได้รับข้อผิดพลาด "พารามิเตอร์ไม่ถูกต้อง" ทุกคนสามารถแสดงให้ฉันเห็นว่าฉันกำลังจะไปไหนผิดหรือเปล่า? import arcpy import os.path from arcpy import env arcpy.env.workspace = r"C:\GIS Home\project_1\clipshps\Combined_mf.gdb" arcpy.env.overwriteOutput = True clip_fc = arcpy.GetParameter(0) clip_name = str(clip_fc) output_dir = r"C:\GIS Home\project_1\clipshps\outputs_clip" for fds in arcpy.ListDatasets(): for fc in arcpy.ListFeatureClasses('','',fds): out = os.path.join(output_dir, fc + "_" + …

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

3
“ โลภ” ตัดเส้นด้วยรูปหลายเหลี่ยม
ฉันต้องการคลิปชุด polylines (เส้นสีดำในภาพด้านล่าง) ไปยังขอบเขตด้านนอกของรูปหลายเหลี่ยม ควรละเว้นช่องว่างใด ๆ ภายในรูปหลายเหลี่ยม ผลลัพธ์ที่ดีที่สุดของฉันคือเส้นสีเหลืองประ บรรทัดเริ่มต้นอาจจะหรืออาจจะไม่ตรง ภาพเป็นตัวอย่างที่เรียบง่าย แต่ในความเป็นจริงรูปหลายเหลี่ยมนั้นซับซ้อนกว่ามากและมีหลายร้อยบรรทัด ฉันไม่คิดว่าตัวเรือนูนจะทำงานได้ (แต่ฉันอาจผิด) ฉันเปิดให้แก้ปัญหาใน arcgis, qgis, arcpy, หุ่นดี ฯลฯ การเขียนโปรแกรมจะอยู่ในหลามโดยฉันเปิดให้ตัวเลือกอื่น ๆ หากจำเป็น Arcgis น่าจะดีกว่าที่จะทำให้เพื่อนร่วมงานของฉันแบ่งปันเครื่องมือได้ง่ายขึ้น แต่ไม่ใช่ข้อกำหนด สิ่งที่ดีที่สุดที่ฉันคิดได้ในตอนนี้คือการตัดเส้นแต่ละเส้นด้วยรูปหลายเหลี่ยมที่สร้างชุดของจุดที่จุดตัดของขอบเขตทั้งหมด เรียงคะแนนตามระยะทางถึงจุดเริ่มต้นของบรรทัด จุดที่อยู่ไกลและใกล้ที่สุด (FAC) จะเป็นขอบเขตด้านนอกของรูปหลายเหลี่ยม จากนั้นใช้จุด FAC เพื่อเลือกจุดยอดที่เหมาะสมจากบรรทัดเดิมและสร้างเส้นประสีเหลืองจากจุดที่เหมาะสม ควรใช้งานได้ แต่ดูเหมือนจะซับซ้อนเกินความจำเป็น ความคิดเพิ่มเติมบางประการ: เส้นดังกล่าวเป็นเส้นตรง "เพียงพอ" ที่การคำนวณระยะทางง่าย ๆ ระหว่างจุดควรใช้งานไม่จำเป็นต้องมีการอ้างอิงเชิงเส้น นี่จะเป็นเรื่องง่ายใน arcpy ถ้ามีเครื่องมือในการแยกเส้นตรงจุด แต่ฉันไม่สามารถหาได้ คิดว่าทุกคน?

1
โทเค็น“ SHAPE @ XY” และ Data“ SHAPE @ TRUECENTROID” ของการเข้าถึงข้อมูลแตกต่างกันอย่างไร
การเข้าถึงข้อมูลการค้นหาเคอร์เซอร์ อะไรคือความแตกต่างระหว่างโทเค็น"SHAPE@XY"และ"SHAPE@TRUECENTROID"อะไร พวกเขาคืนค่า coordnates เดียวกันบนรูปหลายเหลี่ยมทดสอบ: >>> cursor = arcpy.da.SearchCursor("test", "SHAPE@XY") >>> for row in cursor: ... print row[0] ... (559389.3838043335, 4239093.201390337) >>> cursor = arcpy.da.SearchCursor("test", "SHAPE@TRUECENTROID") >>> for row in cursor: ... print row[0] ... (559389.3838043335, 4239093.201390337) มันทำงานในลักษณะเดียวกันสำหรับคุณลักษณะรูปหลายเหลี่ยมหลายส่วน มันเคยให้ผลลัพธ์ที่แตกต่างกันหรือไม่?

8
การใช้ CPU ให้เกิดประโยชน์สูงสุด
สคริปต์ของฉันตัดกันกับเส้นหลายเหลี่ยม เป็นกระบวนการที่ยาวนานเนื่องจากมีมากกว่า 3000 บรรทัดและมากกว่า 500,000 โพลิกอน ฉันดำเนินการจาก PyScripter: # Import import arcpy import time # Set envvironment arcpy.env.workspace = r"E:\DensityMaps\DensityMapsTest1.gdb" arcpy.env.overwriteOutput = True # Set timer from datetime import datetime startTime = datetime.now() # Set local variables inFeatures = [r"E:\DensityMaps\DensityMapsTest.gdb\Grid1km_Clip", "JanuaryLines2"] outFeatures = "JanuaryLinesIntersect" outType = "LINE" # Make lines …

3
แยกรุ่น Python เมื่อใช้ IDLE กับ ArcGIS Pro และ ArcGIS 10.x สำหรับสถาปัตยกรรมเดสก์ท็อปหรือไม่
ฉันเพิ่งเริ่มทำงานกับ Python 3.4.1 ซึ่งมาพร้อมกับ ArcGIS Pro 1.0.0 บนแล็ปท็อปของฉันซึ่งมี Python 2.7.8 ซึ่งมาพร้อมกับ ArcGIS 10.3 สำหรับเดสก์ท็อปที่ติดตั้งและฉันต้องการลดโอกาสในการทำงาน Python เวอร์ชันหนึ่งเมื่อฉันต้องการและจำเป็นต้องใช้อีกเวอร์ชันหนึ่ง ใน Windows Explorer ตอนนี้ฉันมีโฟลเดอร์ Python สองโฟลเดอร์: C: \ Python27 และ C: \ Python34 ซึ่งคาดว่าจะได้ ในเมนูเริ่มของ Windows ภายใต้โปรแกรมทั้งหมด> ArcGIS มีโฟลเดอร์ Python 2.7 ที่มี IDLE (Python GUI) ที่ฉันมักใช้เพื่อเริ่ม IDLE ดังนั้นการเริ่มต้นจากที่นี่ควรจะดี ฉันทดสอบและเริ่ม 2.7.8 ฉันคาดว่าจะเห็นโฟลเดอร์ Python 3.4 ถัดจาก …

3
สร้าง Fishnet จากคลาสคุณลักษณะเทมเพลตโดยใช้ ArcPy?
ฉันไม่สามารถใช้เครื่องมือ arcpy.CreateFishnet_management ได้เพราะกำหนดพารามิเตอร์“ templateExtent” ด้วย shapefile มันไม่ได้เติมพารามิเตอร์ "originCoordinate" และ "yAxisCoordinate" โดยอัตโนมัติ import arcpy from arcpy import env env.overwriteOutput = True env.workspace = r"D:\Users\julia\erste_aufg" #Process: Create Fishnet outFeatureClass = r"D:\Users\julia\erste_aufg\at001l_wien\at001l_wien\wien.shp" cellSizeWidth = '200' cellSizeHeight = '200' templateExtent = r"D:\Users\julia\erste_aufg\at001l_wien\at001l_wien\at001l_wien.shp" arcpy.CreateFishnet_management(outFeatureClass, "", "", cellSizeWidth, cellSizeHeight, '0', '0', "", "NO_LABELS", templateExtent, "POLYGON") มันทำงานใน …

2
การแก้ไขรูปแบบฉลาก (แบบอักษรสีขนาด ฯลฯ ) โดยใช้ ArcPy?
ฉันกำลังพยายามเขียนแมโครไพ ธ อนสำหรับ ArcGIS 10.2 ที่จะทำให้กระบวนการติดฉลากจุดในเลเยอร์โดยอัตโนมัติตามประเภทอพาร์ทเมนต์ต่างๆ ตัวอย่างเช่นอพาร์ทเมนท์หนึ่งรูปแบบจะมีสี่เหลี่ยมสีน้ำเงินพร้อมตัวหนาสีขาวเป็นป้ายกำกับเดียว อีกอันหนึ่งจะมีสี่เหลี่ยมสีชมพูพร้อมตัวหนาสีดำ อีกอันจะมีสี่เหลี่ยมสีแดงที่มีตัวหนาสีขาว ฯลฯ คุณต้องการใช้นิพจน์หรือฟังก์ชันใน arcpy เพื่อเปลี่ยนสไตล์ของป้ายกำกับเหล่านี้หรือไม่ ขณะนี้สคริปต์ติดป้ายอพาร์ตเมนต์ตามรหัสแผนที่และเปลี่ยนชื่อใน TOC เป็นอพาร์ตเมนต์ตามที่ควร ตอนนี้ฉันต้องการเปลี่ยนแบบอักษรกราฟิกและขนาดของป้ายชื่อเพื่อสร้างป้ายกำกับที่ไม่ซ้ำกันสำหรับแต่ละรายการจากนั้นทำปุ่มเพื่อกดและเพียงแค่ทำให้กระบวนการอัตโนมัติทุกครั้งที่เราต้องทำหนึ่งในเลเยอร์เหล่านี้ แบบอักษรป้ายกำกับและกราฟิกสามารถเปลี่ยนแปลงได้หรือไม่ด้วยการใช้สคริปต์ Python (ArcPy, IDLE ฯลฯ ) ฉันตัดสินใจที่จะแก้ไขโพสต์นี้เพื่อให้คำอธิบายขั้นสุดท้ายเกี่ยวกับสิ่งที่ฉันกำลังจะมาที่นี่จึงไม่มีความสับสน โดยพื้นฐานแล้วจุดบนแผนที่จะเปลี่ยนจากการมองภาพด้านบนเป็นดังนี้: ฉันลองใช้lblClass.expressionฟังก์ชั่นนี้แล้ว แต่รหัสที่ฉันพยายามจะใช้ไม่ทำงาน ฉันคิดว่าน่าจะเป็นขั้นตอนในทิศทางที่ถูกต้อง ด้านล่างเป็นรหัสที่ฉันได้ลองใช้เพื่อรับ labelClass.expression เพื่อเปลี่ยนแบบอักษรของป้ายกำกับ for lblClass in aptLayer.labelClasses: lblClass.showClassLabels = True def getLabel (Code, Type): if Type == "MRR": return "<FNT name = …

1
Batch Georeferencing ใน ArcMap / ArcPy?
ฉันมีแผนที่ pdf ประมาณ 50 แผนที่ที่ฉันต้องการจัดทำ georeference และ / หรือ georectify ฉันบันทึกหนึ่งไฟล์เป็น jpg และอ้างอิงทางภูมิศาสตร์ด้วยตนเองและต้องการให้ส่วนที่เหลือซึ่งอยู่ในตำแหน่งเดียวกันโดยอัตโนมัติและมีขอบเขตเท่ากัน ความหนาแน่นของการไล่ระดับสีจะเปลี่ยนไปในแต่ละกรณี แต่แผนที่ (บันทึกเป็น jpg ในขณะนี้) จะมีขอบเขตเท่ากันสำหรับทั้ง 50 กรณี ไม่มีใครรู้ลิงค์ไปยังบทช่วยสอนแบบทีละขั้นตอนที่เกี่ยวข้องกับการประมวลผลแบบกลุ่มใน Arcmap 10.2 เท่านั้น? ฉันกำลังคิดว่าจะใช้Warp จากรหัสไฟล์หรืออาจเป็นตัวเลือกการลงทะเบียนอัตโนมัติแต่ฉันไม่แน่ใจว่าจะเริ่มจากที่ใด รหัสตัวอย่างคือ: import arcpy arcpy.WarpFromFile_management( "\\cpu\data\raster.img", "\\cpu\data\warp_out.tif", "\\cpu\data\gcpfile.txt", "POLYORDER2", "BILINEAR")

1
เปลี่ยนเป็นรุ่นที่ผ่านมาโดยใช้ ArcPy?
ฉันมีปัญหาพยายามที่จะเปลี่ยนแปลงไปเป็นรุ่นที่ทางประวัติศาสตร์เกี่ยวกับระดับคุณลักษณะ SDE ใช้งูหลามและarcpy.ChangeVersion_management ฉันสามารถเปลี่ยนเวอร์ชั่นเป็นวันที่และเวลาที่ระบุด้วยตนเองโดยใช้ ArcMap ฉันยังสามารถทำให้กระบวนการโดยอัตโนมัติอย่างเต็มที่โดยใช้ ModelBuilder เมื่อฉันเอ็กซ์พอร์ตโมเดล ModelBuilder ไปยังสคริปต์ python สคริปต์จะรันโดยไม่มีข้อผิดพลาด แต่เวอร์ชันที่เลือกเป็นเวอร์ชันประวัติที่มีวันที่ปัจจุบันและไม่ใช่วันที่ที่เลือกเป็นพารามิเตอร์ date การใช้ Arcmap และหน้าต่าง Python (การประมวลผลทางภูมิศาสตร์ -> Python) ฉันยังสามารถเรียกใช้รหัสหลามได้โดยไม่มีข้อผิดพลาดและผลลัพธ์จะเหมือนกัน เลเยอร์ประวัติถูกเลือกด้วยวันที่ปัจจุบันไม่ใช่วันที่ที่เลือกไว้เป็นพารามิเตอร์วันที่ นี่คือไวยากรณ์ Python ที่ฉันใช้งานอยู่: arcpy.ChangeVersion_management("Parcels", "HISTORICAL", "", "7/1/2013 4:30:00 PM") ฉันยังได้ผลลัพธ์เดียวกันโดยใช้: historyDate = datetime.datetime(2011, 7, 1) arcpy.ChangeVersion_management("Parcels", "HISTORICAL", "", historyDate) ในขณะที่สิ่งต่อไปนี้พ่น RuntimeError: historyDate = datetime.date(2011, 7, 1) arcpy.ChangeVersion_management("Parcel", …

1
การกำหนดชื่อเขตพื้นที่รูปร่าง
ฉันกำลังจัดการกับความหลากหลายของไฟล์รูปหลายเหลี่ยมเชิงพื้นที่ (shapefiles, ไฟล์ / คุณสมบัติส่วนบุคคล gdb ชั้นเรียน, คุณลักษณะชั้นเรียน sde (บางส่วนที่มีมุมมองเชิงพื้นที่)) และขึ้นอยู่กับประเภทไฟล์ที่ฉันได้รับ ฟิลด์ที่ต้องการไม่ใช่ฟิลด์ที่สร้างขึ้น) ตัวอย่างเช่นชื่อฟิลด์จะแตกต่างจาก "Shape_Area", "SHAPE_Area", "SHAPE.AREA", "GEOMETRY_Area", "GEOMETRY.AREA" ฉันเขียนสคริปต์หลามเพื่อดึงพื้นที่ของคลาสคุณลักษณะเหล่านี้ทั้งหมดและฉันจะทำบางสิ่งตามบรรทัดของ: for field in arcpy.ListFields(fc): if field.name in ["Shape_Area", "SHAPE_Area", "SHAPE.AREA", "GEOMETRY_Area", "GEOMETRY.AREA"]: do something ฉันสงสัยว่ามีวิธีที่ฉลาดกว่าในการดึงฟิลด์รูปร่างออกมาแทนที่จะแสดงรายการทุกวิธีที่สามารถตั้งชื่อได้หรือไม่ ดูเหมือนจะไม่มีคุณสมบัติเขตข้อมูลสำหรับสิ่งที่ต้องการพื้นที่ มีวิธีอื่นในการทำเช่นนี้หรือไม่?

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