многоугольник, отображаемый в Google Планета Земля - ​​simpleKML - PullRequest
0 голосов
/ 29 мая 2018

фон - я пытаюсь создать круговой многоугольник и добавить его в 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'2D-массив со всей информацией о широте / длине, сохраненной в нем.

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

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

1 Ответ

0 голосов
/ 30 мая 2018

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

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

    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)

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

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

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

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

...