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

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

7
การแบ่งรูปหลายเหลี่ยมเป็น * n * จำนวนกลุ่มของจำนวนที่เท่ากันด้วย ArcPy?
หนึ่งในภารกิจของฉันคือการแบ่งพัสดุเป็นกลุ่ม ตัวแทนเหล่านี้จะถูกใช้โดยตัวแทนเพื่อพูดคุยกับเจ้าของอสังหาริมทรัพย์ เป้าหมายคือทำให้งานของตัวแทนง่ายขึ้นโดยการจัดกลุ่มพัสดุที่อยู่ใกล้กันรวมทั้งแบ่งพัสดุเป็นจำนวนเท่า ๆ กันเพื่อให้งานมีการกระจายอย่างเท่าเทียมกัน จำนวนตัวแทนอาจมีความผันผวนตั้งแต่สองถึง 10+ ขณะนี้ฉันทำงานนี้ด้วยตนเอง แต่ต้องการดำเนินการอัตโนมัติหากเป็นไปได้ ฉันได้สำรวจเครื่องมือ ArcGIS ต่างๆแล้ว แต่ดูเหมือนไม่มีใครเหมาะสมกับความต้องการของฉัน ฉันลองใช้สคริปต์ (เป็นไพ ธ อน) ที่ใช้near_analysisและเลือกรูปหลายเหลี่ยม แต่มันค่อนข้างสุ่มและใช้เวลาตลอดไปเพื่อให้ได้ผลลัพธ์ที่ถูกต้องแบบกึ่งถูกต้องซึ่งทำให้ฉันต้องใช้เวลานานกว่าในการแก้ไขปัญหามากกว่าถ้าฉันทำทุกอย่างด้วยตนเองตั้งแต่เริ่มต้น มีวิธีการที่เชื่อถือได้ในการทำให้งานนี้เป็นอัตโนมัติหรือไม่? ตัวอย่างผลลัพธ์ (หวังว่าจะไม่มีส่วนที่เราเห็นเป็นสีเหลือง):

2
กำลังคำนวณเขตข้อมูลวันที่ด้วยวันที่วันนี้จาก datetime.date.today ()?
ฉันกำลังทำงานในส่วนของเครื่องมือที่จะใช้ arcpy.CalculateField_management เพื่อเพิ่มวันที่ปัจจุบันลงในตารางที่เกี่ยวข้อง ฉันเดินข้าม interwebs ไปทั่วและดูเหมือนจะไม่สามารถแก้ไขปัญหานี้ได้ เมื่อใช้รหัสนี้ฉันจะได้รับค่า "12:00:00 AM" input = r'C:\GIS\CARGIS\SHAPES.gdb\CRASH_ON_2013' today = datetime.date.today() dte = today.strftime('%m/%d/%Y') arcpy.CalculateField_management(input,"DTCARXTRCT",dte,"PYTHON") เมื่อใช้รหัสนี้ฉันจะได้รับค่า "06/19/1905" ตั้งแต่วันนี้ของ "10/07/2014" input = r'C:\GIS\CARGIS\SHAPES.gdb\CRASH_ON_2013' today = datetime.date.today() dte = str(today) arcpy.CalculateField_management(input,"DTCARXTRCT",dte,"PYTHON") มีความคิดเกี่ยวกับสิ่งที่ฉันทำผิดหรือเปล่า? ฉันต้องการหลีกเลี่ยงการใช้เคอร์เซอร์อัปเดต แต่จะทำเช่นนั้นหากเป็นตัวเลือกสุดท้าย

1
การตั้งค่ารายการแบบหล่นลงในพารามิเตอร์ของเครื่องมือสคริปต์ Python หรือไม่
ฉันกำลังพยายามสร้างเครื่องมือจากสคริปต์ python ที่ฉันเขียนซึ่งจะสร้างรายการที่ฉันสร้างขึ้นและใช้เป็นเมนูแบบเลื่อนลงในเครื่องมือเสร็จเป็นหนึ่งในอินพุต (ดูรูปที่แนบมาตัวอย่าง): รายการที่ฉันใช้เป็นรายการขนาดใหญ่ที่มีเมืองทั้งหมดในรัฐเวอร์มอนต์และฉันสร้างมันในสคริปต์จากตาราง (ดูรหัสด้านล่าง) ฉันสงสัยว่าปัญหาของฉันในขณะนี้เป็นเพียงการตั้งค่าคุณสมบัติเครื่องมือเพื่อใช้รายการนี้และใช้เพื่อสร้างรายการแบบหล่นลงสำหรับผู้ใช้ นี่คือบล็อกของรหัสที่สร้างรายการเพื่อใช้ในพารามิเตอร์ - มีใครเห็นปัญหาใด ๆ ของการใช้รหัสนี้หรือไม่? import arcpy arcpy.env.workspace = "Z:\\OPS\\TechnicalServices\\Culverts\\GetCulverts\\GetCulverts.gdb" towns = "Database Connections\\GDB_GEN.sde\\GDB_Gen.VTRANS_ADMIN.townindex" arcpy.MakeFeatureLayer_management(towns,"towns_lyr") NameList = [] NameListArray = set() rows = arcpy.SearchCursor("towns_lyr") for row in rows: value = row.getValue("TOWNNAME") if value not in NameListArray: NameList.append(value) town = NameList town = arcpy.GetParameterAsText(0) …

