Страница 1 из 1

Сетевой анализ QGIS

Добавлено: 22 апр 2017, 10:24
Оля
Добрый день! Пытаюсь повторить пример из данной статьи http://gis-lab.info/qa/qgis-network-analysis-lib.html, на своих данных. Согласно статье ввожу в консоль Python следующий код:
Road=iface.activeLayer()
from qgis.networkanalysis import *
director = QgsLineVectorLayerDirector( Road, -1, '', '', '', 3 )
director = QgsLineVectorLayerDirector( Road, 5, 'yes', '1', 'no', 3 )
properter = QgsDistanceArcProperter()
director.addProperter( properter )
crs = QgsCoordinateReferenceSystem("EPSG:32645")
builder = QgsGraphBuilder(crs)
startPoint = QgsPoint( 84.87679719, 56.37931582 )
endPoint = QgsPoint( 84.87367968, 56.37734577 )
tiedPoints = director.makeGraph( builder, [ startPoint, endPoint ] )
graph = builder.graph()
startId = graph.findVertex( tiedPoints[ 0 ] )
endId = graph.findVertex( tiedPoints[ 1 ] )
Но почему-то построения дорожного графа не происходит. Не понимаю почему. Кто-то пробовал делать что-то подобное? Что не так? Спасибо за ответы.

Re: Сетевой анализ QGIS

Добавлено: 24 апр 2017, 18:36
KolesovDmitry
Выводит какую-нибудь ошибку или молча все происходит?

Re: Сетевой анализ QGIS

Добавлено: 24 апр 2017, 20:39
Оля
молча, ошибок нет

Re: Сетевой анализ QGIS

Добавлено: 25 апр 2017, 12:20
gamm
Оля писал(а):молча, ошибок нет
а с чего вы взяли, что путь не построен? вы в результат заглядывали?

Re: Сетевой анализ QGIS

Добавлено: 25 апр 2017, 15:52
Александр Мурый
Опишите, пож-та, все ваши действия. желательно со скриншотами. Какие у вас данные?

Re: Сетевой анализ QGIS

Добавлено: 26 апр 2017, 16:45
Оля
Александр Мурый писал(а):Опишите, пож-та, все ваши действия. желательно со скриншотами. Какие у вас данные?
Данные OSM для Томской области (shape), слой highway-line. Добавляю слой в проект QGIS, СК WGS 84 UTM zones 45N. Шаги повторяю согласно статье, ссылка вверху.
Шаг 1. Импортирую модуль сетевого анализа через консоль Python (расширение установлено)

Код: Выделить всё

from qgis.networkanalysis import * 

Шаг 2. Активирую слой дорожной сети

Код: Выделить всё

Road = qgis.utils.iface.mapCanvas().currentLayer()
Шаг 3. Затем создаю директора, с помощью которого будет строиться дорожный граф.

Код: Выделить всё

director = QgsLineVectorLayerDirector( Road, 5, 'yes', '1', 'no', 3 )
значения в скобках соответствуют данным OSM.
Шаг 4. Стратегия назначения свойств ребрам графа

Код: Выделить всё

properter = QgsDistanceArcProperter()
Шаг 5. Директору сообщаю об используемой стратегии

Код: Выделить всё

director.addProperter (properter)
Шаг 6. Задаю систему координат

Код: Выделить всё

 crs = QgsCoordinateReferenceSystem ("EPSG:32645")
Шаг 7. Создаю строителя, который будет строить граф

Код: Выделить всё

builder = QgsGraphBuilder( crs )
Шаг 8. Задаю начальную и конечную точки, которые будут использоваться для анализа

Код: Выделить всё

startPoint = QgsPoint( 84.87679719, 56.37931582 )

Код: Выделить всё

endPoint = QgsPoint( 84.87367968, 56.37734577 )
Шаг 9. Записываются координаты привязанных точек

Код: Выделить всё

tiedPoints = director.makeGraph( builder, [ startPoint, endPoint ] )
Шаг 10. Строится граф

Код: Выделить всё

graph = builder.graph()
Шаг 11. Заданные точки индексируются

Код: Выделить всё

startId = graph.findVertex( tiedPoints[ 0 ] )

Код: Выделить всё

endId = graph.findVertex( tiedPoints[ 1 ] )
Все команды отрабатывают, но с дорожной сетью ничего не происходит.
Как выполнять шаги 2 и 6 в статье не указано, искала эту информацию в других источниках.

Re: Сетевой анализ QGIS

Добавлено: 28 апр 2017, 07:22
Александр Мурый
В указанном примере создаётся граф в виде объектов QgsGraph (в формате библиотеки сетевого анализа). Больше вы ничего и не увидите без определённых действий.
Какова ваша конечная цель? Визуализировать граф? Построить маршрут по кратчайшему расстоянию? Или ещё что-то? В статье показаны и примеры визуализации тоже.