Попытка растеризовать шейп-файл полилиний с определенным атрибутом, используя функцию растеризации из библиотеки Rasterio. Эта функция нуждается в итерации, содержащей кортежи (geometry, value), причем геометрия является GeoJSON-подобным объектом (см. документация ). Эту геометрию можно извлечь с помощью фионы или геопанды, я прочитал этот вопрос и попробовал ее (как и с геопандами), но геометрия неверна, так как я проверял ее с помощью is_valid_geom, и результат «ложь», что кажется логичным, потому что, когда я печатаю эту геометрию, она отображает: <generator object <genexpr> at 0x000001903856C048>
. Я тоже пытался с Фионой так:
shapeee = fiona.open(shapefile)
geom_fiona = [shapes['geometry'] for shapes in shapeee]
attrib_fiona = [shapes['properties']['OBJECTID'] for shapes in shapeee] # attribute
print(features.is_valid_geom(geom_fiona)) # FALSE
, который также возвращает «ложь», но я не понимаю почему, потому что геометрия кажется правильной:
print(geom_fiona)
"[{'type': 'LineString', 'coordinates': [(177421.98120000213, 142766.21020000055), (177409.1555000022, 142781.71609999985), (177392.76659999788, 142801.65300000086) and so on..."
Таким образом, в конце, когда я пытаюсь растеризовать, я не получаю никакого сообщения об ошибке, но на выходе получается пустое изображение со всеми значениями до 0 ... Код растеризации:
tuples = []
for i in range(0,len(geom_fiona)-1,1):
tuples.append([geom_fiona[i],attrib_fiona[i]])
burned = features.rasterize(tuples, out_shape=new_dataset.shape,default_value=-99,dtype=rasterio.float64)
Примечание: я уже прочитал это , и проекции одинаковы между моим шейп-файлом и растром, который используется для ратификации
Кто-нибудь знает, в чем может быть проблема?