Как вы перебираете точки в многоугольнике?

Я создал полигон, используя sympy.geometry Пакет, как показано ниже:

poly1 = Polygon((39.,4.), (32.,30.), (40.,10.), (42.,10.), (43.,14.))

Точки многоугольника являются координатами lon/lat. Теперь я хочу проецировать многоугольник на эллипсоид (Землю) и вычислить площадь многоугольника.

Я написал следующий код:

from pyproj import Proj

#specify projection for the Earth using reference ellipsoid"
wgs84=pyproj.Proj("+init=EPSG:4326")
poly1_transformed=[]

for point in poly1:

    new_point = wgs84(point)
    poly1_transformed.append(new_point)

Однако я не могу перебрать точки в многоугольнике. Есть ли способ сделать это или альтернативный метод, чтобы я мог спроектировать весь полигон (и в конечном итоге вычислить площадь)?

Это моя ошибка:

TypeError                                 
Traceback (most recent call last)
<ipython-input-65-0c7501bb5894> in <module>()
  5 wgs84=pyproj.Proj("+init=EPSG:4326")
  6 
 ----> 7 for point in poly1:
  8     new_point = wgs84(point)
  9     print (point, new_point)

 TypeError: 'Polygon' object is not iterable

1 ответ

Вы можете получить очки с помощью poly1.args вместо этого, так как Polygon объекты не повторяемы:

for point in poly1.args:
    new_point = wgs84(point)
    poly1_transformed.append(new_point)
Другие вопросы по тегам