Функция растеризации растерио: невозможно ввести правильную геометрию - PullRequest
0 голосов
/ 19 июня 2019

Попытка растеризовать шейп-файл полилиний с определенным атрибутом, используя функцию растеризации из библиотеки 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)

Примечание: я уже прочитал это , и проекции одинаковы между моим шейп-файлом и растром, который используется для ратификации

Кто-нибудь знает, в чем может быть проблема?

1 Ответ

0 голосов
/ 22 июня 2019

Геометрия была действительно действительной!features.is_valid_geom(geom_fiona) вернул false, потому что я поставил всю геометрию в качестве аргумента.Запись features.is_valid_geom(geom_fiona[0]) вернулась True.Но растеризация все еще неверна и ничего не изменилось ...

...