(Wann) sollte ich eine GIS-fähige Datenbank verwenden?

22

Ich bin ein langjähriger Programmierer, neu in GIS. Ich versuche, ein Gefühl für die Datenbankaspekte von GIS zu bekommen, und ich verstehe, dass es einige Datenbanken gibt, die auf die Verwendung von GIS spezialisiert sind. Grundsätzlich versuche ich zu verstehen, ob ich eine solche Datenbank verwenden oder mich an das äußerst beliebte, gut etablierte, weit verbreitete (und kostenlose) MySql halten soll.

Die Art von Anwendungen, für die ich verantwortlich bin, würde Folgendes bedeuten:

  • Flottenmanagement (Land- oder Seefahrzeuge)
  • Mitarbeiter-Tracking
  • Bestandskontrolle (bei einer Körnigkeit einer physischen Position, die auf einen Meter genau ist)
  • ähm, das war's auch schon

Normalerweise würde ich davon ausgehen, dass nicht mehr als ein paar Hundert (maximal, möglicherweise ein paar Tausend) Artikel erfasst werden. Manchmal befinden sich die Gegenstände in demselben (großen) Gebäude, einer Reihe von Gebäuden, einer Stadt, einem Land oder weltweit, abhängig von der Anwendung.

Ich werde sie gelegentlich visuell entweder auf einem benutzerdefinierten Grundriss eines Gebäudes oder, wahrscheinlicher, in Google Earth oder dergleichen darstellen (mehr davon in einer anderen Frage).

Es scheint mir, dass ich mit MySql genauso gut zurechtkomme wie mit dem Hinzufügen von Spalten für Lat / Long- oder andere Positionsdaten, aber das könnte nur daran liegen, dass ich MySql kenne.

Gibt es einen Grund, warum ich mir eine spezialisiertere Datenbank ansehen sollte?

Mawg
quelle

Antworten:

13

Der eigentliche Vorteil räumlicher Datenbanken (PostGIS, räumliche Erweiterungen für MySQL oder irgendetwas anderes) besteht darin, dass Sie räumliche Operationen mit räumlichen Daten ausführen können. Wenn Sie nur Punktkoordinaten speichern, profitieren Sie nicht wirklich von räumlichen Daten (verwenden Sie nur zwei numerische Spalten). Wenn Sie Kombinationen von Punktkoordinaten (wo sich die Kunden befinden) und Linienkoordinaten (wo sich die Lieferwagen befinden) und Polygonen (Verkaufsregionen) speichern und dann Abfragen durchführen, die diese verschiedenen Informationen in Beziehung setzen (wie viele Kunden in einem Verkauf) Zone, wie viele Lastwagen heute weniger als 2 km von einem Kundenstandort entfernt waren, aber keine Lieferung oder Abholung durchführten), können Sie viel gewinnen.

Wie von iant hervorgehoben, ist PostGIS auf jeden Fall einen Blick für eine Serveranwendung wert. SpatiaLite ist die räumlichen Erweiterungen SQLite, die eine bessere Passform für einen Desktop / embedded / offline mobile Anwendung sein kann, während ziemlich ähnliche SQL - Funktionen bietet [ Disclosure: Ich arbeite auf SpatiaLite ], unter Hinweis darauf , dass es nichts gibt , was Sie PostGIS mit stoppt in eine Desktop-Anwendung.

BradHards
quelle
+1 und danke. Nur neugierig, warum es auf Sqlite und nicht MySql basiert ...
Mawg
1
Ich denke, es sind nur verschiedene Designziele (eingebettet, keine Konfiguration, etc.).
BradHards
+1 habe ich mir gedacht (ich komme auch aus einem eingebetteten Hintergrund). Danke für die Information. Ich gehe davon aus, dass ich am Ende browserbasierte Apps haben werde (die meisten von uns, auch wenn wir das lieber nicht möchten), so dass das "Lite" nicht so notwendig ist. Nur flüchtig, welche Art von Apps befindet sich jetzt im eingebetteten System / Gerät? (Entschuldigung, lerne noch)
Mawg
1
Embedded ist ein großer Bereich, aber Offline-Mobile scheint ein aufstrebender Bereich zu sein.
BradHards
2
@Mawg Die meisten modernen Telefone und Browser verwenden SQLite als Datenspeicher. Es ist wirklich eine einzige C-Datei, und die API ist sehr einfach und wird in-process ausgeführt. Vergleichen Sie dies mit MySQL, für das mehrere Prozesse ausgeführt werden und eine Client / Server-Architektur erforderlich ist. Zwei sehr unterschiedliche Anwendungsfälle
Ragi Yaser Burhum
8

