Взять пары из списка в цикле? - PullRequest
0 голосов
/ 27 августа 2018

Я собрал файлы, которые заканчиваются на PST.shp и DBOUND.shp соответственно.Затем сохраняются в списки, как показывает код.

список ps

['C:\\Users\\user\\Desktop\\sa\\43001\\PST\\PST.shp',
 'C:\\Users\\user\\Desktop\\sa\\43003\\PST\\PST.shp']

и db

['C:\\Users\\user\\Desktop\\sa\\43001\\DBOUND\\DBOUND.shp',
 'C:\\Users\\user\\Desktop\\sa\\43003\\DBOUND\\DBOUND.shp']

Позже, должен быть в циклекоторый использует первую пару в каждом списке и выполняет операции. Затем вторая пара и так далее:

Примерно так:

for i in list(zip(ps,db)):
    db1 = gpd.read_file(db[0])
    pst1 = gpd.read_file(ps[0])
    db1['geometry'] = dbound.buffer(0.001)
    wdp = gpd.sjoin(pst1, db1, how="left", op='within')

Вопрос в том, как это сделать без установки [0]и так каждый раз, но делать ли это автоматически для всех существующих пар в каждой итерации?

Обновление

Во время экспорта каждый экспорт заменяет предыдущий в цикле, как экспортироватькаждый из них в папке, которая будет иметь имя исходной папки, например, так: если каталог 'C: \ Users \ user \ Desktop \ sa \ 43001 \ PST \ PST.shp`, создайте папку с именем 43001 иэкспортированный файл и то же самое для остальных;вот мой код для экспорта.

    o = r'C:\Users\user\Desktop\resultss'
    out = o+'\\'+'pst'
    wdp.to_file(out)

1 Ответ

0 голосов
/ 27 августа 2018

Вы можете просто использовать zip.

Ex:

for i, v in zip(ps,db):
    db1 = gpd.read_file(v)
    pst1 = gpd.read_file(i)
    db1['geometry'] = dbound.buffer(0.001)
    wdp = gpd.sjoin(pst1, db1, how="left", op='within')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...