3
กำลังค้นหา Geodatabase สำหรับชื่อ Feature Class หรือ Table โดยใช้ชื่อหรือไม่
ฉันกำลังมองหาวิธีค้นหาฐานข้อมูล Geod สำหรับ Class Feature หรือ Table โดยใช้ชื่อ มีฟังก์ชั่นเช่นนี้หรือไม่? เห็นได้ชัดว่าการค้นหา windows ส่งคืนรหัสสุ่มของตารางภายใน Geodatabase เท่านั้น ฉันต้องการค้นหาชุดข้อมูลในนั้น ฉันคิดว่านี่จะช่วยให้ผู้คนจำนวนมากเพราะฉันรู้ว่าฉันไม่ใช่คนเดียวที่เก็บข้อมูลเชิงพื้นที่ในฐานข้อมูล Geod เพื่อเก็บไว้กับชุดข้อมูลอื่นอีกพันชุดและไม่ต้องการกรองผ่านมัน ฉันต้องการค้นหาฐานข้อมูล Geod เหล่านี้ภายใน ArcCatalog

2
จัดการเลเยอร์คำอธิบายประกอบด้วย arcpy
ฉันต้องการเข้าถึงเลเยอร์คำอธิบายประกอบโดยใช้ arcpy (วัตถุประสงค์คือเพื่อตรวจสอบสตริงข้อความเล็กน้อยในคำอธิบายประกอบข้อความ) เมื่อใช้คำอธิบายประกอบฉันหมายถึงวาดคำอธิบายประกอบเครื่องมือไม่ใช่ป้ายกำกับแบบไดนามิก เลเยอร์คำอธิบายประกอบเหล่านี้อยู่ภายใต้เลเยอร์กลุ่มด้วยชื่อ 'เริ่มต้น' เอกสาร Esriพูดของวาดคำอธิบายประกอบเป็นชั้นตัวเอง: มีชั้นสามประเภทในเอกสารแผนที่: เลเยอร์คุณสมบัติเลเยอร์กลุ่มและเลเยอร์แรสเตอร์ คุณสมบัติ isFeatureLayer, isGroupLayer และ isRasterLayer อนุญาตให้คุณระบุหรือแยกประเภทชั้นส่วนใหญ่ แต่ไม่ใช่ประเภทชั้นทั้งหมด มีเลเยอร์พิเศษและชุดข้อมูลไม่กี่รายการที่ไม่จัดอยู่ในหนึ่งในสามหมวดหมู่นี้: ซับคลาสย่อย, คุณสมบัติมิติ, ชุดข้อมูลเครือข่าย, ชุดข้อมูลภูมิประเทศ, ชุดข้อมูลภูมิประเทศ, ชุดข้อมูลโทโพโลยีและอื่น ๆ ในกรณีเหล่านี้คุณอาจต้องทดสอบคุณสมบัติอื่น ๆ เพื่อแยกชั้นของความสนใจก่อนที่จะทำอะไรลงไป สิ่งหนึ่งที่ต้องระวังคือวิธีที่ ArcGIS จัดการกับคำอธิบายประกอบการวาดการกำหนดค่าเฉลี่ยสองค่าเป็นไปได้: ArcGIS รองรับการเพิ่มความคิดเห็นสองประเภท: geodatabase และเอกสารแผนที่ ในกรณีของฉันมันเป็นเอกสารแผนที่ ในแง่ของเอกสารทั้งหมดนี้มันจึงปรากฏว่าคำอธิบายประกอบการวาดเป็นเลเยอร์เพียงดังนั้นรหัสง่ายๆเช่นนี้ควรจะทำงาน: mxd = arcpy.mapping.MapDocument("some\mxdpath\here") df = arcpy.mapping.ListDataFrames(mxd,"Layers") lyr = arcpy.mapping.ListLayers(mxd,"current_annotation_layer",df) แต่ปัญหาคือคำอธิบายประกอบดูเหมือนจะไม่สามารถหาได้ผ่าน dataframe (ซึ่งเป็นเรื่องแปลกเมื่อพิจารณาเลเยอร์คำอธิบายประกอบแต่ละชั้นของฉันจะเชื่อมโยงกับเลเยอร์คุณลักษณะ) คลาสอาร์คซี่เฉพาะใด …

