ค้นหาจุดกึ่งกลางของบรรทัดโดยใช้ ArcPy หรือไม่


12

จุดกึ่งกลางของโพลีไลน์จะคำนวณโดยใช้กรอบงานการประมวลผลทางภูมิศาสตร์เช่นในสคริปต์ Python ได้อย่างไร

polyline.centroidคุณสมบัติส่งกลับเซนทรอยด์จริงถ้ามันเป็นภายในหรือคุณลักษณะ; มิฉะนั้นจุดฉลากจะถูกส่งกลับ เซนทรอยด์นั้นหาได้ยากบนเส้นที่ไม่เป็นเส้นตรงซึ่งไร้ประโยชน์สำหรับจุดประสงค์ของฉัน

เครื่องมือFeature Vertices to Pointsมีตัวเลือกจุดกึ่งกลาง แต่ต้องใช้ ArcInfo ซึ่งตอนนี้ฉันไม่มี

ตัวเลือกอาจจะเพิ่มมาตรการใน polylines และสร้างเหตุการณ์เส้นทาง 50% ตามเส้น

วิธีแก้ปัญหาอีกวิธีหนึ่งคือการใช้ตัวเลือกคำนวณเรขาคณิตใน ArcMap แต่ในอุดมคติฉันต้องทำให้กระบวนการนี้เป็นสคริปต์โดยอัตโนมัติ

คำแนะนำที่ดีกว่า / เร็วกว่านี้?

ฉันถูก จำกัด ที่ ArcGIS 10.0 (ไม่สามารถเข้าถึงใบอนุญาตระดับ ArcInfo) ในขณะนี้


4
ดูคำถามนี้ ในท้ายที่สุดฉันใช้ฟังก์ชันการอ้างอิงเชิงเส้นใน Shapely เพื่อกำหนดจุดกึ่งกลาง
Mike T

1
ฉันคิดว่า @MikeToews มีความคิดที่ถูกต้องและเพียงแค่ใช้ฟังก์ชันการอ้างอิงเชิงเส้นใน ArcGIS ซึ่งต่างจากการใช้ฟังก์ชัน Shapely ลักษณะเช่นนี้เป็นฟังก์ชั่นที่คุณต้องการ: ยี่ห้อชั้นที่จัดกิจกรรมเส้นทาง - เชิงเส้นอ้างอิง คุณสามารถสร้างตารางกิจกรรมได้ทันที สิ่งนี้มีไว้สำหรับ 10.1 แต่ควรเหมือนกันใน 10.0
Spatial

1
บล็อกนี้ดูเหมือนจะมีอัลกอริทึมที่สามารถแปลงเป็น Python / ArcPy: rbrundritt.wordpress.com/2008/10/14/…
PolyGeo

มีคนทำในจาวาสคริปต์หรือไม่? ฉันทำสำเร็จใน Arcpy เท่านั้น ขอแสดงความนับถือ Ezequias
Ezequias

หากคุณมีคำถามใหม่โปรดขอได้โดยคลิกที่ถามคำถามปุ่ม รวมลิงค์ไปยังคำถามนี้หากช่วยระบุบริบท - จากการรีวิว
BERA

คำตอบ:


23

Polylineชั้นจะมีวิธีการใหม่ที่เรียกว่า "positionAlongLine" ใน ArcGIS 10.1 นี้จะกลับPointGeometryวัตถุที่มีตรงจุดหนึ่งในระยะทางที่กำหนดจากปลายเริ่มต้นของเส้นหรือส่วนของระยะห่างระหว่างจุดเริ่มต้นและสิ้นสุด positionAlongLine(0.5,True)เพื่อหาจุดกึ่งกลางคุณก็จะต้องทำ ในการค้นหาจุดกึ่งกลางของบรรทัดและเพิ่มพิกัดลงในตารางแอตทริบิวต์คุณสามารถใช้ Field Calculator ในคำสั่งต่อไปนี้:

  • !Shape!.positionAlongLine(0.5,True).firstPoint.X
  • !Shape!.positionAlongLine(0.5,True).firstPoint.Y

โปรดทราบว่าคุณต้องใช้ตัวแยกวิเคราะห์ Python ในเครื่องคำนวณภาคสนามเพื่อให้สิ่งนี้ทำงานได้

หากคุณต้องการเข้าถึงวัตถุจุดนี้ใน Python คุณจะทำสิ่งต่อไปนี้:

Input_shp = "C:\Temp\Line.shp"
Cursor = arcpy.SearchCursor(Input_shp)
for Feature in Cursor:
    Midpoint = Feature.shape.positionAlongLine(0.50,True).firstPoint
    print Midpoint.X
    print Midpoint.Y

ขอบคุณมันดูดี ฉันควรจะกล่าวว่าฉัน จำกัด เพียง 10.0 ในขณะนี้ดังนั้นตัวเลือกเส้นทางด้านบนอาจต้องพอเพียงแล้ว
สตีเฟนนำ

ข้อผิดพลาด: แถวมีค่าที่ไม่ดี การใช้ arcGIS10 โดยที่ Python ตรวจสอบใน Model Builder ฉันใช้คำสั่งเดียวกัน:! Shape! .positionAlongLine (0.5, True) .firstPoint.X
juasmilla

1

ด้วยสิทธิ์ใช้งาน ET Geo Wizards คุณสามารถลองใช้ฟังก์ชัน "Polyline to Point" ด้วยตัวเลือก "Middle points" และ "Remove Duplicate Points" (ตัวเลือกเพิ่มเติม): http://www.ian-ko.com/ET_GeoWizards/UserGuide/convertPl2Pnt HTM

คุณสามารถใช้ ET Geo Wizards เช่นนี้:

toolbox_ETgeowizards = arcpy.GetParameterAsText(0) # Location ET Toolbox (Type: Toolbox)
arcpy.ImportToolbox(toolbox_ETgeowizards)

...

arcpy.ET_GPPolylineToPoints(pInFeatureClass, sOutFileName, sExportOption, bRemoveDuplicates)

สำหรับตัวแปรอินพุตของฟังก์ชัน ET โปรดดูที่: http://www.ian-ko.com/ET_GeoWizards/UserGuide/Scripting/scripting_PolylineToPoint.htm

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