Ok, ich bin kein Programmierer, sondern ein produktiver GIS-Benutzer. Ich weiß, dass QGIS in C ++ und ArcGIS in ??? geschrieben ist. In letzter Zeit versuche ich für die meisten meiner Aufgaben QGIS immer zu verwenden, nicht nur, weil es kostenlos ist, sondern auch, weil die Benutzererfahrung so gut ist.
Können Sie mir einige Gründe für den Geschwindigkeitsunterschied zwischen diesen beiden Systemen nennen? Ehrlich gesagt, es schmerzt mich, ArcGIS 10 aufgrund seiner Geschwindigkeit zu verwenden, und ich habe einen PC mit 8 GB RAM.
qgis
arcgis-desktop
arcgis-10.0
performance
ux
GeoH2O
quelle
quelle
ogr2ogr
beim Konvertieren von Shapefiles 36-mal schneller getaktet als Arcgis ( ref ). Ich gehe davon aus, dass QGIS bei der gleichen Aufgabe etwas langsamer ist als Barebones ogr2ogr, aber nicht viel, da es ogr verwendet (Beweise in beide Richtungen sind willkommen).Antworten:
ArcGIS scheint sehr aufgebläht zu sein. Ich erinnere mich an einen großen Leistungseinbruch bei der Migration von Arcview 3.2 auf ArcGIS 8.0, der an vielen Stellen noch vorhanden ist. Zu dieser Zeit dachte ich, dass es viel damit zu tun hat, dass ESRI früheren Arc / Info-Code auf Windows migriert und einige Leistungseinbußen hinnehmen musste, aber ich bin mir nicht sicher, ob das stimmt. Ich erinnere mich, dass ich auf dieser Site einige Beispiele zu Funktionen gesehen habe, die in Arcview 3.3 immer noch erheblich schneller sind als in ArcGIS 10. Dies hat nichts mit Startzeiten usw. zu tun '. Klicken und Warten hat nichts mit Geschick zu tun.
Ich denke, die Realität ist, dass ArcGIS nicht mit Blick auf die Leistung geschrieben wurde und jede Version versucht, immer mehr Funktionen auf eine bereits überlastete Code-Plattform zu werfen.
quelle
Ich bin mit QGIS nicht so vertraut, aber ich frage mich, wie es sich im Hinblick auf die Erweiterbarkeit mit ArcGIS vergleichen lässt. Leider scheint es zumindest einige Kompromisse zwischen Erweiterbarkeit und Leistung zu geben. Der beste Weg, um ein Gefühl für die ArcGIS-Erweiterbarkeit zu bekommen, ist ein Blick auf die COM-Komponentenkategorien von Esri in der Registrierung.
Jede Kategorie stellt einen Ort dar, an dem Benutzer DLLs registrieren können, die Klassen enthalten, die eine Esri-Schnittstelle implementieren. Es gibt viele Kategorien. Diese Kategorien enthalten auch Hundefutter - Esri verwendet sie nicht nur, um Anpassungen von Drittanbietern zu ermitteln, sondern auch, um sofort einsatzbereite Funktionen bereitzustellen. Dies bietet zwar ein sehr feinkörniges Maß an Anpassung, bedeutet jedoch auch, dass alle diese Feinkörner zur Laufzeit erkannt und geladen werden müssen. Ich bin mir nicht sicher, wie hoch die Umzugskosten sind, aber sie müssen erheblich sein.
C:\Program Files (x86)\ArcGIS\Desktop10.0\Bin\Categories.exe
Wenn Sie eine DLL in Visual Studio erstellen, gibt es einen Ort, an dem Sie die Basisadresse für das Laden der DLL angeben können . Da so viele DLLs unterschiedlicher Größe geladen werden, wäre es sehr schwierig, dies im Voraus für eine ArcObjects-Anpassung zu wissen. Trotzdem frage ich mich, ob eine Konfigurationsdatei erstellt werden könnte, die angibt, wo die DLL in den Speicher geladen werden soll. Wenn dies der Fall ist, kann ein Benutzer nach Ausführung von arcmap mit den geladenen DLLs, die er normalerweise verwendet, eine Routine ausführen, die die DLL-Basisadressen in eine Konfigurationsdatei schreibt. Auf diese Weise kann beim Start von arcmap eine Verlagerung durch Laden in diese Adressen vermieden werden . Andererseits spielt dies bei 64-Bit vielleicht keine Rolle.
Bei 10.0 führte Esri Add-Ins ein. Die Kategorien von Add-Ins sind viel kleiner, und die Erkennung hängt nicht von der Windows-Registrierung ab. Stattdessen werden die Add-In-DLLs komprimiert und in einem bekannten Ordner abgelegt. Ich bin nicht sicher, wie dies in Bezug auf die Leistung mit DLLs verglichen wird, die über die Windows-Registrierung ermittelt wurden. Ich denke, das Hauptziel war, die Installation durch Nichtadministratoren zu ermöglichen.
Ich gehe davon aus, dass sich die Frage auf das Desktop-Produkt bezieht. Das neue ArcGIS Runtime- Produkt ist viel leichter. Ich habe gehört, dass es als Ersatz für MapObjects beschrieben wurde. Es wird interessant sein zu sehen, wie es sich entwickelt. Wenn Esri die Erweiterbarkeit für WPF Runtime einführt, wird hoffentlich nicht derselbe Mechanismus für die Erkennung verwendet, der von Visual Studio beim Auffüllen der Liste der Assemblys verwendet wird. Das erste Mal, dass Sie auf "Verweis hinzufügen ..." klicken, ist schmerzhaft langsam geworden.
quelle
Verzeihen Sie, dass ich den Thread wiederbelebt habe, aber ich kann ein spezielles Beispiel dafür geben, wie sich die Benutzererfahrung für ArcMap und QGIS unterscheidet.
Heute musste ich ein Punktraster mit einem Abstand von 250 Metern über ein kleines Land hinweg erstellen, das Punktraster auf ein Ländergrenzpolygon zuschneiden und die Werte mehrerer Raster mit dem Punktraster verknüpfen.
In ArcMap dauerte das Herunterladen der Daten zu einem fertigen Dataset ca. 10 Minuten. In QGIS (Wroclaw) stürzte das Programm zweimal ab, schnitt nur das Raster mit dem Polygon ab und lief dann eine Stunde lang, bevor es beim dritten Versuch abgeschlossen wurde. Dies ist auf einer Box mit 4 Dual-Cores und 6 GB RAM.
Ich liebe QGIS und es ärgert mich, ArcMap zu verwenden, aber ich finde viele häufige Anwendungsfälle, in denen QGIS meine Anforderungen nicht erfüllt.
Wenn jemand Ratschläge zur Leistungsoptimierung hat, die diese Leistungslücke schließen könnten, bin ich gespannt.
Chris
quelle
Ich glaube nicht, dass Arc in .NET geschrieben ist. Arcobjects werden in C ++ geschrieben. Arc ist möglicherweise langsamer, da viele erweiterte GUI's, Hilfsprogramme, Add-Ons usw. verwendet werden. QGIS ist eine großartige Software, aber es fehlen einige nützliche Funktionen, die für Anfänger gut sein könnten. Ich denke auch nicht, dass grundlegende Lavel-Tools in ESRI (Arcobjects) langsam sind. Es kommt in der Regel auf die Benutzerfähigkeiten an. Wenn Benutzer wissen, wie man Arc verwendet, ist es überhaupt nicht so langsam. Allerdings sollte ich auch erwähnen, dass jedes Werkzeug von Fall zu Fall in Bezug auf seine Leistung geprüft werden sollte. Die andere Sache ist, dass Arc zuerst in der GIS-Szene war. Erstens (relativ zu QGIS) ist es immer mit Fehlern und die nächste Generation ist ein bisschen besser, in diesem Fall schneller, aber all dies ist nur meine persönliche Meinung.
quelle
Ctrl+C
während ein ArcObjects eine Operation ausführt, wird eine Nachricht aus einer Fortran-Laufzeitbibliothek angezeigt.Dies hängt mit der Leistung von ArcGIS zusammen: ArcMap und ArcCatalog lassen sich auf neuen Laptops nur sehr langsam öffnen. Dies kann zum Teil für einige der Leistungsprobleme verantwortlich sein. Dieser Thread zeigt, wie sich Hardware-, Netzwerk- und Lizenzierungskonfigurationen erheblich auf die ArcGIS-Leistung auswirken können. Möglicherweise könnten einige der gemeldeten Geschwindigkeitsunterschiede eher auf solche Faktoren als auf inhärente Unterschiede in den Fähigkeiten zurückzuführen sein.
(Wird als Antwortlink gepostet, da Kommentare verloren gehen.)
quelle
Ich arbeite mit Daten auf Unternehmensebene (z. B. Point-of-Interest-Daten für die ganze Türkei) und manchmal benötige ich dieses Rendering, um den Datensatz zu überprüfen.
Wenn Sie Ihre Leistung mit ArcGIS verbessern möchten, gibt es einige Ratschläge.
Verwenden Sie immer projizierte Daten. Verwenden Sie Geodatabases oder ArcSDE mit Postgresql funktioniert perfekt für mich.
Durch die Verwendung der File-Geodatabase und, falls möglich, von arcsde wird die Geschwindigkeit Ihrer Operationen erhöht. Meine persönlichen Erfahrungen mit QGIS und ArcMap sind eigentlich das Gegenteil. Wie Es dauert fast Minuten, um 3 Millionen Punkte auf einer Karte zu rendern. Andererseits rendert ArcMap sie innerhalb von Sekunden.
Nur meine Meinung.
quelle