5
วิธีปรับปรุงประสิทธิภาพเมื่อใช้เคอร์เซอร์ ArcGIS ใน Python กับตารางขนาดใหญ่
ฉันมีคลาสฟีเจอร์จุดใหญ่ในไฟล์ฐานข้อมูลภูมิศาสตร์ (~ 4 000 000 บันทึก) นี่เป็นตารางคะแนนปกติที่มีความละเอียด 100 ม. ฉันต้องทำการวางแนวทั่วไปบนเลเยอร์นี้ สำหรับสิ่งนี้ฉันสร้างกริดใหม่โดยที่แต่ละจุดอยู่ตรงกลางของจุด 4 "เก่า": * * * * o o o * * * * o o o * * * * [*] = จุดของตารางเดิม - [o] = จุดของตารางใหม่ ค่าแอททริบิวของแต่ละจุดใหม่จะคำนวณตามค่าน้ำหนักของ 4 เพื่อนบ้านในกริดเก่า ฉันวนรอบทุกจุดของกริดใหม่ของฉันและสำหรับแต่ละจุดฉันวนรอบทุกจุดบนกริดเก่าของฉันเพื่อค้นหาเพื่อนบ้าน (โดยการเปรียบเทียบค่าของ X และ Y ในตารางคุณลักษณะ) เมื่อพบ 4 เพื่อนบ้านแล้วเราก็ออกไปจากวง …

2
กำลังเรียกใช้งานสคริปต์ในหน้าต่าง Python ของ ArcMap?
ฉันกำลังเขียน Python ในเท็กซ์เอดิเตอร์ของฉันดังนั้นฉันจึงมีสคริปต์ Python, script.py ฉันยังคงพัฒนามันอยู่ดังนั้นจึงไม่ต้องการใส่ไว้ในกล่องเครื่องมือของฉันและในขณะนี้หมายถึงการคัดลอกและวางจากโปรแกรมแก้ไขข้อความของฉันไปยังหน้าต่าง Python ใน ArcGIS Desktop มีคำสั่งที่ให้ฉันเรียกมันจากหน้าต่าง ArcGIS Python หรือไม่? บางสิ่งบางอย่างตาม: run script.py ดูเหมือนว่ามีเหตุผลที่ควรมีอยู่ แต่อาจจะไม่

2
วิธีการระบุหน่วยการวัดเมื่อเข้าถึงแอตทริบิวต์ 'ความยาว' ของวัตถุเรขาคณิต?
การใช้เครื่องมือ CalculateField_management เราสามารถระบุหน่วยการวัดได้เมื่อคำนวณความยาวของรูปร่าง: #Calculate polyline lengths in miles polylines = "C:\sampleShape.shp" arcpy.CalculateField_management(polylines, "shapeLen", "!Shape.length@MILES!", "PYTHON_9.3") ฉันต้องการทำสิ่งเดียวกันภายในเคอร์เซอร์โดยใช้ 'SHAPE @ LENGTH' ของแต่ละคุณสมบัติโดยมีความยาวที่ส่งคืนในหน่วยที่ฉันเลือก: #hypothetical example 1 with arcpy.da.UpdateCursor(polylines, field_names=["SHAPE@LENGTH.FEET", "shapeLen"]) as upCurs: for row in upCurs: row[1] = row[0] upCurs.updateRow(row) หรืออาจเป็นไปได้โดยใช้ @shape geometry object (ประสิทธิภาพน้อยกว่า): #hypothetical example 2 with arcpy.da.UpdateCursor(polylines, field_names=["@SHAPE", "shapeLen"]) as …

