Создайте kml в python, который имеет как точки, так и линии - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь создать файл kml в python (используя simplekml), в котором есть точки и линии, соединяющие эти точки.Я также хочу превратить точки в квадраты вместо желтой кнопки по умолчанию.

Теперь я успешно создал файлы kml, которые имеют либо точки, либо линии.Но я хочу объединить два вместе в один файл.Я читаю файлы из файла CSV.Поэтому я подумал, что объединение двух кодов даст мне строку и точку, но это не так.Я просто вижу точки.Что мне здесь не хватает?

inputfile = csv.reader(open(file, 'r'))
kml = simplekml.Kml()
ls = kml.newlinestring(name='A LineString')
ls.coords = np.array([[float(row[2]),float(row[1])] for row in inputfile ])
ls.extrude = 1
ls.altitudemode = simplekml.AltitudeMode.relativetoground
for row in inputfile:
    kml.newpoint(name=row[0], coords=[(row[2], row[1])])
    pnt.style.iconstyle.icon.href = 'http://maps.google.com/mapfiles/kml/shapes/placemark_square.png'
kml.save("Points_and_Line.kml") 

1 Ответ

0 голосов
/ 19 февраля 2019

Файл находится в конце после выполнения строки 4, поэтому секунда цикла повторяется по пустому списку при попытке создания точек.

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

inputfile = csv.reader(open("points.dat", 'r')) 
points = []
for row in inputfile:
    coord = (row[2], row[1]) # lon, lat order
    pnt = kml.newpoint(name=row[0], coords=[coord])
    points.append(coord)    
    pnt.style.iconstyle.icon.href = 'http://maps.google.com/mapfiles/kml/shapes/placemark_square.png'

ls = kml.newlinestring(name='A LineString')
ls.coords = np.array(points)
ls.altitudemode = simplekml.AltitudeMode.relativetoground
ls.extrude = 1

kml.save("Points_and_Line.kml")
...