Почему скорость производительности между ArcGIS и QGIS так различна?

17

Хорошо, я не программист, но плодовитый пользователь ГИС. Я знаю, что QGIS написан на C ++ и ArcGIS в ??? но в последнее время для большинства своих задач я всегда стараюсь использовать QGIS не только потому, что он бесплатный, но и потому, что его пользовательский опыт настолько хорош.

Все гуру ГИС, можете ли вы сказать мне некоторые причины разницы в скорости между этими двумя системами? Честно говоря, мне больно использовать ArcGIS 10 из-за его скорости, и у меня есть компьютер с 8 ГБ ОЗУ.

GeoH2O
источник
3
Можете ли вы предоставить больше информации о том, какие аспекты вы считаете медленными? Например, поиск данных, анализ растров, геообработка и т. Д.?
Стивен Лид
Общий опыт очень медленный .. я имею в виду добавление шейп-файлов ... открытие arctoolbox и т. Д.
GeoH2O
2
ArcGIS определенно не написано в .NET. Он в основном написан на C ++ с множеством других вещей ...
Devdatta Tengshe
1
@StephenLead, я работал ogr2ogrв 36 раз быстрее, чем Arcgis при конвертации шейп-файлов ( ссылка ). Я ожидаю, что QGIS будет немного медленнее, чем barebones ogr2ogr в той же задаче, но ненамного, поскольку он использует ogr (доказательства в любом случае приветствуются).
Мэтт Вилки
3
Может быть, разговор о: конкретные различия в скорости могут быть продолжены в другом месте, возможно, чат? chat.stackexchange.com/transcript/message/3510767#3510767
Мэтт Уилки

Ответы:

10

ArcGIS кажется очень раздутым. Я помню огромный скачок производительности при переходе с Arcview 3.2 на ArcGIS 8.0, и во многих местах он все еще существует. В то время я думал, что это во многом связано с переносом ESRI более раннего кода Arc / Info в Windows и необходимостью снизить производительность, но я не уверен, правда ли это. Я помню, как видел на этом сайте несколько примеров функций, которые все еще значительно быстрее в Arcview 3.3, чем в ArcGIS 10. Это не имеет никакого отношения ко времени запуска и т. Д. И я не согласен с предыдущим ответом, чем с навыками пользователя. ». Нажатие и ожидание не имеют ничего общего с навыком.

Я думаю, что реальность такова, что ArcGIS не был написан с учетом производительности, и каждая версия пытается добавить все больше и больше функциональности на уже перегруженную платформу кода.

blindjesse
источник
12

Я не очень знаком с QGIS, но мне интересно, как он сравнивается с ArcGIS с точки зрения расширяемости. К сожалению, кажется, что есть хотя бы некоторые компромиссы между расширяемостью и производительностью. Лучший способ почувствовать расширяемость ArcGIS - это посмотреть на категории COM-компонентов Esri, найденные в реестре.

Каждая категория представляет собой место, где пользователи могут регистрировать библиотеки, содержащие классы, которые реализуют интерфейс Esri. Есть много категорий. Эти категории также содержат собачий корм - Esri использует их не только для обнаружения настроек сторонних производителей, но и из коробки. Хотя это обеспечивает очень тонкую настройку, это также означает, что все эти мелкие зерна должны быть обнаружены и загружены во время выполнения. Я не уверен , сколько стоит переезд , но он должен быть значительным.

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

C:\Program Files (x86)\ArcGIS\Desktop10.0\Bin\Categories.exe

Когда вы создаете dll в Visual Studio, есть место, где вы можете указать базовый адрес для загрузки dll. Поскольку загружается так много библиотек разных размеров, заранее знать это для настройки ArcObjects было бы очень сложно. Тем не менее, мне интересно, если файл конфигурации может быть создан с указанием, где DLL должен быть загружен в память. Если это так, как только пользователь запустит arcmap с загруженными dll, которые он обычно будет использовать, он может запустить процедуру, которая записывает базовые адреса dll в файл конфигурации. Таким образом, при запуске arcmap можно избежать перемещения путем загрузки в эти адреса. Опять же, может быть, с 64 бит это не имеет значения.