6
การย้าย / ชดเชยตำแหน่งจุดโดยใช้ ArcPy หรือ ModelBuilder?
ฉันมีเลเยอร์ CAD ที่ไม่มีการอ้างอิงทางภูมิศาสตร์จำนวนหนึ่ง (ดูคำถามนี้ ) ที่มีคุณสมบัติการเพิ่มความคิดเห็นแบบข้อความ ฉันได้สร้างแบบจำลองเพื่อแปลงข้อความให้เป็นจุด แต่หลังจากแปลงคำอธิบายประกอบเป็นคุณลักษณะแบบจุดฉันเห็นว่าจุดยึดข้อความ CAD ไม่ตรงกับจุดศูนย์กลางของข้อความ CAD (ซึ่งเป็นจุดที่อยู่) ดังนั้นฉันต้องการเขียนโปรแกรม (ใช้ ArcPy หรือ ModelBuilder) [ย้าย] คุณลักษณะที่สัมพันธ์กับตำแหน่งปัจจุบัน (delta x, y)โดยใช้ค่า X, Y ที่วัดได้ที่ฉันจะให้ สิ่งนี้จะช่วยให้ฉันย้ายจุด GIS กลับไปที่ที่พวกเขาอยู่แทนจุดยึด CAD ชดเชย ฉันจะทำงานนี้ให้สำเร็จได้อย่างไร @PolyGeo ให้คำตอบที่ยอดเยี่ยมโดยใช้SHAPE @ XY IN 10.1 แต่ขณะนี้ฉันกำลังใช้งาน 10.0 10.0 ความคิดใด ๆ

1
ส่งออกคุณสมบัติที่เลือกไปยัง Shapefile ใหม่โดยใช้ ArcPy?
ขณะนี้ฉันมีเคอร์เซอร์ค้นหาวนซ้ำผ่าน shapefile ใน ArcGIS 10.1 ที่เลือกคุณสมบัติและเรียกใช้การวิเคราะห์มุมมองเกี่ยวกับคุณลักษณะนั้น (และเฉพาะคุณลักษณะนั้น) วิธีที่ง่ายที่สุดในการส่งออกคุณสมบัติเดียวกันนั้นไปยังรูปร่างไฟล์ที่มีชื่อเดียวกันใน Python คืออะไร fieldFID = 'FID' arcpy.CheckOutExtension("Spatial") arcpy.MakeFeatureLayer_management (inPoints, "pts") with arcpy.da.SearchCursor('pts',[fieldFID]) as cursor: for row in cursor: fid = str(row[0]) print fid arcpy.SelectLayerByAttribute_management ("pts", "NEW_SELECTION", '"FID" = {}'.format(fid)) outViewshed = Viewshed(inDEM,"pts",1,"CURVED_EARTH",0.15) outViewshed.save("C:/temp/output/viewsheds/"+fid)

2
วิธีการเข้าถึงโมดูล Esri ArcPy จาก Enthought Canopy?
ฉันมี ArcGIS 10.1 ที่ทำงานบนระบบ windows ของฉันและฉันยังได้ติดตั้ง Canopy Express Enthought Python รุ่น 32 บิตใหม่ เป็นไปได้หรือไม่ที่จะโหลดและใช้โมดูล Esri ArcPy จาก Canopy

