2015-05-26 13 views
7

Tôi muốn tạo đa giác từ các điểm chính xác.Làm thế nào để tạo ra một đa giác cho đỉnh điểm của nó?

from shapely import geometry 
p1 = geometry.Point(0,0) 
p2 = geometry.Point(1,0) 
p3 = geometry.Point(1,1) 
p4 = geometry.Point(0,1) 

pointList = [p1, p2, p3, p4, p1] 

poly = geometry.Polygon(pointList) 

mang lại cho tôi một lỗi loại TypeError: object of type 'Point' has no len()

Làm thế nào để tạo ra một Polygon từ quyến rũ Point đối tượng?

+0

Piggybacking off this - có bất kỳ tốt đẹp một lớp lót để tạo ra một Polygon từ kết quả của việc gọi 'bounds' trên một đối tượng Shapely? – kuanb

Trả lời

13

Nếu bạn đặc biệt muốn tạo hình đa giác từ điểm hình học shapely, sau đó gọi thuộc tính x, y của chúng trong danh sách hiểu. Nói cách khác:

from shapely import geometry 

poly = geometry.Polygon([[p.x, p.y] for p in pointList]) 

print(poly.wkt) # prints: 'POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))' 

Lưu ý rằng bạn đủ thông minh để đóng đa giác thay mặt bạn, tức là bạn không nhất thiết phải chuyển lại điểm đầu tiên ở cuối.

+0

cho tôi nó hoạt động giống như poly = Polygon ([[p [0] .x, p [0] .y] cho p trong pointList]) – Piyush

+0

Âm thanh như bạn có các điểm lồng nhau (đa điểm?) Hoặc một dòng thay thế? – shongololo

+1

Ngoài ra, đừng quên nhập thư viện bị đe dọa: từ shapely.geometry import Polygon – inigo333

3

Một đối tượng Polygon đòi hỏi một danh sách lồng nhau của các con số, không phải là một danh sách các đối tượng Point.

polygon = Polygon([[0, 0], [1, 0], [1, 1], [0, 1]]) 
+0

Điều này sẽ không hoạt động như được hiển thị. Nó phải là một danh sách các tọa độ điểm, tức là: đa giác = Đa giác ([[0,0], [1,0], [1,1], [0,1]]) – shongololo

+0

@shongololo Cảm ơn bạn đã đứng đầu, Tôi hiểu sai tài liệu. –

Các vấn đề liên quan