В 10.0 Esri представил надстройки. Категории надстроек намного меньше, и обнаружение не зависит от реестра Windows. Вместо этого dll надстройки заархивированы и помещены в известную папку. Я не уверен, как это сравнивает по производительности с DLL, обнаруженные через реестр Windows. Я думаю, что главная цель состояла в том, чтобы разрешить установку не администраторами.

Я предполагаю, что вопрос относится к продукту для настольных ПК. Новый продукт ArcGIS Runtime намного легче. Я слышал, что это описывается как замена MapObjects. Будет интересно посмотреть, как это будет развиваться. Если Esri представит расширяемость для WPF Runtime, я надеюсь, что они не используют тот же механизм обнаружения, который используется Visual Studio, когда он заполняет список сборок. Первое нажатие кнопки «Добавить ссылку ...» стало мучительно медленным.

Кирк Куйкендалл
источник
3
Несколько лет назад торговый представитель Esri сказал мне, что Esri обладает самой большой в мире COM-библиотекой, которая намного больше, чем что-либо, созданное даже Microsoft. С тех пор я предположил, что часть медлительности Arcgis Desktop загружает всю эту библиотеку одновременно, а не просто захватывает куски и куски, необходимые по требованию.
Мэтт Уилки
@mattwilkie Время запуска ArcMap раньше было намного медленнее. Чтобы улучшить его, они представили расширения как раз вовремя . Я не уверен, но я думаю, что подобный подход используется с объектами gx, которые загружаются при первом запуске диалога добавления данных.
Кирк Куйкендалл
хмм. Время запуска для меня не быстрее (если я иду из памяти, а не из данных, так что это может быть просто восприятие). 17 секунд от нажатия кнопки Arcmap 10 на панели задач до тех пор, пока она не будет готова что-то сделать (с отключенной функцией «загрузить последнюю карту»). 2-й сеанс около 12 с. Это после замены жесткого диска C: на SSD. Квант занимает 4 секунды для первого запуска и 2 секунды для следующего.
Мэтт Вилки
@mattwilkie Да, в то же время они добавили новые панели инструментов и т. д., поэтому любой выигрыш в производительности по сравнению с точным временем, вероятно, не полностью компенсировал задержки, вызванные новыми функциями программного обеспечения. Также необходимо учитывать и другие факторы: доступ к серверу лицензий? Сколько оперативки? Это быстрее, если вы удаляете / переименовываете свой normal.mxt? (протестируйте второй раз после удаления, так как при первом запуске потребуется время на его повторное создание). Установлены ли у вас настройки?
Кирк Куйкендалл
1
Кирк: отличный ответ. @mattwilkie: это правда. В какой-то момент у миссис Офис было около 400 (+?) COM-объектов. Я думаю, что к настоящему времени в базе геоданных их так много. Правда в том, что, к лучшему или к худшему, ESRI сошла с ума от COM. Я думаю, что в то время это было безопасное решение.
Раги Язер Бурхум
8

Простите, что воскресил поток, но я могу привести конкретный пример того, как пользовательский интерфейс отличается для ArcMap и QGIS.

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

В ArcMap это заняло у меня около 10 минут, от загрузки данных до готового набора данных. В QGIS (Вроцлав), программа потерпела крах дважды, просто обрезав сетку полигоном, затем запустилась в течение часа, прежде чем завершить с третьей попытки. Это на коробке с 4 двухъядерными и 6 Гб оперативной памяти.

Я люблю QGIS, и меня раздражает использование ArcMap, но я нахожу множество распространенных случаев, когда QGIS не отвечает моим потребностям.

Теперь, если у кого-нибудь есть какие-либо советы по настройке производительности, которые могли бы устранить этот разрыв в производительности, я весь в ушах.

Крис

iamchriskelley
источник
согласился, но для чего это стоит, я всегда вначале
стекаюсь
1
Похоже, ошибка для меня. Сбои - это не показатель плохой работы, а признак того, что что-то не так. Сообщите об этом людям QGIS
Никлас Авен
На какой большой площади вы строите эту точечную сетку? Просто выполнил тот же тип операции с 57k точками в QGIS (1.9) без проблем.
Симбамангу
@Simbamangu это было для ограничительной рамки вокруг Гондураса - примерно полмиллиона очков. в Nicklas_Aven: точка занята; если у меня будет время, чтобы воспроизвести достоверно, я представлю.
iamchriskelley
6

