многоугольник отображается в Google Планета Земля – simpleKML

background - я пытаюсь создать круговой многоугольник и добавить его в kml, используя simpleKML.

kml знает, что должен быть добавлен многоугольник, и он имеет правильный цвет, ширину и описание, но всякий раз, когда я приближаюсь к месту, он приводит меня к координатам 0,0 и без полигона.

Мой код для создания полигона выглядит так:

pol = kml.newpolygon(name=pnt.name) 
pol.description = ("A buffer for " + pnt.name)
pol.innerboundaryis = [newCoord]
pol.style.linestyle.color = simplekml.Color.green
pol.style.linestyle.width = 5
pol.style.polystyle.color = simplekml.Color.changealphaint(100, simplekml.Color.green)

где «newCoord» — это двумерный массив со всей информацией о широте и долготе, хранящейся в нем.

Поскольку я думал, что массив может неправильно форматировать данные, я попытался сформировать простой треугольный многоугольник, используя код:

pol1 = kml.newpolygon(name=pnt.name) 
pol1.innerboundaryis = [(46.714,-75.6667),(44.60796,-74.502),(46.13910,-74.57411),(46.714,-75.6667)]
pol1.style.linestyle.color = simplekml.Color.green
pol1.style.linestyle.width = 5
pol1.style.polystyle.color = simplekml.Color.changealphaint(100, simplekml.Color.green)

но у него та же проблема, что и у первого.

Я безуспешно пытался сформировать многоугольник с помощью .innerboundaryis() и .outerboundaryis(), и у меня заканчиваются идеи.

edit: я должен добавить, что открываю файл kml в Google Earth


person Daniel Mutton    schedule 29.05.2018    source источник


Ответы (1)


В Интернете почти нет документации по этой проблеме, поэтому я решил опубликовать ответ на свой вопрос для всех, у кого возникнет эта проблема в будущем.

Это код, который я использовал, чтобы заставить полигон работать.

    newCoords = []
    pol = kml.newpolygon(name=pnt.name) 
    pol.description = ("A buffer for " + pnt.name)

    if pnt.name in bufferList:
        bufferRange = input('Enter the buffer range. ' )
        for i in range(360):
            newCoords.append( ( math to calculate Lat, math to calculate Long ) )
            pol.outerboundaryis.coords.addcoordinates([newCoords[i]])


        pol.style.linestyle.color = simplekml.Color.green
        pol.style.linestyle.width = 5
        pol.style.polystyle.color = simplekml.Color.changealphaint(100, simplekml.Color.green)

Вам нужно поместить свои координаты в список, прежде чем добавлять их к внешней границе полигона с помощью функции «coords.addcoordinates()». Кроме того, это должен быть одномерный список, поэтому координаты широты и долготы должны храниться в одном месте.

Вы можете вводить числа с плавающей запятой напрямую с помощью '.outerboundaryis()', например:

pol.outerboundaryis = [(18.333868,-34.038274), (18.370618,-34.034421),
                       (18.350616,-34.051677),(18.333868,-34.038274)]

Но '.addcoordinates()' принимает только списки и целые числа.

person Daniel Mutton    schedule 30.05.2018
comment
Не могли бы вы поделиться полным кодом для этого, это будет полезно. Спасибо - person Prashant Pathak; 29.06.2020