Как сохранить данные в Shapefile, после того как я прочитал их из других файлов? - PullRequest
0 голосов
/ 28 марта 2020

У меня есть 2 файла с данными. Я хочу go просмотреть данные в этих файлах и сохранить их в Shapefile. Это мой код:

import shapefile
w = shapefile.Writer(shapefile.POLYGON)
with open('long_1_double.txt', 'r') as long:
    for i in long:
            i_1, i_2 = i.split()
            with open('short_1_double.txt', 'r') as short:
                for k in short:
                    k_1, k_2 = k.split()
                    w.poly(parts=[[[str(i_1),str(k_1)],[str(i_2),str(k_1)],[str(i_2),str(k_2)],[str(i_1),str(k_2)]]])
                    w.field('FIRST_FLD','C','40')
                    w.field('SECOND_FLD','C','40')
                    w.record('First','Polygon')
w.save('polygon')

После того, как я запустил его, я получил ошибку:

TypeError: expected str, bytes or os.PathLike object, not int

Как сохранить эти данные в Shapefile и исправить ошибку?

Если это может быть полезно, у меня есть скрипт, в котором я хранил данные в формате geo json, и он работает.

count = 0
file_is_empty = True
with open(final, 'w') as fin:
    fin.write('{"type": "FeatureCollection","features": [')
    with open('long_1_double.txt', 'r') as long:
        for i in long:
            i_1, i_2 = i.split()
            with open('short_1_double.txt', 'r') as short:
                for k in short:
                    k_1, k_2 = k.split()
                    string = '' if file_is_empty else ','
                    string += '{"type": "Feature", "properties": {"area": ' +str(count)+'}, "geometry": {"type": "Polygon", "coordinates": [[['+str(i_1) + ',' + str(k_1)+ ']'+',' + '[' + str(i_2)+','+str(k_1) + ']'+',' + '['+str(i_2)+ ',' + str(k_2) +'],'  + '[' + str(i_1)+ ',' + str(k_2) +']]]}}'
                    fin.write(string)
                    file_is_empty = False
                    count+=1
    end = ']}'
    fin.write(end)

Это результат скрипта geo json:

{
    "type": "FeatureCollection",
    "features": [{
        "type": "Feature",
        "properties": {
            "area": 1
        },
        "geometry": {
            "type": "Polygon",
            "coordinates": [
                [
                    [90.00526999999931, -0.004729999999999964],
                    [90.00553999999863, -0.004729999999999964],
                    [90.00526999999931, -0.004459999999999928],
                    [90.00553999999863, -0.004459999999999928]
                ]
            ]
        }
    },{
        "type": "Feature",
        "properties": {
            "area": 81
        },
        "geometry": {
            "type": "Polygon",
            "coordinates": [
                [
                    [90.00742999999386, -0.002569999999999677],
                    [90.00769999999319, -0.002569999999999677],
                    [90.00742999999386, -0.0022999999999996413],
                    [90.00769999999319, -0.0022999999999996413]
                ]
            ]
        }
    }]
}

Мне нужны те же данные, но в Shapefile. Как я могу получить это?

Спасибо)

...