Отображать матрицу происхождения и назначения в QGIS?


17

У меня есть центральная точка на карте, и у меня есть другие точки в отдельном слое (местоположение места и города происхождения посетителей места). Есть ли плагин, который генерировал бы выходные данные, подобные картам назначения авиакомпаний, как это;

пример

Они не должны быть линиями типа «большой круг», подойдут только прямые. Это для визуального представления места происхождения для посетителей определенных событий.

Любые советы или рекомендации плагинов?


3
Я подозреваю, что сообщение в блоге Underdark по этой теме должно ответить на ваш вопрос, см. ВИЗУАЛИЗАЦИЯ ГЛОБАЛЬНЫХ СОЕДИНЕНИЙ . Матрица расстояний также, вероятно, не лучшее прилагательное, возможно, «карта потока» или «место назначения». Вот два других примера на сайте для справки: Представление сетевых потоков и Как создать дуги между двумя точками в Python? , Возможно, поменять сеть вместо расстояния?
Энди Ш

Спасибо, что поправили меня, вы правы, я не знал, как описать то, что мне нужно. Underark точно сделал то, что я после, но она действительно не описывает, как это было сделано. Если у меня есть три пункта, как мне связать два из них с третьим? Скажем, у меня есть такая таблица: "lat-origin, long-origin, lat-dst, lon-dest"
normis

2
Я бы сказал, просто отредактируйте свой вопрос, чтобы четко указать, как настроены ваши данные в данный момент, и, скорее всего, он придет (или другой пользователь QGIS) и даст ответ для вашей конкретной ситуации.
Энди W

Ответы:


9

Если вы просто хотите соединить точки происхождения / назначения и не нуждаетесь в изогнутых линиях «большого круга», взгляните на плагин QGIS под названием « mmqgis ». У него есть инструмент Hub Lines , который, я думаю, создаст тот визуал, который вы ищете.

«Инструмент линий хабов создает диаграммы хабов и спиц с линиями, проведенными от точек на слое« Spoke Point »к совпадающим точкам на слое« Hub Point ». Определение того, какой хаб идет с каждой точкой, основано на совпадении между« Hub » Атрибут ID "на точках концентратора и" Атрибут идентификатора спицы "на точках луча".


5

Чтобы это работало, вам понадобится работающая установка PostGIS. Шейп-файлы могут быть загружены в PostGIS с помощью инструмента QGIS PostGIS Manager.

Запросы SQL могут выполняться в нескольких инструментах из QGIS (если он имеет соединение с базой данных PostGIS), например. RT SQL Layer плагин.

Если у вас есть только одна точка назначения, но несколько исходных точек (таблица «источник»), SQL-запрос в http://underdark.wordpress.com/2011/08/20/visualizing-global-connections/ можно упростить до:

CREATE TABLE connections AS (
  source.id,
  SELECT ST_Transform(ST_Segmentize(ST_MakeLine(
    ST_Transform(ST_SetSRID(ST_Makepoint(--your lon lat here--),4326), 953027),
    ST_Transform(source.the_geom, 953027)
  ), 100000 ), 4326 ) AS the_geom
FROM source
);

Не забудьте сначала вставить CRS # 953027.


хорошо, вопрос для начинающих, где я могу использовать это в QGIS? Похоже на команду базы данных, но я никогда не использовал источники базы данных в Qgis, и при этом я не знаю, куда вставить вышеупомянутое :) Все мои источники данных - файлы SHP или CSV.
Нормис

1
В этом случае я рекомендую ознакомиться с некоторыми учебными пособиями по PostGIS и руководством по QGIS по работе с базами данных.
Подземье

Также без CRS # 953027 вы можете использовать функцию географии в PostGIS: gisforthought.com/great-circle-flight-lines-in-postgis и gis.stackexchange.com/a/84583/16530
HeikkiVesanto

4

Вы можете изобразить карты потоков с помощью расширения отображения потоков узлов-2-узлов, которое доступно в репозитории плагинов QGIS;

http://plugins.qgis.org/plugins/FlowMapper/

в zip-файле содержатся также образцы данных и документация.

координаты входного узла и матрица взаимодействия должны быть в плоском текстовом формате, разделенные пробелами.


3

Вы можете попытаться следовать инструкциям Джеймса Чешира из поста Mapping of the Biggest Airlines, чтобы добиться этого в R и ggplot2 :

введите описание изображения здесь

Некоторые более общие советы отображения в R, также описаны в Great Maps с ggplot2 постом


1
Также для R у Натана Яу есть аналогичное руководство, поеданиеdata.com/2011/05/11/… .
Энди W

0

Предполагая, что ваши данные настроены как;

ID Origin_X Origin_Y Dest_X Dest_Y

бесплатный пакет CrimeStat может принимать в качестве входных данных шейп- файл с местами отправления и назначения и выводить шейп-файл с нарисованными линиями. Я уверен, что вам просто нужно указать уникальный идентификатор в вашем шейп-файле, чтобы сообщить CrimeStat, какие линии нужно подключить.

Я уверен, что вы можете сделать это более непосредственно в QGIS, но CrimeStat предоставляет удобный графический интерфейс для выполнения задачи, если это необходимо. Предыдущие вопросы на сайте, который вы хотите просмотреть, помечены как .

Обратите внимание, что вы можете использовать проекционные координаты или широту в CrimeStat, но это не приведет к появлению больших круговых линий (которые требуют разбиения линий на множество меньших сегментов).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.