1
การสอน Python แก่ผู้สำรวจรังวัด [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน3 ปีที่ผ่านมา ไม่มีใครมีตัวอย่างที่ดีของการใช้ Python ในการทำภารกิจสำรวจโดยอัตโนมัติหรือทำให้งานง่ายขึ้น? ฉันกำลังสอนแล็บ Python / ArcPy ในสัปดาห์นี้เพื่อเรียน GIS มีการสำรวจนักเรียนจำนวนมากในชั้นเรียนที่คิดว่า GIS เป็นส่วนใหญ่เสียเวลาของพวกเขาและใช้เวลาเรียนเพียงเพราะมันจำเป็น ฉันต้องการให้สิ่งที่พวกเขาตื่นเต้น บริบทเล็ก ๆ น้อย ๆ : นักเรียนส่วนใหญ่อาจจะทำงานให้กับ บริษัท ป่าไม้หรือ บริษัท ชื่อเมื่อพวกเขาสำเร็จการศึกษาและเราอยู่ในอาร์คันซอดังนั้นเกือบทุกอย่างที่นี่อยู่บนพื้นฐานของ PLSS จนถึงตอนนี้ความคิดของฉันแสดงให้เห็นถึงฟังก์ชันคณิตศาสตร์เชิงมุมและกล่าวถึงโปรแกรม CAD ที่ใช้ Python ฟรี ฉันยังได้เรียนรู้ว่ามีโครงการที่จะเขียนปลั๊กอินสำหรับ AutoCAD ที่ให้อินเทอร์เฟซ Python ฉันได้สอนชั้นเรียนแล้วและตามที่คาดไว้ผู้สำรวจไม่ได้ตื่นเต้นเกินไป ฉันยังชอบที่จะได้ยินตัวอย่างที่ดีของการใช้ Python เพื่ออำนวยความสะดวกในการสำรวจ

1
การใช้เครื่องมือ ArcPy และ PyGRASS ในสคริปต์ Python เดียวกันหรือไม่
ฉันกำลังพยายามเขียนสคริปต์ Python ที่มีคำสั่ง ArcPy / ArcGIS ที่แตกต่างกันและต้องการรวมเข้ากับเครื่องมือการประมวลผลทาง GRASS น่าเสียดายที่การนำเข้าไลบรารี GRASS ไม่ทำงาน import grass.script as grass สิ้นสุดลงในข้อผิดพลาด: Traceback (most recent call last): File "<interactive input>", line 1, in <module> ImportError: No module named script ฉันรู้ว่า GRASS GIS ติดตั้งเป็นรุ่น Python ของตัวเอง ไม่มีวิธีใดที่จะรวมการติดตั้ง ArcGIS และ GRASS GIS ของ Python เข้าด้วยกัน? ฉันพยายามคัดลอกโมดูล pygrass (หรือสิ่งที่ฉันคิดว่ามันอาจจะเป็น) …

3
วิธีการจัดกลุ่มชุดข้อมูลครอบคลุมพื้นที่ขนาดใหญ่มากอีกครั้งอย่างไร
พิจารณาชุดข้อมูล Land Cover NLCD2001 สำหรับ Alaska ( ลิงค์ดาวน์โหลด ) ฉันจำเป็นต้องจัดกลุ่มชุดข้อมูลนี้ใหม่เพื่อให้มีการรักษาพิกเซลของค่า 41, 42 และ 43 เท่านั้น ค่าพิกเซลอื่น ๆ ทั้งหมดควรเป็น NoData (หรือ 0 หากจำเป็น) ดูเหมือนว่าเป็นงานง่าย ๆ เพียงแค่เรียกใช้เครื่องมือจัดประเภทอีกครั้ง น่าเสียดายที่การโทรทุกครั้งส่งผลให้เกิดข้อความแสดงข้อผิดพลาดที่ไม่ชัดเจนและไม่ช่วยเหลือ: Executing: Reclassify "D:\ak_nlcd_2001_land_cover_3-13-08_se5.img" Value "0 40 0;41 41;42 42;43 43;44 255 0;NODATA 0" "D:\alaska_reclassified.tif" DATA Start Time: Thu Jan 03 09:23:13 2013 ERROR 999998: …

2
สคริปต์ Python ที่ทำงานใน ArcMap เทียบกับสคริปต์ที่ทำงานภายนอก?
ฉันเพิ่งเริ่มทำงานกับสคริปต์ Python เพื่อทำงาน ฉันกำลังสร้างสคริปต์เพื่อทำให้กระบวนการเป็นไปโดยอัตโนมัติ โดยทั่วไปแล้วมันจะถามชื่อลูกค้าของผู้ใช้รับการฉายถ้ามีสร้างไดเรกทอรีบนไดรฟ์ C: สำหรับลูกค้าสร้างฐานข้อมูลไฟล์ทางภูมิศาสตร์เฉพาะสำหรับลูกค้าสร้างชุดข้อมูลที่ต้องการและสร้างคลาสคุณลักษณะเฉพาะสำหรับข้อมูลลูกค้า ในที่สุดมันจะเพิ่มฟิลด์ที่จำเป็นให้กับแต่ละฟีเจอร์คลาสและอาจเป็นอย่างอื่น ฉันเริ่มสิ่งนี้โดยไม่รู้ถึงมารยาทที่เหมาะสมของการเขียนสคริปต์ Python สำหรับ ArcMap แต่สิ่งที่ฉันสร้างขึ้นจนถึงตอนนี้จะทำงานนอก ArcMap ที่ฉันเชื่อเท่านั้น เป็นที่ยอมรับหรือไม่? แทนที่จะได้รับการป้อนข้อมูลของผู้ใช้ผ่าน arcpy.getparamaterastext () ซึ่งฉันเพิ่งค้นพบเกี่ยวกับฉันใช้ raw_input () ไม่เป็นไร มันใช้งานได้ฉันไม่แน่ใจว่านี่เป็นวิธีที่เหมาะสมในการเขียนสคริปต์หรือไม่ นี่คือรหัสที่ฉันมี import sys import arcpy import os #Records name of the client client = raw_input("Enter the name of the client: (letters and underscores only) \n") #Records …
10 arcpy 

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