Соедините центроиды сетки в python, используя shapely, geo pandas и индексацию - PullRequest
0 голосов
/ 06 февраля 2020

Я новичок в мире программирования и сейчас пишу программу для своей диссертации.

Я использую Python, чтобы сделать следующее:

  • У меня есть замкнутый многоугольник, где я создаю большую сетку из коробок в форме.

  • Индексные ячейки индексируются, начиная с нижнего левого, затем повышаясь, затем опускаясь и один вправо: эти прямоугольники нужны для дискретизации многоугольника. Что я мог бы успешно сделать: Valid boxes of the grid (within the polygon)

Теперь: я получил центроиды каждого действительного ящика и их соответствующие координаты x и y. Теперь я хочу связать центроиды блоков для каждого значения x следующим образом:

Aim

Я попытался связать их, используя два цикла for:

def pathplanning_on_vb(Boxes_within, Box_edge_length):
    '''This function takes the gridboxes within the closed polygon(Boxes_within), 
    gives me the coordinates (x- and y-values) of their centerpoints 
    and aims to deliver LineStrings, 
    which connect the centers of the gridboxes vertically! 
    As of now, it only delivers vertical lines from ymin to ymax over xmin to xmax.'''

    centerpoints = Boxes_within.centroid
    x_coords = centerpoints.geometry.x 
    y_coords = centerpoints.geometry.y
    for x in x_coords:
        for y in y_coords:
            path.append(LineString([(x, y), (x, y + Box_edge_length)]))

Но это дает мне строки, которые go от miny до maxy (что логично)

output

Is Есть ли способ создать линии для каждого заданного значения c x- И y, чтобы связать только центроиды сетки (!) по вертикали? Или у кого-нибудь есть предложения, как мне выполнить эту задачу?

Дополнительная информация:

, центральные точки - это файл геосерий, x_ и y_coords - геоданные. Каждый из них, соответственно, все еще имеет начальный номер поля в своем первом столбце (поэтому первая запись в x_ и y_coords равна '16'). Это способ их соединения?

Спасибо за ваше внимание и помощь

...