Растры с расстоянием до объекта
Добавлено: 24 май 2015, 12:16
Добрый день. Помогите, пожалуйста, понять, в чём проблема.
Нужны растровые слои, где в значениях каналов будут расстояния в метрах до тех или иных объектов. Сначала до дороги. Основываюсь на алгоритме, описанном здесь:
http://www.mikemeredith.net/blog/1212_G ... n_QGIS.htm
Проект с СК WGS84/UTM54N.
ИЗ OSM беру слой дорог, обрезаю лишнее, пересохраняю слой в СК проекта - road.
Добавляю слой plots, чтобы ориентироваться на исследуемую площадь.
Растеризую слой road, вручную указывая границы искомого слоя - получаю road_raster.tif о значениями 1 по месту нахождения дороги, остальные пиксели со значением "0".
Далее иду Растр -> Анализ -> Карта близости. Исходный файл road_raster, целевой road_dist. Единицы измерения - GEO. Но прога выдаёт ошибку:
ERROR 6: GDALDriver::Create() ... no create method implemented for this format.
Traceback (most recent call last):
File "C:\OSGeo4W\bin\gdal_proximity.py", line 166, in
dst_ds.SetGeoTransform( src_ds.GetGeoTransform() )
AttributeError: 'NoneType' object has no attribute 'SetGeoTransform'
Если убрать параметр "-of GMT", то процесс проходит, но снова ошибка:
Warning 1: Pixels not square, distances will be inaccurate.
Но растр road_dist добавляется. Как и положено, на слое дорог значения "0", увеличиваются по мере удаления.
На первый взгляд, всё адекватно, но на проверку оказывается, что значения сильно разнятся с фактическими.
Точки, которые линейкой в том же QGISе или SAS.Планете имеют одни значения удалённости от дороги, имеют другие значения, если ориентироваться на значения пикселя слоя road_dist. Наиболее близкие точки имеют разницу в 10-15 м, наиболее отдалённые - в 2000 м (фактические и "линеечные" значения меньше, чем на полученном растре).
Понимаю, что проблема, скорее всего, кроется в выборе проекций/систем координат. Но пробовал всё то же самое с World Equidistant Cylindrical, WGS84/Plate Carree, WGS84/World Mercator, Pseudo Mercator - бесполезно.
Поэтому очень прошу подсказать, в чём моя ошибка, или что дополнительно нужно указать для решения проблемы?
Спасибо!
Нужны растровые слои, где в значениях каналов будут расстояния в метрах до тех или иных объектов. Сначала до дороги. Основываюсь на алгоритме, описанном здесь:
http://www.mikemeredith.net/blog/1212_G ... n_QGIS.htm
Проект с СК WGS84/UTM54N.
ИЗ OSM беру слой дорог, обрезаю лишнее, пересохраняю слой в СК проекта - road.
Добавляю слой plots, чтобы ориентироваться на исследуемую площадь.
Растеризую слой road, вручную указывая границы искомого слоя - получаю road_raster.tif о значениями 1 по месту нахождения дороги, остальные пиксели со значением "0".
Далее иду Растр -> Анализ -> Карта близости. Исходный файл road_raster, целевой road_dist. Единицы измерения - GEO. Но прога выдаёт ошибку:
ERROR 6: GDALDriver::Create() ... no create method implemented for this format.
Traceback (most recent call last):
File "C:\OSGeo4W\bin\gdal_proximity.py", line 166, in
dst_ds.SetGeoTransform( src_ds.GetGeoTransform() )
AttributeError: 'NoneType' object has no attribute 'SetGeoTransform'
Если убрать параметр "-of GMT", то процесс проходит, но снова ошибка:
Warning 1: Pixels not square, distances will be inaccurate.
Но растр road_dist добавляется. Как и положено, на слое дорог значения "0", увеличиваются по мере удаления.
На первый взгляд, всё адекватно, но на проверку оказывается, что значения сильно разнятся с фактическими.
Точки, которые линейкой в том же QGISе или SAS.Планете имеют одни значения удалённости от дороги, имеют другие значения, если ориентироваться на значения пикселя слоя road_dist. Наиболее близкие точки имеют разницу в 10-15 м, наиболее отдалённые - в 2000 м (фактические и "линеечные" значения меньше, чем на полученном растре).
Понимаю, что проблема, скорее всего, кроется в выборе проекций/систем координат. Но пробовал всё то же самое с World Equidistant Cylindrical, WGS84/Plate Carree, WGS84/World Mercator, Pseudo Mercator - бесполезно.
Поэтому очень прошу подсказать, в чём моя ошибка, или что дополнительно нужно указать для решения проблемы?
Спасибо!