Я не думаю, что Arc написана на .NET. Аркобекты написаны на C ++. Дуга может быть медленнее из-за использования многих продвинутых графических интерфейсов, справочных инструментов, дополнений и т. Д. QGIS - отличное программное обеспечение, но в нем отсутствуют некоторые полезные функции, которые могут быть полезны для начинающих. Также я не думаю, что базовые инструменты уровня в ESRI (Arcobjects) работают медленно. Обычно это зависит от навыков пользователя, если пользователь знает, как использовать Arc, это вовсе не так медленно. Сказав это, я должен также упомянуть, что каждый инструмент должен рассматриваться на индивидуальной основе в отношении его эффективности. Другое дело, что Арк был первым на сцене ГИС. Во-первых (относительно QGIS) всегда с ошибками, а следующее поколение немного лучше, в данном случае быстрее, но все это только мое личное мнение.

Томек
источник
2
Замечание: Я подозреваю, что, по крайней мере, некоторые части ядра ArcGIS по-прежнему написаны на Фортране (который, по слухам, является быстрым, если не быстрее, C для определенных числовых задач): Если вы запускаете консольное приложение .NET, которое использует ArcObjects, и вы нажимаете, Ctrl+Cкогда ArcObjects выполняет некоторую операцию, вы получите сообщение из библиотеки времени исполнения Fortran.
Stakx
5
Кроме того, не вдаваясь в мельчайшие подробности, ArcObjects основан на COM , одной из ранних платформ взаимодействия, и имеет свои собственные проблемы с производительностью, особенно при маршалинге между управляемым (например, .NET) и неуправляемым (C ++) кодом.
blah238
4
@stakx В этом коде на Фортране есть издержки, по крайней мере на стороне растра (Spatial Analyst). Я разработал дополнения Fortran для SA и обнаружил, что они всегда работают как минимум в пять раз быстрее. За прошедшие годы слои оболочек на оболочках на оболочках, которые были созданы для интеграции оригинального (винтажные 70-х и 80-х) кода, создавали все большую нагрузку на производительность Arc *.
whuber
6

Это относится к производительности ArcGIS: ArcMap, ArcCatalog очень медленно открываются на новом ноутбуке с достаточными ресурсами? что может частично объяснить некоторые проблемы с производительностью. Этот поток показывает, как аппаратное обеспечение, сеть и конфигурация лицензирования могут оказать существенное влияние на производительность ArcGIS. Возможно, некоторые из сообщенных различий в скорости могут быть вызваны такими факторами, а не внутренними различиями в возможностях.

(Размещено как ссылка для ответа, поскольку комментарии, как правило, теряются.)

Сообщество
источник
1
Ответы и комментарии здесь имеют разные цели, Дэн. Вы правы, комментарии имеют статус второго сорта. Одна из причин заключается в том, чтобы подчеркнуть действительно полезные ответы. Все, что не является ответом, должно быть попыткой сделать вопрос ответственным или улучшить вопрос или ответ: это комментарий, даже если он действительно блестящий.
whuber
Согласились, что версия в наших лабораториях работает лучше, чем пробная версия, которую я использую на своем ПК ...
GeoH2O
2

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

Если вы хотите улучшить свою производительность с помощью ArcGIS, я бы посоветовал несколько вещей;

Всегда используйте прогнозируемые данные. Использование баз геоданных или ArcSDE с postgresql прекрасно работает для меня.

Использование файловой базы геоданных и, если возможно, arcsde увеличивает скорость ваших операций. Мой личный опыт работы с QGIS и ArcMap фактически противоположен. Поскольку для рендеринга 3 миллионов точек на карте требуется почти несколько минут. С другой стороны, ArcMap отображает их в течение нескольких секунд.

Просто мое мнение.

Анил Челик
источник
Зачем рендерить 3 миллиона очков? Если вы имеете в виду, что слой имеет 3 миллиона точек, и некоторые из них на ваш взгляд, это тоже быстро в QGIS, но вам потребуется пространственный индекс. Но я согласен с тем, что QGIS может быть довольно трудно остановить, когда вы совершаете ошибку, пытаясь отобразить слишком много геометрий. Даже когда убиваете рендеринг с помощью esc, иногда отображаются уже отрендеренные geoemtries.
Никлас Авен