Projekt

GeoPortOst – ein Projekt, mit dem Benutzer Karten finden, studieren und herunterladen können, die auf die aktuelle Karte der Erde projiziert werden. Ursprünglich basierte es auf der Plattform GeoBlacklight, aber aufgrund von Optimierungsproblemen wurde beschlossen, eine proprietäre Lösung zu entwickeln, die eine flexiblere Arbeit mit Daten und der Website ermöglicht.

Entstehungsgeschichte des Projekts:

Lösungen

Dieses Projekt basiert auf Django, einer Bibliothek, mit der Sie Websites erstellen und auf Codeebene (ORM) mit Datenbanken arbeiten können. Um die Verbindung der Website zum Internet sicherzustellen, verwenden wir:

  • Nginx hochleistungsfähiger Open-Source-Webserver, Reverse-Proxy, Load Balancer und HTTP-Cache, bekannt für seinen geringen Ressourcenverbrauch und seine Geschwindigkeit.
  • Gunicorn Python Web Server Gateway Interface (WSGI) HTTP-Server.

In unserem Fall handelt es sich bei der Datenbank um PostgreSQL, die im Vergleich zur von Django verwendeten Standardlösung viele nützliche Funktionen bietet. Wir verwenden außerdem eine Liste externer Dienste, um bei der Nutzung der Website eine Reihe von Funktionen bereitzustellen. Diese Liste umfasst:

  • Geoserver Quelle der für die Anzeige optimierten projizierten Karten
  • IIIF Quelle für nicht projizierte, für die Anzeige optimierte gescannte Bilder

Sie befinden sich völlig unabhängig vom Server, auf dem das Projekt gehostet wird, wodurch sichergestellt wird, dass die Last verteilt wird und die Website im Falle eines Fehlers nicht ausfällt.

Server-Beziehungsdiagramm

Visuell

Um die Seiten selbst anzuzeigen, verwenden wir mehrere Bibliotheken, die eine Reihe von Funktionen bereitstellen, die seit langem als Standard gelten. Für die Gestaltung der Seiten verwenden wir die Stil- und Symbolbibliothek Bootstrap, die an unsere Bedürfnisse angepasst ist und die wichtigsten Elemente und Stile dafür enthält.

Suchseite erstellt mit Bootstrap

Für den technischen Teil der Website verwenden wir natürlich jQuery, das den Funktionsumfang von Standard-JavaScript erweitert und auch für die Funktion anderer Bibliotheken erforderlich ist.

Leaflet, eine weitere beliebte JavaScript-Bibliothek, die für die Anforderungen des Projekts leicht erweitert wurde, ist für die Anzeige und Verwaltung von Karten auf der Website zuständig. Sie arbeitet direkt mit den oben erwähnten Geoserver und IIIF zusammen.

Technische Details

In dieser Kategorie erfahren Sie mehr über die technischen Merkmale, die während der Entwicklung getroffenen Entscheidungen und die Lösungen, mit denen wir die Herausforderungen gemeistert haben.

Django

Django ist eine Bibliothek für Python, die die Seitenanzeige und die Bearbeitung von Anfragen verwaltet und Verwaltungsfunktionen für das Team bereitstellt. Die Bibliothek bietet eine Vielzahl verschiedener Funktionen, die nicht nur praktisch sind, sondern bei Bedarf auch an spezifische Projektanforderungen angepasst werden können.

Lokalisierung

Das Lokalisierungssystem ermöglicht uns die vollständige Kontrolle über die Übersetzung unseres Projekts. Anfänglich gab es keine Lokalisierungsunterstützung auf Datenbankebene, daher verwendeten wir die Bibliothek django-localized-fields, die Schlüssel und Werte verwendet, um Text für jede Sprache einzeln zu speichern, und gleichzeitig Verwaltungsfunktionen und Datenbankunterstützung auf Abfrageebene bietet.

Objekt-Relationales Mapping

Das Hauptmerkmal von Django ist ORM, ein System, das die Datenbank direkt mit dem Projektcode verbindet. Jeder Datensatz und jede Tabelle repräsentiert eine Klasse im Code, die nach dem Senden einer Anfrage automatisch konvertiert wird und auch eigene Funktionen und Parameter haben kann, was die Entwicklung erheblich vereinfacht.

Da Django nur dann Anfragen sendet, wenn versucht wird, eine Anfrage in ein Objekt umzuwandeln, verbessert dies die Leistung erheblich. Wir haben versucht, nur Abfragen auf Datenbankebene zu verwenden, da dies die optimierteste Methode zur Abfrage von Daten ist. Bei der Verwendung von Python-Funktionen gab es einen deutlichen Unterschied in der Leistung.

Leaflet

Zur Anzeige und Verwaltung der Karte haben wir Leaflet verwendet, mit dem Sie auch das Verhalten anpassen und neue Funktionen hinzufügen können.

Wechselwirkungen

Wir haben die Möglichkeit hinzugefügt, einen Bereich auf der Karte auszuwählen, der als Start- und Endpunkt der Auswahl dient. Nach Erhalt dieser Daten fragen wir die Datenbank ab und vergleichen die Koordinaten auf Abfrageebene, was ein sehr schneller Vorgang ist. Je nach Art der Überschneidung verwenden wir unterschiedliche Ansätze zum Filtern von Karten, wodurch der Benutzer mehr Kontrolle erhält.

Geoserver/IIIF

Da Leaflet nur ein Tool zur Datenverwaltung ist, haben wir uns entschieden, IIIF und Geoserver zu verwenden, um es in einer vorgefertigten Form bereitzustellen. Beide Dienste senden Bilder in Teilen, sodass Benutzer nicht das gesamte Bild herunterladen müssen. Dies beschleunigt das Laden und reduziert die Belastung des Geräts.

Der Hauptunterschied zwischen diesen beiden Diensten besteht darin, dass Geoserver geografische Informationen auf einer Weltkarte bereitstellt, um dem Benutzer eine projizierte Karte anzuzeigen. IIIF hingegen bietet das Originalbild an.