Python, ห้องสมุดรูปร่างดี: เป็นไปได้ไหมที่จะทำการเลียนแบบรูปหลายเหลี่ยมรูปร่าง?


11

ฉันพยายามสร้างสี่เหลี่ยมผืนผ้าที่หมุนในพิกัดละติจูด / ลองจิจูด

โดยทั่วไปฉันมีพิกัดของจุดศูนย์กลางและมุมการหมุนรอบจุดศูนย์กลาง

เป็นไปได้ที่จะใช้, หุ่นดีหรือ gdal หรืออย่างอื่น?

คำตอบ:


11

affinityโมดูลของ Shapely รองรับการแปลงเลียนแบบบนเรขาคณิตใด ๆ ตัวอย่างเช่น

from shapely import affinity
from shapely.geometry import LineString

# Example geometry
line = LineString([(1, 3), (1, 1), (4, 1)])

# Rotate 30 degrees CCW from origin at the center of bbox
line_rot_center = affinity.rotate(line, 30, 'center')

# Rotate from origin at (1, 1)
line_rot_11 = affinity.rotate(line, 30, (1, 1))

น่าเสียดายที่การหมุนใน (lat, lon) ไม่สามารถทำได้ด้วยการแปลงเลียนแบบ คุณต้องฉายข้อมูลและหมุนพิกัดที่ฉายไว้มิฉะนั้นการหมุนจะเป็นทรงกลม
whuber

1
โอ้ถูกต้องฉันพลาดส่วนหนึ่ง (lat, lon) ของคำถาม ฉันไม่เคยเห็นฟังก์ชันเลียนแบบการแปลงที่สร้างขึ้นสำหรับอินพุตทางภูมิศาสตร์ดังนั้นเคล็ดลับที่คุณให้ไว้จึงเป็นสิ่งจำเป็น
Mike T

ตั้งแต่ v1.2.17 Shapely มีการแปลงเลียนแบบแม้ว่าพวกเขาจะยังไม่ได้บันทึกไว้ - github.com/Toblerity/Shapely/blob/master/shapely/affinity.py
Alex L

โปรดดูบล็อกของผู้เขียน: sgillies.net/blog/1168/shapely-1-2-17
Alex L

1
help(shapely.affinity)ประเภท @AlexL ที่จริงฉันเกือบจะเตรียมการอัพเดทด้วยตนเองสำหรับโมดูลแล้ว
Mike T

2

Sextante มีเครื่องมือที่อาจใช้งานได้ มันเรียกว่าการแปลงภายใต้ "เครื่องมือสำหรับเลเยอร์เวกเตอร์" ในการรันคำสั่งให้กำหนดมุมจุดยึดขนาดตัวประกอบและการแปล Sextante เป็นส่วนขยายของ gvsig, openjump, udig, อื่น ๆ นอกจากนี้ยังเรียกใช้จากบรรทัดคำสั่ง


2

ฉันไม่เห็นคุณสมบัติใด ๆ ใน Python หรือ Shapely ที่จะทำเช่นนั้น แต่คุณสามารถทำได้ด้วย JTS (Java Topology Suite) http://tsusiatsoftware.net/jts/main.html (GEOS, lib ที่ Shapely ใช้เป็นพอร์ต ของ JTS แต่ JTS มีฟังก์ชั่นเพิ่มเติม)

คุณสามารถดาวน์โหลด soft ที่นี่http://sourceforge.net/projects/jts-topo-suite/และเปิด testbuilder.sh หรือ testbuilder.bat ขึ้นอยู่กับระบบปฏิบัติการของคุณเพื่อเล่นเพื่อค้นหา หลังจากที่คุณเข้าใจพื้นฐานที่คุณจะต้องทำเช่นเดียวกันโดยไม่ต้องมี GUI แต่ด้วยการเขียนโปรแกรมจาวาเท่านั้น

http://geoscript.org/อาจช่วยให้คุณสร้างกาวระหว่างโค้ดไพ ธ อนและจาวา (เนื่องจากการใช้งานอย่างใดอย่างหนึ่งใช้ Jython)



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