Sie sollten auf jeden Fall das äußerst beliebte, gut etablierte, weit verbreitete (und kostenlose) PostGIS in Betracht ziehen . Es wird alles tun, was MySQL kann und räumliche Standorte als erstklassige Objekte behandeln. Auf diese Weise können Sie anhand von Punkten in einem Begrenzungsrahmen (oder einem anderen Polygon) eine Auswahl treffen, ohne alle Vergleiche usw. aufschreiben zu müssen.

Wenn Sie sich fragen müssen, welche Objekte sich in welchem ​​Land (oder in welchem ​​Gebäude) befinden, wird PostGIS zu Ihrem eigenen Unternehmen. Sollten Sie sich entscheiden, dass Sie Ihre Objekte zuordnen müssen, werden alle gängigen Open-Source-Tools mit PostGIS kommunizieren die Kiste.

Ian Turton
quelle
+1 und vielen Dank. Ich werde mich jetzt darum kümmern. Bilden Sie eine Kodierersicht Ich möchte sehen, dass es gut mit PHP kommuniziert, wenn ich webbasiert gehe und wenn ich die Widnwos-Desktop-App verwende, dann verwende ich AnyDac-Datenbankzugriffskomponenten für Delphi, sodass ich per E-Mail AnyDac-Support erhalte. Danke noch einmal!
Mawg
1
Zu Mawg: Ich muss noch eine Delphi-Datenbankbibliothek von Drittanbietern sehen, um eine der GIS-Funktionen in Postgis, DB2, Spatiallite, SQL-Server usw. zu unterstützen. So etwas muss man anscheinend alleine tun.
Uffe Kousgaard
+1 @UffeKousgaard Ich fand dies nur bei 295 $ für die billigste cartovcl.com
Mawg
1
Cartovcl (das ich seit fast 10 Jahren verwende) ist ein Flat-File-GIS-SDK, in das die GIS-Funktionalität integriert ist. Es ist keine Thin-API auf einer räumlich aktivierten entfernten Datenbank.
Uffe Kousgaard
1
Historisches Dokument :-) Aber TatukGIS ist wahrscheinlich eines der umfassendsten GIS-SDKs überhaupt (aber auch ein bisschen teuer). Aber es ist in der gleichen Liga wie cartovcl, dh gis-Funktionalität ist eingebaut, es ist keine API auf einer entfernten Datenbank.
Uffe Kousgaard
2

Um die Antworten zu ergänzen und einige Punkte zu wiederholen, wird eine räumlich aktivierte Datenbank verwendet, wenn Sie Abfragen haben, die sich auf die räumlichen Beziehungen der Daten beziehen, von denen einige die folgenden sind:

  1. Welche Punkte befinden sich innerhalb von x Kilometern von meinen Points of Interest?
  2. Welche Punkte sind näher
  3. Wie weit ist ein Punkt von einem anderen Punkt entfernt?
  4. Welche Punkte sind x Kilometer innerhalb der Zufahrtsstraße

Wenn solche Fragen zu WHERE ein wichtiges Merkmal für eine Anwendung sind, wird in der Regel dringend empfohlen, eine räumliche Datenbank zu verwenden.

Natürlich kann man bei einigen dieser Abfragen auf Codierungs- / Anwendungslogik zurückgreifen, z. B. bei Verwendung der Abstandsformel für 1, aber man muss das Rad nicht neu erfinden.

Arcsum
quelle