Mehr

Numerisches Problem beim Laden von GeoTIFF mit Gleitkommawerten in PostGIS

Numerisches Problem beim Laden von GeoTIFF mit Gleitkommawerten in PostGIS


Ich versuche, ein Gleitkomma-GeoTIFF-Bild in PostGIS (2.1) zu importieren, indem ich den folgenden Befehl verwende:

raster2pgsql -s 4326 -I -M -F -C tif_dir/*.tif public.map | psql -U postgres -h localhost -d opengeo

Wenn ich das weglasse-COption, dann ist dort alles in Ordnung. Wenn jedoch-Cverwendet wird, bekomme ich Fehler überZahlenfeldüberlaufundEinschränkung kann nicht hinzugefügt werden: 'nodata_values'. Überspringen.

In beiden Fällen,* aus raster_columns auswählengibt leer zurück.

Der nodata-Wert wie gemeldet von reportedgdalinfoAm Ende dieser Frage steht -3,4028234663852886e+38 (der negativste Wert von Gleitkommazahlen mit einfacher Genauigkeit). Wird ein Gleitkommawert dieser Größe (32-Bit) von PostGIS nicht unterstützt.

Wie soll ich dieses Problem hier im Zusammenhang mit nodata beheben?

raster2pgsqlAusgang:

Verarbeitung 1/1: tif_dir/prec1_nr.tif BEGIN CREATE TABLE… HINWEIS: SQL verwendet für fehlgeschlagene Einschränkung: ALTER TABLE public.map ADD CONSTRAINT force_nodata_values_rast CHECK (_raster_constraint_nodata_values(rast)::numeric(16,10)[] = '{- 3.40282346638529e+38}'::numeric(16,10)[]) CONTEXT: PL/pgSQL-Funktion _add_raster_constraint_nodata_values(name,name,name) Zeile 48 bei RETURN PL/pgSQL-Funktion addrasterconstraints(name,name,name,text[] ) Zeile 98 bei Zuweisung PL/pgSQL-Funktion addrasterconstraints(name,name,name,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean) Zeile 53 bei RÜCKGABEHINWEIS: Zurückgegebene Fehlermeldung : numerischer Feldüberlauf CONTEXT: PL/pgSQL-Funktion _add_raster_constraint_nodata_values(name,name,name) Zeile 48 bei RETURN PL/pgSQL-Funktion addrasterconstraints(name,name,name,text[]) Zeile 98 bei Zuweisung PL/pgSQL-Funktion addrasterconstraints(name, name,name,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean an,boolean) Zeile 53 bei RETURN WARNUNG: Einschränkung kann nicht hinzugefügt werden: 'nodata_values'. Überspringen… VAKUUM AUSGEBEN

Und,gdalinfogibt die folgende Beschreibung des betreffenden GeoTIFF:

gdalinfo prec1_nr.tif Treiber: GTiff/GeoTIFF Dateien: prec1_nr.tif prec1_nr.tif.ovr prec1_nr.tif.ovr.aux.xml prec1_nr.tfw prec1_nr.tif.aux.xml Größe ist 7200, 3600 Koordinatensystem ist: GEOGCS" ist: WGS 84", DATUM["WGS_1984", SPHEROID["WGS 84",6378137,298.257223563, AUTHORITY["EPSG","7030"]], AUTHORITY["EPSG","6326"]], PRIMEM["Greenwich" ,0], UNIT["degree",0.0174532925199433], AUTHORITY["EPSG","4326"]] Origin = (-30.000000000000000,30.000000000000000) Pixel Size = (0.0083333333333333,-0.0083333333333333) Metadaten: AREA_OR_POINT=Area Image Structure Metadata: COMPRESSION=LZW INTERLEAVE=BAND Eckkoordinaten: Oben links ( -30.0000000, 30.0000000) ( 30d 0' 0.00"W, 30d 0' 0.00"N) Unten links ( -30.0000000, 0.00000000) ( 30d 0' 0.00"W, 0d 0 ' 0.01"N) Oben rechts ( 30.0000000, 30.0000000) ( 30d 0' 0.00"E, 30d 0' 0.00"N) Unten rechts ( 30.0000000, 0.00000000) ( 30d 0' 0.00"E, 0d 0' 0.01"N) Mitte ( 0.0000000, 15.0000000) ( 0d 0' 0.01"E, 15d 0' 0.00"N) Band 1 Block=128x128 Type=Float32, ColorInterp=Gray Min=0 .000 Max=337.000 Minimum=0.000, Maximum=337.000, Mittel=6.705, StdDev=18.508 NoData Value=-3.4028234663852886e+38 Übersichten: 3600x1800, 1800x900, 900x450, 450x225 Metadaten: STATISTICS_COVARIANCES=342.56138903506.749 0 STATISTIK_STDDEV=18.508414006474

Gleitkommazahlen mit fester Breite in C/C++

int ist normalerweise 32 Bit, aber im Standard wird int nicht garantiert, dass es eine konstante Breite hat. Wenn wir also ein 32-Bit-Int wollen, schließen wir stdint.h ein und verwenden int32_t .

Gibt es dafür ein Äquivalent für Schwimmer? Mir ist klar, dass es bei Floats etwas komplizierter ist, da sie nicht homogen gespeichert werden, dh Vorzeichen, Exponent, Signifikant. Ich möchte nur ein Double, das garantiert in 64 Bit mit 1 Vorzeichenbit, 10 Bit Exponent und 52/53 Bit Signifikant gespeichert wird (je nachdem, ob Sie das versteckte Bit zählen).


LuciadLightspeed-Beispiele

Dies ist ein Befehlszeilenbeispiel. Klicken Mehr Info für Laufanweisungen.

Dieses Befehlszeilentool zeigt, wie Sie Vektordaten in verschiedenen Formaten dekodieren und als GeoJson-Datei exportieren.

Führen Sie das Beispiel mit dem Shell-Skript im Beispielordner aus:

Die Eingabe besteht aus zwei Parametern: (1) dem Pfad zur Eingabevektordatei (z. B. im SHP-Format) und (2) dem Pfad der GeoJson-Ausgabedatei.

Kodierung von MIF Samples.encoder.mif.Main

Dies ist ein Befehlszeilenbeispiel. Klicken Mehr Info für Laufanweisungen.

Dieses Befehlszeilentool zeigt, wie Sie Vektordaten in verschiedenen Formaten dekodieren und als MIF-Datei exportieren.

Führen Sie das Beispiel mit dem Shell-Skript im Beispielordner aus:

Die Eingabe besteht aus zwei Parametern: (1) dem Pfad zur Eingabevektordatei (z. B. im SHP-Format) und (2) dem Pfad der MIF-Ausgabedatei.

Kodierung von GeoTIFF Samples.encoder.raster.geotiff.Main

Dies ist ein Befehlszeilenbeispiel. Klicken Mehr Info für Laufanweisungen.

Dieses Befehlszeilentool zeigt, wie Raster in verschiedenen Formaten dekodiert und im GeoTIFF-Format mit einem TLcdGeoTIFFModelEncoder kodiert werden.

Führen Sie das Beispiel mit dem Shell-Skript im Beispielordner aus:

Die Eingabe kann ein einzelnes Raster oder eine Liste von Rastern sein, die auf einem regelmäßigen Raster liegen. Das Beispiel ermittelt automatisch die Struktur des Rasters und erstellt ein zusammengesetztes Raster, das gespeichert werden kann. Der Code kann im Allgemeinen nützlich sein, um solche zusammengesetzten Raster zu erstellen. Sie sind effizienter zu handhaben als die ursprüngliche unstrukturierte Liste von Rastern, beispielsweise zur Analyse oder Visualisierung.

Die ausgegebenen GeoTIFFs sind gekachelt und mehrstufig und optional mit JPEG-Komprimierung komprimiert. Die Standardkachelgröße beträgt 256 x 256 Pixel. Die Standardanzahl der Stufen ist 5. Die JPEG-Komprimierungsqualität ist ein festgelegter Wert zwischen 0 und 1.

Die unterstützten Optionen sind:

GXY: Ballon Samples.gxy.balloon.MainPanel

Dieses Beispiel zeigt, wie Sie Ihre eigenen Sprechblasen erstellen. Klicken Sie einfach auf eines der Domänenobjekte, um ein Beispiel für eine Sprechblase in Aktion zu sehen. Von den 4 Domänenobjekten sind 3 mit einer Sprechblase verbunden.

Anweisungen

Dieses Beispiel zeigt, wie Sie Ihre eigenen Sprechblasen erstellen. Wählen Sie ein Domänenobjekt aus, um ein Beispiel für eine Sprechblase in Aktion zu sehen. Ballons werden nur angezeigt, wenn ein Domänenobjekt ausgewählt ist.

Eines der Objekte enthält eine Sprechblase mit einer Schaltfläche, die zum Schließen verwendet werden kann. Eine andere Sprechblase zeigt ein Bild und eine andere zeigt eine Textbeschriftung. An das letzte Domänenobjekt ist keine Sprechblase angehängt.

Sie können sich um Ballons bewegen, indem Sie in der Nähe ihrer Grenze ziehen. Ballons können durch Ziehen ihrer unteren rechten Ecke neu skaliert werden. Die kann auch durch Klicken auf das Exit-Symbol in der oberen rechten Ecke geschlossen werden.

Rasterwerte Farben zuordnen Samples.gxy.colormap.MainPanel

In diesem Beispiel wird gezeigt, wie Sie mit TLcdColorMap Raster-Datenwerte Farben zuordnen und eine solche Karte mit TLcdColorMapCustomizer interaktiv anpassen.

Das Beispiel zeigt Höhendaten, die über das Konfigurationsfenster angepasst werden können.

Anweisungen

Mit dem Farbkarten-Anpasser können Sie Folgendes konfigurieren:

  • Ändern Sie die Höhen, indem Sie darauf klicken
  • Ändern Sie die Farben, indem Sie auf die farbigen Rechtecke klicken
  • Farbverlauf aktivieren oder deaktivieren
  • Aktivieren oder deaktivieren Sie die lineare Skala
  • Ziehen Sie im linearen Skalierungsmodus die Pfeile mit der Maus herum
  • Ebenen mithilfe der Symbolleistenschaltflächen hinzufügen, entfernen oder neu initialisieren

GXY: Asynchrones Layer Painting Samples.gxy.concurrent.painting.MainPanel

Dieses Beispiel demonstriert die Fähigkeit zum asynchronen Zeichnen. Es zeigt, wie Sie eine asynchron gezeichnete Ebene und eine Malwarteschlange instanziieren, die das eigentliche Malen verarbeitet. Die Ebene wird dann in einem separaten Thread im Hintergrund gemalt, sodass die Malerei die Benutzeroberfläche nicht mehr blockiert.

Es zeigt auch, wie Sie den asynchronen Layern automatisch Paint Queues zuordnen, indem Sie mehrere Paint Queue Manager verwenden, die nacheinander aktiviert werden können:

  • Der standardmäßige Paint Queue Manager, der die Anzahl der Paint Queues minimiert.
  • Ein Paint Queue Manager basierend auf den Malzeiten der Layer. Die Ebenen teilen sich nur dann eine Malwarteschlange, wenn ihre durchschnittlichen Malzeiten gleich groß sind.
  • Ein Paint Queue-Manager, der eine feste Anzahl von Paint Queue-Instanzen verwendet. Die Standardanzahl der Paint-Warteschlangen wird durch die Anzahl der CPUs bestimmt.

Das Beispiel zeigt eine Reihe von Ebenen, die asynchron gezeichnet werden. Ebenen, die sich eine Malwarteschlange teilen, haben dieselbe Farbe in der Ebenensteuerung. Zur Veranschaulichung haben einige Layer eine feste Malzeit, die in eckigen Klammern angegeben ist.

Anweisungen

Versuchen Sie, mit dem Mausrad zu schwenken und zu zoomen. Nach den Operationen werden neue Layer-Inhalte hinzugefügt. Die Farbgebung der Ebenensteuerung zeigt an, welche Ebenen dieselbe Farbwarteschlange verwenden. Wechseln Sie den Paint-Manager und beachten Sie, wie sich die Zuweisungen der Paint-Warteschlangen ändern. Die synchronen Ebenen (in Schwarz) und die nicht verwaltete Ebene bleiben gleich.

Rechts neben der Karte befinden sich 2 Rendering-Kontrollkästchen:

  • Mit dem Kontrollkästchen Asynchron können Sie das asynchrone Rendering ein- und ausschalten und auf die synchron gezeichnete Originalebene zurückgreifen. Beachten Sie, dass das Sample im Synchronmodus langsam und nicht mehr reagiert, da es einige sehr langsame Layer im Sample gibt.
  • das Kontrollkästchen Durchscheinend macht alle Inhalte durchscheinend. Dies zeigt, wie Sie den Zustand der umschlossenen Ebene ändern.

GXY: Konturen Samples.gxy.contour.MainPanel

Dieses Beispiel zeigt, wie Geländekonturen als Polylinien und komplexe Polygone berechnet und visualisiert werden.

Anweisungen

Es stehen vier verschiedene Konturebenen zur Verfügung:

  • beschriftete Polylinienkonturen
  • Polylinienkonturen mit der Höhe im Linienstil
  • Polygonkonturen, die sich gegenseitig enthalten
  • disjunkte Polygonkonturen

GXY: Decodieren von Daten mit mehreren Formaten Samples.gxy.decoder.MainPanel

Dieses Beispiel demonstriert die Möglichkeit, Daten aus Quellen in verschiedenen Formaten zu laden und zu visualisieren, indem ILcdModelDecoder und ILcdGXYLayerFactory verwendet werden.

Eine Datei- und eine URL-Aktion sind so konfiguriert, dass Daten in fast jedem verfügbaren Format geladen werden.

Das Beispiel verwendet einen zusammengesetzten ILcdModelDecoder, um die Daten in ein ILcdModel zu decodieren. Danach erstellt eine zusammengesetzte ILcdGXYLayerFactory einen Layer, der steuert, wie das ILcdModel der geladenen Daten angezeigt wird. Die Modelldecodierer und Schichtfabriken werden unter Verwendung eines Dienstnachschlagemechanismus abgerufen und enthalten sowohl eingebaute als auch Beispielimplementierungen.

Das Beispiel unterstützt Bilder, die nicht georeferenziert sind, wenn die Bilder in einer kleinen *.rst-Metadatei beschrieben werden (siehe TLcdRasterModelDecoder ). Das Beispiel enthält auch ein benutzerdefiniertes Format (siehe das Paket sample.decoder.custom1 ), um zu zeigen, wie Sie Ihren eigenen Modelldecoder implementieren.

Eine Speicheraktion, die nur verfügbar ist, wenn das Beispiel eigenständig ausgeführt wird, ermöglicht es Ihnen, ein ILcdModel in seiner Datei zu speichern, wenn ein ILcdModelEncoder auf ILcdModel festgelegt ist. Derzeit wird dies nur für das benutzerdefinierte Format durchgeführt.

Anweisungen

Öffnen Sie eine Datei oder URL, indem Sie auf die entsprechende Schaltfläche in der Symbolleiste klicken oder eine Datei oder URL auf die Karte ziehen. Laden Sie das Satellitenbild von Washington DC (.rst-Format) und die Straßen von Washington DC (.shp-Format) und beobachten Sie, wie sich die Daten überschneiden. Laden Sie mixed.txt, bearbeiten Sie die Formen und speichern Sie das Modell (nur bei eigenständiger Ausführung).

GXY: Elementdichten anzeigen Samples.gxy.density.MainPanel

In diesem Beispiel wird veranschaulicht, wie farbcodierte Datendichten mithilfe eines TLcdGXYDensityLayer angezeigt werden.

Das Applet zeigt eine Reihe von Flugbahnen über den USA, mit Farben, die von Blau für ruhige Regionen bis hin zu strahlendem Weiß für geschäftige Regionen reichen.

Anweisungen

Schwenken und zoomen Sie herum. Beachten Sie, dass asynchrones Zeichnen gewährleistet, dass die Ansicht reaktionsfähig bleibt.

GXY: Geometrische Formen bearbeiten Samples.gxy.editing.MainPanel

In diesem Beispiel wird veranschaulicht, wie ILcdShape-Objekte in einem ILcdGXYView interaktiv erstellt und bearbeitet werden.

Die Symbolleiste enthält Schaltflächen, mit denen mehrere Formen erstellt werden, indem verschiedene Instanzen des TLcdGXYNewController2-Controllers verwendet werden. Jeder Controller hat sein eigenes Controller-Modell, das den zu erstellenden Shape-Typ definiert, in welcher ILcdGXYLayer es hinzugefügt werden soll und wie es hinzugefügt wird.

Die Ebenen stellen die erforderlichen ILcdGXYPainter- und ILcdGXYEditor-Instanzen bereit, um jede darin enthaltene ILcdShape richtig zu rendern, zu erstellen und zu bearbeiten.

Daneben bietet das rechte Panel folgende Konfigurationsmöglichkeiten:

  • Das Rendern kann durch die Verwendung von geraden Linien (eine Stifteinstellung) vereinfacht werden.
  • Der Umriss/die Füllung der Form kann geändert werden (eine Malereinstellung)
  • Neue Formen können in einer geodätischen (lon lat) Referenz oder einer Gitterreferenz definiert werden. Beachten Sie, dass in einer Rasterreferenz keine Rautenformen definiert werden können.
  • Der Teilkurventyp von zusammengesetzten Kurven kann geändert werden, sogar während die Kurve erstellt wird.
Anweisungen
  • Klicken Sie auf eine der Schaltflächen für eine neue Form in der Symbolleiste und klicken Sie auf die Karte, um eine neue Form zu erstellen. Bei zusammengesetzten Kurven können Sie eine neue Teilkurve starten, indem Sie eine Form im Dropdown-Feld auswählen.
  • Bearbeiten Sie eine Form in einer der Formebenen, indem Sie einen ihrer Punkte oder Segmente ziehen. Beachten Sie, wie geodätische Formen innerhalb ihrer Modellreferenz (z. B. die Erde) bleiben und sich über die Datumslinie wickeln, während Gitterformen nicht an Längen- und Breitenkoordinaten gebunden sind.
  • Mit der STRG-Taste (CMD unter Mac OS) können Sie Objekte umformen. Bei Polylinien und Polygonen können Sie beispielsweise Punkte hinzufügen oder entfernen.
  • Klicken Sie mit der rechten Maustaste auf einen Punkt, eine Polylinie oder ein Polygon und konvertieren Sie sie in einen Puffer.
  • Beachten Sie, dass sehr lange geodätische Linien und Rhumb-Linien nicht unbedingt gerade sind.

GXY: Bearbeiten mit mehreren Modi Samples.gxy.editmodes.MainPanel

Dieses Beispiel zeigt, wie Sie einen Multi-Mode-Edit-Controller implementieren, d. h. einen Controller, der seinen Zustand ändert, wenn Sie auf ein bereits ausgewähltes Objekt klicken. Der Controller wird in einem Painter/Editor-Wrapper verwendet, um den Painter/Editor zu ändern, was ein anderes Bearbeitungsverhalten ermöglicht.

Der Controller unterstützt 2 Modi:

  • DEFAULT: der Standardmodus, der das Standardverhalten des Controllers angibt.
  • ROTATION: der Rotationsmodus des Controllers.

Um das Rotationsverhalten hinzuzufügen, definiert eine Support-Klasse eine Reihe abstrakter Methoden, die für eine bestimmte Form implementiert werden müssen:

  • eine Methode, die die aktuelle Drehung eines Objekts zurückgibt
  • eine Methode, die das Rotationszentrum eines Objekts zurückgibt
  • eine Methode, die ein Objekt dreht
Anweisungen

Das Beispiel zeigt zwei Polygone, die in ihren jeweiligen Modellreferenzen gedreht werden können. Um den Rotationsmodus zu aktivieren, wählen Sie ein Objekt aus und klicken Sie erneut auf das Objekt. Drehen Sie die Form, indem Sie einen der Drehgriffe greifen und ziehen. Klicken Sie erneut auf das Objekt, um durch die verfügbaren Modi zu blättern. Klicken Sie auf ein zuvor nicht ausgewähltes Objekt, um den Bearbeitungsmodus zurückzusetzen.

GXY: Geoid Samples.gxy.geoid.MainPanel

Dieses Beispiel veranschaulicht die Unterstützung in LuciadLightspeed für Geoids. Es zeigt ein Bild mit den Geoidhöhen des EGM2008-Datums (Earth Gravity Model, 2008). Blaue Farben zeigen an, dass die Geoidhöhen negativ sind (Geoid unterhalb des Ellipsoids des WGS84-Datums). Grüne Farben zeigen an, dass die Geoidhöhen positiv sind (Geoid über dem Ellipsoid).

Die Geoidhöhen werden auch in einer Beschriftung in der Symbolleiste angezeigt.

Geoidhöhen werden in der Regel hinter den Bildschirmen bei Berechnungen mit Referenzen verwendet, die geodätische Datumsangaben basierend auf Geoiden aufweisen. Sie sind beispielsweise für Höhendaten relevant, die üblicherweise in Bezug auf wenige standardisierte Geoidmodelle definiert werden. Für genaue Berechnungen können Höhen über einem Geoid dann in Höhen über einem Ellipsoid umgewandelt werden.

Anweisungen

Bewegen Sie die Maus und sehen Sie, wie sich die Geoidhöhe ändert.

GXY: Gitter Samples.gxy.grid.MainPanel

In diesem Beispiel wird veranschaulicht, wie die folgenden Rasterebenen angezeigt werden:

  • Lon Lat: ein einfaches mehrstufiges Raster mit Längen- und Breitengradlinien. Die Linien sind bis auf die Sekunde verfeinert.
  • Border: ein lon-lat-Raster im maritimen Stil. Die Koordinaten werden bis auf den Grad verfeinert.
  • Georef: ein alphanumerisches mehrstufiges Raster basierend auf Längengrad-Breitengradlinien. Die Linien werden bis zum Grad verfeinert. Die Beschriftungen bezeichnen 1-mal-1-Grad-Quadrate.
  • XY: ein Raster basierend auf einer ILcdXYWorldReference. Die Etiketten bezeichnen Meter.
  • MGRS: ein alphanumerisches Multi-Level-Multi-Referenz-Gitter, das von der NATO verwendet wird. Das Raster beginnt mit 60 Zonen, plus dem Nord- und Südpolbereich. Beim Vergrößern wird jede Zone in 100.000 m² große Quadrate verfeinert, die in einem zonenspezifischen Referenzsystem definiert sind. Die Quadrate werden bis auf den Kilometer weiter verfeinert.
  • CGRS, GARS und OSGR: Beispielimplementierungen von mehrstufigen alphanumerischen Rastersystemen. GARS beginnt mit Zellen, die einen halben Grad breit und einen halben Grad hoch sind, die in 4, dann in 9 unterteilt werden. CGRS kann für einen bestimmten Bereich definiert werden. Es beginnt mit Zellen, die einen halben Grad breit und einen halben Grad hoch sind, die in 9 unterteilt sind, dann in 4. OSGR ist nur für Großbritannien definiert und bietet zwei Ebenen.
Anweisungen

Schwenken und zoomen Sie herum. Spielen Sie mit verschiedenen Projektionen und Rasterebenen herum. Beachten Sie, wie sich das Raster und seine Beschriftungen anpassen.

Die GARS- und CGRS-Grids ermöglichen die Zuordnung von Allianzen zu einzelnen Grid-Elementen auf jeder Ebene. Aktiviere dazu den Paint Controller und wähle die gewünschte Allianz aus der Combobox.

Höhe Samples.gxy.height.MainPanel

Dieses Beispiel veranschaulicht die Verwendung von Höhenanbietern in LuciadLightspeed. Es zeigt ein Raster mit Höhendaten. Die Höhenwerte der Daten unter dem Mauszeiger werden in einer Beschriftung in der Symbolleiste angezeigt.

Das Beispiel verwendet einen Anbieter für die Ansichtshöhe, um Höhenwerte abzurufen.

Anweisungen

Bewegen Sie die Maus über das Raster und sehen Sie, wie sich die Höhenwerte ändern. Wenn Sie die Maus außerhalb des Rasters bewegen, wird angezeigt, dass keine Höhendaten gefunden werden konnten.

GXY: Hervorheben von Domänenobjekten Samples.gxy.highlight.MainPanel

In diesem Beispiel wird veranschaulicht, wie Domänenobjekte hervorgehoben werden. Ein benutzerdefinierter Controller schaut sich die Domänenobjekte unter dem Mauszeiger an und teilt dem entsprechenden Layer mit, dass ein Objekt hervorgehoben werden soll.

Anweisungen

Bewegen Sie den Mauszeiger über die Städte und Staaten. Die Stadt oder das Bundesland unter der Maus ändert die Farbe.

GXY: Eine Maler-/Editor-Implementierung Samples.gxy.hippodromePainter.MainPanel

Dieses Beispiel enthält eine Implementierung der Schnittstellen ILcdGXYPainter und ILcdGXYEditor für eine neue Form, ein Hippodrom, das aus zwei Halbkreisen besteht, die durch zwei Linien verbunden sind. Anstatt Komposition zu verwenden, zeigt dieses Beispiel, wie Sie einen Maler/Editor von Grund auf neu erstellen.

Beachten Sie, dass dies ein Beispielcode ist, um das Schreiben von Malern zu demonstrieren. Wenn Sie ein Hippodrom modellieren müssen, lesen Sie bitte unsere ILcdGeoBuffer-Implementierungen.

Die Form wird durch zwei Punkte und eine Breite definiert. Es wird eine XY- und eine lonlat-Form bereitgestellt, die beide vom Maler/Editor unter Berücksichtigung einiger Vorsichtsmaßnahmen für die geodätische Form bearbeitet werden können.

Der Maler unterstützt das Malen in den folgenden Modi:

  • das Objekt im Standard- und im ausgewählten Modus malen,
  • das Objekt malen, während es bearbeitet wird,
  • das Objekt malen, während es erstellt wird.
  • Verschieben eines der definierenden Punkte, was zu einer Drehung, Verlängerung der Form führt,
  • die ganze Form bewegen,
  • Ändern der Breite der Form.
Anweisungen

Dieses Beispiel ist hauptsächlich als Entwicklerhandbuch gedacht, um Painter und Editoren von Grund auf neu zu erstellen. Um ein neues Hippodrom zu erstellen, klicken Sie auf eine der beiden Schaltflächen in der Symbolleiste. Um ein Hippodrom zu bearbeiten,

  • Verschieben Sie einen der Punkte, indem Sie die Maus von einem Punkt aus ziehen,
  • Verschieben Sie die gesamte Form, indem Sie die Maus vom Umriss aus ziehen,
  • Ändern Sie die Breite der Form, indem Sie die Maus ausgehend von der Kontur mit gedrückter STRG-Taste (CMD unter Mac OS) ziehen.

GXY: Grundlegende Symbole Samples.gxy.icons.MainPanel

Dieses Beispiel demonstriert die Fähigkeiten von LuciadLightspeed, Symbole anzuzeigen. Diese von einem TLcdGXYIconPainter gemalten Symbole können mit einem Welt- oder Pixelskalierungsmodus skaliert werden. Sie können auch einen Ankerpunkt zurückgeben, der ihnen einen Offset gibt. Das Beispiel zeigt auch ausgerichtete Symbole.

Anweisungen

Sie können die Skalierung und den Skalierungsmodus dynamisch ändern, indem Sie die Steuerelemente im Bereich „Symbolskalierungsoptionen“ verwenden. Die Stecknadelsymbole repräsentieren Städte. Beachten Sie, wie die Spitze des Stifts in der Stadt verankert ist. Beachten Sie, dass jedes Flugzeug eine andere Rotation hat: Die Rotation wird automatisch aus dem Domänenobjekt abgerufen.

GXY: Beschriftungsalgorithmus erstellen Samples.gxy.labels.createalgorithm.MainPanel

Dieses Beispiel demonstriert die Erstellung und Verwendung von Beschriftungsalgorithmen und Beschriftungsalgorithmus-Wrappern. MyLabelingAlgorithm ist ein Beschriftungsalgorithmus, der versucht, alle Beschriftungen am Ankerpunkt des Domänenobjekts zu platzieren. Es gibt drei Wrapper, die mit diesem Algorithmus und miteinander kombiniert werden können.

  • RotationAlgorithmWrapper : Dreht alle Etiketten
  • MorePositionsAlgorithmWrapper : Erstellt zusätzliche Etikettenplatzierungen, die versucht werden sollen, indem das Etikett um einige Pixel in jede Richtung versetzt wird.
  • LabelDetailAlgorithmWrapper : Passt die Schriftgröße und die Informationsmenge an, um mehr Möglichkeiten zur Etikettenplatzierung zu schaffen.
Anweisungen

Nach dem Start des Beispiels kann zwischen zwei Beschriftungsalgorithmen gewählt werden: dem Beispielalgorithmus SampleLabelingAlgorithm und einem Standardbeschriftungsalgorithmus. Verwenden Sie die Kontrollkästchen, um die Verwendung von mehr möglichen Positionen zu aktivieren/deaktivieren oder die Schriftgröße während der Beschriftung zu ändern. Auch das Verschieben des Schiebereglers passt die Drehung aller Beschriftungen an.

GXY: Interaktive Etiketten Samples.gxy.labels.interactive.MainPanel

Dieses Beispiel zeigt, wie Etiketten interaktiv gemacht werden können. Die Beschriftungen können in dem Sinne bearbeitet werden, dass sie an einen neuen Ort verschoben werden können, sowie in dem Sinne, dass sie dem Benutzer eine interaktive Komponente bieten, mit der Informationen zu den Domänenobjekten bearbeitet werden können.

Anweisungen

Bewegen Sie die Maus über eine Beschriftung einer Stadt. Anstelle des regulären Etiketts wird ein interaktives, bearbeitbares Etikett angezeigt. Im Textfeld können Sie einen Kommentar zu der beschrifteten Stadt eingeben. Um die Änderungen zu übernehmen, drücken Sie die Eingabetaste oder drücken Sie das grüne Häkchen oben auf dem interaktiven Etikett. Um die ausstehenden Änderungen abzubrechen, drücken Sie das rote „Abbrechen“-Symbol oben auf dem Etikett oder drücken Sie die Escape-Taste.

Das interaktive Etikett kann durch Klicken und Ziehen auf der Titelleiste des interaktiven Etiketts verschoben werden.

GXY: Versatzsymbole Samples.gxy.labels.offset.MainPanel

Dieses Beispiel demonstriert die Fähigkeiten von LuciadLightspeed, Symbole mit einem bestimmten Versatz anzuzeigen. Diese von einem normalen ILcdGXYPainter gezeichneten Symbole sind in Bezug auf das Domänenobjekt versetzt. Dieser Offset kann mit der Maus dynamisch verändert werden.

Es zeigt auch, wie der verwendete Beschriftungsalgorithmus so konfiguriert werden kann, dass Beschriftungen zusammen fallen.

Anweisungen

Sie können den Versatz des Symbols dynamisch ändern, indem Sie eine Stadt auswählen und dann das Symbol ziehen, während Sie die 'Control'-Taste gedrückt halten.

GXY: Grundlegende Kennzeichnung Samples.gxy.labels.placement.MainPanel

In diesem Beispiel werden der asynchrone Beschriftungsplatzierer und die Standardbeschriftungsalgorithmen veranschaulicht.

Beschriftungsalgorithmen berücksichtigen die bereits platzierten Beschriftungen, um Überlappungen zu vermeiden. Ein ILcdGXYLayer wird daher höchstwahrscheinlich weniger Beschriftungen haben, wenn es sich unten befindet, als wenn es sich oben im ILcdGXYView befindet.

Anweisungen

Um die Auswirkungen der Beschriftungsalgorithmen zu sehen, wählen Sie eine Ebene aus, indem Sie sie in der Ebenensteuerung anklicken und:

  • die Sichtbarkeit der Ebene ändern
  • setze die beschriftete/nicht beschriftete Ebene
  • Verschiebe die Ebene nach oben/unten

GXY: Straßenbeschriftung Samples.gxy.labels.streets.MainPanel

Dieses Beispiel demonstriert die Fähigkeiten von LuciadLightspeed, Straßen zu malen und zu beschriften. Autobahnen sind mit einem Symbol gekennzeichnet, während Stadtstraßen (in Washington DC vergrößert) mit Textbeschriftungen gekennzeichnet sind.

Anweisungen

Vergrößern und verkleinern Sie, um mehrere Detailebenen auf der Karte zu sehen. Die Region USA enthält Autobahndaten und die Region Washington DC enthält Straßendaten.

Magnetischer Nordpol Samples.gxy.magneticnorth.MainPanel

Dieses Beispiel zeigt Ihnen die Fähigkeiten von LuciadLightspeed in Bezug auf den magnetischen Norden.

Der magnetische Norden stimmt nicht mit dem wahren Norden überein. Der Unterschied zwischen dem magnetischen und dem wahren Norden wird magnetische Deklination genannt und hängt von Ihrer Position in Raum und Zeit ab. Es gibt verschiedene mathematische Modelle, um den magnetischen Norden zu berechnen und vorherzusagen, jedes mit seiner eigenen Lebensdauer. LuciadLightspeed wird mit den beiden beliebtesten Modellen geliefert: WMM und IGRF.

Das Beispiel zeigt eine Kompasssteuerung für den magnetischen Norden und Isolinien mit konstanter magnetischer Norddeklination.

Anweisungen

Klicken Sie auf einen beliebigen Ort auf der Karte, um diesen Punkt zu zentrieren, und drehen Sie die Karte so, dass die Spitze in Richtung des magnetischen Nordens zeigt. Beachten Sie, dass der magnetische Nordkompass gerade nach oben zeigt. Klicken Sie mit der rechten Maustaste, um die benutzerdefinierte Drehung wieder zurückzusetzen. Vergrößern Sie eine magnetische Deklinationslinie. Die Anzeige am unteren Rand der Karte zeigt den genauen Deklinationswert für die Mausposition. Der Magnetwert in der Mitte der Karte sollte die Differenz zwischen beiden Kompassen sein.

GXY: Navigationssteuerung auf der Karte Samples.gxy.navigationcontrols.MainPanel

Dieses Beispiel zeigt, wie Sie Steuerelemente für die Kartennavigation über eine 2D-Ansicht erstellen, anpassen und hinzufügen.

Anweisungen

Die Standardsteuerelemente befinden sich in der oberen rechten Ecke, wenn Sie die Probe ausführen. Ziehen Sie den äußeren Ring des oberen Teils, um die Ansicht zu drehen (Sie können die STRG-Taste (CMD unter Mac OS) gedrückt halten, um die Drehung auf ein Vielfaches von 15 Grad zu beschränken). Klicken Sie auf das Nordsymbol des äußeren Rings, um die Ansicht auf die ursprüngliche Drehung zurückzusetzen. Halten Sie eine beliebige Stelle im Kreis mit dem Handsymbol gedrückt, um die Ansicht zu schwenken. Der untere Teil ermöglicht das Vergrößern und Verkleinern.

Auf der linken Seite finden Sie eine angepasste Konfiguration. In der alternativen Konfiguration werden die Controls aufgeteilt und die beiden Unterkomponenten an unterschiedlichen Stellen hinzugefügt. Außerdem wird die Zoomkomponente jetzt immer hervorgehoben, nicht nur wenn sich die Maus darüber befindet und die Kompasskomponente kann durch Ziehen mit gedrückter rechter Maustaste verschoben werden.

GXY: Offscreen-Ansicht Samples.gxy.offscreen.Main

Dies ist ein Befehlszeilenbeispiel. Klicken Mehr Info für Laufanweisungen.

Dieses Befehlszeilentool zeigt, wie Sie eine Off-Screen-Ansicht erstellen, einige dekodierte Daten darin anzeigen und das Ergebnis als GeoTIFF-Datei speichern.

Führen Sie das Beispiel mit dem Shell-Skript im Beispielordner aus:

Die Eingabedaten können in verschiedenen Formaten vorliegen: SHP, MIF, MAP, GeoTIFF usw. Die Ausgabe-GeoTIFFs sind 1024x1024 Pixel, gekachelt (256x256 Pixel) und mehrstufig (3 Stufen) und mit einem verlustfreien Komprimierungsschema komprimiert. Alle diese Einstellungen können im Beispielcode geändert werden.

GXY: Übersichtskarte Samples.gxy.overview.MainPanel

In diesem Beispiel wird die Verwendung eines TLcdGXYOverviewController und die gemeinsame Nutzung von Ebenen durch mehrere ILcdGXYView-Objekte veranschaulicht.

Es besteht aus einem Haupt-ILcdGXYView (TLcdMapJPanel) in der Mitte und einer Übersichtskarte (TLcdMapJPanel) oben rechts. Die Übersichtskarte bleibt auf die USA fokussiert und zeigt zusätzlich ein Rechteck an, das dem in der Hauptansicht sichtbaren Bereich weitestgehend entspricht. Wenn Sie das Rechteck in die Übersicht ziehen oder ein neues erstellen, werden in der Hauptansicht Daten angezeigt, die sich im Rechteck befinden. Dieses Rechteck wird jedes Mal aktualisiert, wenn sich der sichtbare Bereich in der Hauptansicht ändert (z. B. beim Schwenken oder Zoomen). In der Übersicht werden dieselben ILcdModels mit denselben ILcdGXYLayers angezeigt, die in der Hauptansicht verwendet werden.

Da ein ILcdGXYView automatisch auf jede Eigenschaftsänderung seiner ILcdGXYLayer-Objekte hört, wird jede Änderung dieser Eigenschaften über das Layercontrol in beiden Ansichten angezeigt.

Anweisungen

Ziehen Sie das Rechteck in die Übersicht oder erstellen Sie ein neues. Schwenken und zoomen in der Hauptansicht: Die Rechteck-Übersicht aktualisiert sich automatisch. Entfernen Sie eine Ebene und beachten Sie, dass sie aus beiden Ansichten entfernt wird.

GXY: Malerstile Samples.gxy.painterstyles.MainPanel

Dieses Beispiel demonstriert die Fähigkeit, Polylinien und Polygone mit abgerundeten Ecken, einfachen oder komplexen Strichen, einfachen und schraffierten Füllmustern und einem Halo-Effekt zu malen.

Die Funktionalität zum Zeichnen einer ILcdPointList, wie einer Polylinie oder eines Polygons, mit abgerundeten Ecken wird von TLcdGXYRoundedPointListPainter bereitgestellt. Ein Spline-Algorithmus wird verwendet, um den Satz von Punkten in eine glatte Linie umzuwandeln, die jede Ecke abrundet, indem zusätzliche Kontrollpunkte auf jedem Liniensegment verwendet werden. Die Rundung der Ecken kann im Beispiel angepasst werden, indem Sie eine Form auswählen und den Schieberegler oben im Konfigurationsfenster ziehen.

Um Formen mit einer Volltonfarbe zu füllen, wird TLcdGXYPainterColorStyle verwendet. Um Formen mit einem schraffierten Muster zu füllen, wird TLcdGXYHatchedFillStyle verwendet.

Um Umrisse mit einem einfachen, gestrichelten Strich zu rendern, wird TLcdStrokeLineStyle verwendet. Um die Formen mit einem musterbasierten Strich zu rendern, wird TLcdGXYComplexStroke verwendet. Diese java.awt.Stroke-Implementierung ermöglicht die Verwendung eines Shape-Arrays als Muster zum Rendern einer Form. Das Beispiel veranschaulicht, wie zwei verschiedene Muster in einem TLcdGXYComplexStroke kombiniert werden können. Es ist auch möglich, die Breite jedes einzelnen Shapes zu steuern, um eine Lücke zwischen nachfolgenden Shape-Objekten zu erhalten. Wenn ein Muster ziemlich lang ist, kann die Funktion zum automatischen Aufteilen von Mustern verwendet werden. Dadurch kann TLcdGXYComplexStroke nur einen Teil des Musters zeichnen, wenn nicht genügend Platz vorhanden ist, um das vollständige Muster zu platzieren. Bei Bedarf wird der Raum zwischen den geteilten Teilen mit einem Fallback-Strich aufgefüllt.

Das Beispiel veranschaulicht auch Halo-Effekte. Ein Halo ist ein Umriss mit konstanter Breite und Farbe um Formen oder Text, der normalerweise in einer Kontrastfarbe gezeichnet wird, um sicherzustellen, dass die Formen oder der Text auf jedem Hintergrund deutlich sichtbar sind. Bei Formen wird der Halo-Effekt durch Umschließen eines ILcdGXYPainter (in diesem Fall des TLcdGXYRoundedPointListPainter) in einen TLcdGXYHaloPainter erzielt. Dieser Maler ermöglicht die Kontrolle der Halo-Farbe und -Stärke, wie durch das Beispiel im Konfigurationsfenster veranschaulicht.

Anweisungen
  • Wählen Sie eine Polylinie oder ein Polygon aus.
  • Ändern Sie die Rundheit über den Schieberegler.
  • Wählen Sie ein anderes Muster für den komplexen Strich und passen Sie den Wiederholungsfaktor an.
  • Ändern Sie die Halo-Farbe und erhöhen/verringern Sie die Halo-Breite.

GXY: Drucken Samples.gxy.printing.MainPanel

In diesem Beispiel wird veranschaulicht, wie eine Komponente mit einer Ansicht mit TLcdGXYViewComponentPrintable gedruckt wird.

Anweisungen

Das Beispiel erstellt ein Seitenlayout, das die Ansicht und einige Dekorationen enthält. Sie können die Seite in der Vorschau anzeigen oder direkt über die Schaltflächen in der Symbolleiste ausdrucken.

GXY: Raster korrigieren Samples.gxy.Rektifikation.MainPanel

Dieses Beispiel demonstriert die Fähigkeit, parametrische Entzerrung – unter Verwendung von Kamera- und Geländeinformationen – und nicht-parametrische Entzerrung – unter Verwendung benutzerdefinierter Verbindungspunkte zu kombinieren.

Anweisungen

Der linke Bereich zeigt eine unveränderte Version des aktuell verarbeiteten Bildes zusammen mit einer Reihe von Verknüpfungspunkten an. Das rechte Bedienfeld zeigt mehrere Ebenen von unten nach oben an:

  • die welt hintergrunddaten
  • die digitale Höhenkarte (Gelände)
  • das Eingabe-Raster in seinem unveränderten geografischen Bezug (Original-Raster)
  • das Ergebnis der parametrischen Entzerrung (orthorectified Raster)
  • das Ergebnis der nicht-parametrischen Entzerrung (punktkorrigiertes Raster)
  • die Krawattenpunkte
  • eine Schicht mit Daten, die verwendet werden können, um die Richtigkeit der Berichtigung zu überprüfen

Die Standarddaten sind ein simuliertes Satellitenfoto der Stadt Ithaca, NY. Durch die schräge Blickrichtung wird die Position des Originalbildes um einen variablen Betrag gegenüber der realen Position verzerrt. Die Größe der Verzerrung hängt von der lokalen Geländehöhe ab - dies kann überprüft werden, indem die Position der Straßen im Original-Raster mit ihrer tatsächlichen Position verglichen wird, die im Layer "109rds" angezeigt wird.

Unter Berücksichtigung der Blickrichtung und der variablen Geländehöhe erstellt das Beispiel eine erste orthorektifizierte Version des Rasters, die die meisten Positionierungsfehler korrigiert. Der Benutzer kann eine Kopie dieses Rasters weiter korrigieren, indem er einen Satz von Verbindungspunkten feinabstimmt.

Ein erster Satz von Verbindungspunkten wird im linken und rechten Feld angezeigt. Wenn Sie einen Punkt in einem Feld auswählen, wird der entsprechende Verbindungspunkt im anderen Feld angezeigt. Bindungspunkte in beiden Bedienfeldern können an andere Positionen gezogen werden. Dadurch wird eine Neuzuordnung des korrigierten Bildes im rechten Bereich ausgelöst, sodass die Verbindungspunkte relativ zum Raster ungefähr an derselben Position erscheinen.

Neue Verbindungspunkte können im linken Bereich hinzugefügt werden, indem Sie den Controller "Neuen Verbindungspunkt erstellen" auswählen. Jedes Mal, wenn im linken Feld ein neuer Punkt hinzugefügt wird, wird dem rechten Feld ein entsprechender Verbindungspunkt an ungefähr denselben Rasterkoordinaten hinzugefügt (bei stark verzogenen Rastern kann ein kleiner Unterschied beobachtet werden).

Vorhandene Verbindungspunkte können gelöscht werden, indem Sie mit der rechten Maustaste darauf klicken und im Kontextmenü "Löschen" wählen. Wenn weniger als 3 Punkte verfügbar sind, wird das Raster nicht mehr aktualisiert.

Standardmäßig erfolgt die Abbildung mit einer Polynomfunktion. Sie können stattdessen eine rationale Funktion oder eine projektive Funktion auswählen, indem Sie die Aktion "Raster-Projektionsparameter bearbeiten" auswählen. Sie können auch den maximalen Grad des oder der Polynome auswählen, die von der ausgewählten Funktion verwendet werden. Beachten Sie, dass Polynome höheren Grades (3 oder 4) sehr instabil sind und seltsame Verzerrungseffekte erzeugen können. Die Anzahl der erforderlichen Verbindungspunktpaare variiert mit dem Grad des Polynoms bzw. der Polynome. Wenn eine unzureichende Anzahl von Verbindungspunkten definiert ist, verringert die Funktion automatisch die verwendeten Grade.

Wenn Sie mit der Entzerrung zufrieden sind, können Sie eine neu abgetastete Version des Rasters unter Verwendung der Referenz der rechten Ansicht speichern, indem Sie die Schaltfläche "Raster in Referenz der Ansicht speichern" verwenden.

Das Beispiel kann vorhandene einstufige referenzierte GeoTIFF-Dateien oder nicht referenzierte Bilder (tif, png, gif, bmp, jpg) öffnen. Wenn das Bild nicht georeferenziert ist, wird es zusammen mit vier anfänglichen Verbindungspunkten in den Ecken an einer Standardposition platziert.

Die Optionen zum Öffnen und Speichern sind nicht verfügbar, wenn das Beispiel in einem Browser ausgeführt wird.

GXY: Formen anzeigen Samples.gxy.shapes.MainPanel

In diesem Beispiel wird gezeigt, wie ein Modell programmgesteuert erstellt und angezeigt wird. Es zeigt, wie Sie ein ILcdModel erstellen, es mit ILcdShape-Objekten auffüllen und diese Daten in einem ILcdGXYLayer auf dem ILcdGXYView anzeigen.

Anweisungen

Das Beispiel zeigt eine Polylinie, ein Polygon und einen durch ein Symbol visualisierten Punkt. Versuchen Sie, die Formen auszuwählen und zu bearbeiten.

GXY: Maler, Formkomposition Samples.gxy.shortestDistancePainter.MainPanel

In diesem Beispiel wird veranschaulicht, wie ein zusammengesetztes ILcd2DEditableShape und ein geeigneter ILcdGXYPainter und ILcdGXYEditor für diesen ILcd2DEditableShape erstellt werden.

Die Klasse ShortestDistanceShape ist eine Komposition aus einer TLcdLonLatPolyline und einem TLcdLonLatPoint um diese Polylinie. Die Klasse ShortestDistanceShape weiß, wie der ILcdPoint auf der geodätischen TLcdLonLatPolyline berechnet wird, die dem TLcdLonLatPoint am nächsten liegt.

Die Klasse ShortestDistancePainter implementiert ILcdGXYPainter und ILcdGXYEditor und wird zum Zeichnen und Bearbeiten von ShortestDistanceShape-Objekten verwendet. Vorhandene Maler für das zusammengesetzte Formobjekt werden zum Malen verwendet, TLcdGXYIconPainter für den TLcdLonLatPoint und TLcdGXYPointListPainter für den TLcdLonLatPolyline. Um den kürzesten Weg vom TLcdLonLatPoint zur TLcdLonLatPolyline zu zeichnen, wird das Dienstprogramm ILcdGXYPen verwendet.

Anweisungen

Der Painter-Editor ermöglicht es, den TLcdLonLatPoint oder einen Punkt der TLcdLonLatPolyline des ShortestDistanceShape-Objekts an eine beliebige Stelle zu verschieben und dabei ständig den kürzesten Weg des TLcdLonLatPoint zur TLcdLonLatPolyline anzuzeigen.

GXY: Visualisierung statistischer Informationen Samples.gxy.statisticalPainter.MainPanel

In diesem Beispiel wird gezeigt, wie Formen basierend auf ihren Domänenobjekteigenschaften visualisiert werden. Ein benutzerdefinierter Maleranbieter zeigt Landkreise als Polygone an, die entsprechend der Bevölkerungsdichte gefärbt sind. Symbolbasierte Beschriftungen zeigen je nach Bevölkerungsänderung unterschiedlich große Rechtecke.

Anweisungen

Sie können die Visualisierung überprüfen, indem Sie auf eine Form doppelklicken, um ihre Eigenschaften zu überprüfen.

Modell in einer Tabelle Samples.gxy.swingTable.MainPanel

Dies ist ein Beispiel für die Anzeige der Elemente eines ILcdModels in einer JTable. Alle Domänenobjekte implementieren ILcdDataObject, was bedeutet, dass sie einen Datentyp mit einem Satz von ihnen zugeordneten Eigenschaften haben.

Wir laden mehrere ILcdModel, die sowohl im TLcdMapJPanel als auch im JTabbedPane angezeigt/dargestellt werden (d.h. jedes ILcdModel wird in 2 verschiedenen Ansichten dargestellt). Für jedes ILcdModel gibt es einen entsprechenden ILcdGXYLayer in der Map und eine JTable im JTabbedPane. Die Spaltennamen jeder JTable entsprechen den Attributnamen, die Zeilen entsprechen den Attributwerten. Ein Mediator wird verwendet, um die Karten- und Tabellenauswahl zu synchronisieren.

Anweisungen
  • Wählen Sie eine oder mehrere Zeilen in einer der Tabellen aus. Beachten Sie, wie die Domänenobjekte in der Karte sichtbar gemacht und ausgewählt werden.
  • Wählen Sie ein oder mehrere Objekte auf der Karte aus. Beachten Sie, wie auch die entsprechenden Tabellenzeilen ausgewählt werden.

GXY: Tooltips auf der Karte Samples.gxy.tooltip.MainPanel

Dieses Beispiel enthält eine benutzerdefinierte Implementierung von ILcdGXYController, die QuickInfos für Objekte unter dem Cursor anzeigt. Der Text der Tooltips wird über die ILcdDataObject-Schnittstelle bezogen. Die Methode applyOnInteract2DBounds() von ILcd2DBoundsIndexedModel wird verwendet, um das Objekt unter dem Mauszeiger zu lokalisieren.

Anweisungen

Bewegen Sie den Mauszeiger über eine Stadt oder ein Bundesland, und nach kurzer Zeit wird ein Tooltip angezeigt.

GXY: Touch-Controller Samples.gxy.touch.basic.MainPanel

Dieses Beispiel zeigt die berührungsbasierten Navigations-, Auswahl- und Lineal-Controller in einer GXY-Ansicht. Die Controller werden in der Symbolleiste oben angezeigt. Der Controller ganz links ist ein kontextsensitiver Auswahl- und Navigationscontroller.

Der zweite Controller kümmert sich nur um die Navigation. Es verfügt über Ein-Finger-Schwenken und Zwei-Finger-Schwenken, Zoomen und Drehen (gleichzeitig).

Der dritte ist ein Lineal-Controller.Es funktioniert ähnlich wie der mausbasierte Lineal-Controller und erstellt eine Polylinie auf der Karte, die die Länge jedes Segments sowie die Gesamtlänge anzeigt.

Dieses Beispiel verfügt über große Tasten, um eine einfache Handhabung mit den Fingern anstelle einer Maus als Eingabegerät zu ermöglichen.

Anweisungen

Mit dem Auswahlcontroller können Sie Objekte berühren, um sie auszuwählen, durch Ziehen der Karte schwenken oder durch Ziehen mit zwei Fingern zoomen und schwenken. Um das Auswahlverhalten zu ändern, stehen eine Reihe von Modifikatorschaltflächen zur Verfügung:

  • Die erste Schaltfläche ermöglicht die Auswahl mehrerer Objekte, indem ein Rechteck um Objekte gezogen wird. Standardmäßig schwenkt das Ziehen die Karte.
  • Die zweite Schaltfläche schaltet um, was passiert, wenn Sie auswählbare Objekte berühren: Wählen Sie sie aus (und heben Sie die Auswahl aller anderen Objekte auf), fügen Sie sie der Auswahl hinzu oder entfernen Sie sie aus der Auswahl.
  • Die dritte Schaltfläche ermöglicht das Anzeigen eines Pop-ups mit den Objekten unter Ihrem Finger. Im Popup können Sie das auszuwählende Objekt auswählen.

Ziehen Sie für den Schwenk-Controller einen Finger zum Schwenken und zwei Finger zum gleichzeitigen Schwenken, Zoomen und Drehen der Karte.

Um Punkte zur Messung des Lineal-Controllers hinzuzufügen, berühren Sie und heben Sie Ihren Finger an. Auch hier werden der Karte eine Reihe von Schaltflächen hinzugefügt:

  • Die blauen Pfeile machen einen Schritt rückgängig/wiederholen.
  • Das grüne V legt die erstellte Polylinie fest. Dadurch wird der Lineal-Controller in den Bearbeitungsmodus geschaltet.
  • Das rote Kreuz löscht die Polylinie und ermöglicht Ihnen einen erneuten Start.

GXY: Formen mit einem Touch-Gerät erstellen und bearbeiten Samples.gxy.touch.editing.MainPanel

Dieses Beispiel zeigt, wie Sie mit einem Touch-Gerät neue ILcdShape-Objekte erstellen und vorhandene ILcdShape-Objekte in einem ILcdGXYView bearbeiten.

Die hier verfügbare Funktionalität ist der im Bearbeitungsbeispiel demonstrierten Funktionalität sehr ähnlich. Der Hauptunterschied besteht darin, dass die Controller jetzt Berührungseingaben anstelle von Mauseingaben interpretieren. So können Sie beispielsweise ein Objekt mit dem Edit-Controller mit einem Finger verschieben und gleichzeitig mit einem anderen Finger die Ansicht schwenken. Das gleiche gilt für die Controller, die Objekte erstellen. Ein weiteres Problem ist das Fehlen von Modifikatortasten (auf Tastatur und Maus). Zum Ausgleich wurden die Touch-Controller um einige On-Map-Buttons erweitert. Der Edit-Controller hat:

  • die gleichen Tasten wie der Select-Controller (siehe touch.basic-Beispiel)
  • eine Schaltfläche, die beim Bearbeiten zwischen dem Übersetzen- und Umformen-Verhalten umschaltet.
  • zwei Schaltflächen (blaue Pfeile) zum Ausführen eines Rückgängig- bzw. Wiederherstellen-Vorgangs. Ein Rückgängigmachen entfernt einen zuvor platzierten Punkt, während ein Wiederherstellen einen entfernten Punkt erneut platziert.
  • eine (grüne) Schaltfläche, um eine Form im Bau festzulegen. Dies ist nur für Polylinien und Polygone relevant. Andere Formen werden festgelegt, wenn die erforderliche Anzahl von Punkten platziert wurde.
  • a Schaltfläche (rotes Kreuz), um die aktuelle Form im Bau abzubrechen und alle Punkte zu entfernen.
Anweisungen
  • Berühren oder klicken Sie auf eine der Schaltflächen für neue Formen in der Symbolleiste und berühren Sie die Karte, um eine neue Form zu erstellen. Der Punkt wird erst platziert, wenn Sie die Berührung loslassen. Wenn Sie eine Anzahl von Punkten platziert haben (wie viele hängt von der Form ab), wird ein Objekt zur Zeichnungsebene hinzugefügt und der Bearbeitungscontroller wird aktiviert. Bei zusammengesetzten Kurven können Sie eine neue Teilkurve starten, indem Sie eine Form im Dropdown-Feld auswählen.
  • Bearbeiten Sie eine Form in der Benutzerebene, indem Sie einen ihrer Punkte oder Segmente ziehen

GXY: Generieren von Berührungsereignissen Samples.gxy.touch.touchEvents.MainPanel

Dieses Beispiel zeigt, wie TLcdTouchEvents aus Hardwareereignissen erstellt werden können. Das Beispiel simuliert Touch-Hardware, die Hardware-Ereignisse generiert. Diese Ereignisse werden abgefangen und in Berührungsereignisse umgewandelt, die von LuciadLightspeed verwendet werden können. Danach werden sie verschickt.

Anweisungen

Nach dem Öffnen des Samples werden automatisch Touch-Events generiert. Sie schwenken, zoomen und drehen die Ansicht.

Netzsysteme Samples.gxy.transformation.geodeticToGrid.MainPanel

Dieses Beispiel demonstriert die Möglichkeit, einen geodätischen Standort anzuzeigen, der basierend auf verschiedenen ILcdGeodeticDatum ausgedrückt werden kann, und seine Koordinaten in einigen häufig verwendeten Rasterbezugssystemen und einigen lon-Lat-Formaten ausdrücken.

Anweisungen

Verschieben Sie das angezeigte Symbol und sehen Sie, wie sich seine Koordinaten ändern.

Es gibt zwei Textfelder, die den geodätischen Breiten- bzw. Längengrad enthalten. Der Breiten- und Längengrad werden in einem bestimmten Format dargestellt, das geändert werden kann. Auch Werte müssen in diesem Format eingegeben werden. Die geodätische Koordinate bezieht sich auf ein bestimmtes geodätisches Datum, das geändert werden kann. Im Gitterkoordinaten-Panel sind die (x,y) Gitterkoordinaten dieser geodätischen LatLon-Koordinate gemäß einigen häufig verwendeten Gitterkoordinatensystemen.

Das Ändern des geodätischen Datums oder der UTM-Zone wirkt sich nur auf die geodätische Koordinate oder die UTM-Koordinate aus. Da das geodätische Datum der Projektion in der Kartenkomponente dem geodätischen Datum des Gitterrechners entspricht, verschiebt sich auch das Symbol geringfügig.

GXY: Modellwelt- und Weltbildtransformationen Samples.gxy.transformation.mouseToGeodetic.MainPanel

Dieses Beispiel enthält eine benutzerdefinierte Implementierung von ILcdGXYController, die ein vom Benutzer gezogenes Rechteck (in Ansichtskoordinaten) in Modellkoordinaten umwandelt. Die Mausposition wird auch in eine beliebige Modellreferenz (eine Gitterreferenz mit einer Polarprojektion für den Nordpol) umgewandelt.

Anweisungen

Ziehen Sie ein Rechteck auf der Karte, und sehen Sie sich die Koordinaten seines Gegenstücks in Modellkoordinaten unterhalb der Karte an. Die Position des letzten Mausklicks oder Mausklicks wird auch in einer anderen Modellreferenz ausgedrückt.

GXY: Funktionen von LuciadLightspeed rückgängig machen Samples.gxy.undo.MainPanel

Dieses Beispiel demonstriert die Rückgängig-Unterstützung von LuciadLightspeed. Es basiert auf dem Muster "Formen" und ermöglicht es, an den Domänenobjekten vorgenommene Änderungen rückgängig zu machen.

Anweisungen

Führen Sie die folgenden Schritte aus, um die Rückgängig-Unterstützung mitzuerleben:

  • Aktivieren Sie den Edit-Controller über die Schaltfläche ganz links in der Symbolleiste.
  • Nehmen Sie einige Änderungen vor, indem Sie die Polylinie oder einen ihrer Griffe ziehen.
  • Erstellen Sie mit dem neuen Polylinien-Controller in der Symbolleiste eine oder mehrere neue Polylinien.
  • Klicken Sie in der Symbolleiste auf die Schaltfläche Rückgängig und die vorgenommenen Änderungen werden rückgängig gemacht.

GXY: Vertikale Ansicht Samples.gxy.vertikal.MainPanel

In diesem Beispiel wird die Verwendung des vertikalen Ansichtspakets veranschaulicht. Die 2D-Ansicht im oberen Teil enthält zwei Ebenen: eine Hintergrundebene mit einer Karte der Länder der Welt und eine Ebene, die zwei Flüge enthält. Jeder Flug wird als Liste von 3D-Punkten modelliert. Die 2D-Ansicht verwendet nur die ersten beiden Koordinaten (X, Y) jedes der Punkte.

Die vertikale Ansicht im unteren Teil wird verwendet, um das vertikale Profil des Fluges anzuzeigen, der in der 2D-Ansicht ausgewählt wurde. Außer diesem Profil können auch eine Reihe von ihm zugeordneten Unterprofilen in einer vertikalen Ansicht angezeigt werden. In diesem Fall ist der Ansicht nur ein Unterprofil zugeordnet: die Flugroute. FlightVVModel, eine Implementierung von ILcdVVModel, enthält die Hauptprofilpunkte und die Informationen über das Unterprofil.

Anweisungen

Wählen Sie einen Flug aus. In beiden Ansichten wird eine vertikale Markierung angezeigt. Ändern Sie die Flughöhe, indem Sie die Punkte nach oben oder unten ziehen. Mit den Schiebereglern rechts und unten können Sie die X- und Y-Achse zoomen. Mit den Schiebereglern oben können Sie Flugpunkte links oder rechts des Fluges ignorieren. Schließlich können Sie im rechten Bedienfeld die Höheneinheit auswählen.

Vorverarbeitung von 3D-Gelände Samples.earth.preprocessor.MainPanel

Dieses Beispiel veranschaulicht die Verwendung von TLcdEarthTileRepositoryPreprocessor . Dieses Beispiel bietet eine einfache Benutzeroberfläche zum Erstellen, Laden und Speichern von 3D-Geländemetadaten und deren Vorverarbeitung in einem Earth-Kachel-Repository.

Anweisungen

Um Daten als 3D-Gelände in ein Earth-Kachel-Repository vorzuverarbeiten, müssen Sie:

Die Terrain-Metadaten bestehen aus einer Reihe von Assets (dh Quelldatendateien) und einer geografischen Referenz. Fügen Sie den Metadaten mithilfe der Schaltfläche unten im Bedienfeld einige Assets hinzu. Sie können entweder einzelne Dateien auswählen, die vorverarbeitet werden müssen, oder ein Verzeichnis, das die Dateien enthält, die vorverarbeitet werden müssen. Sobald die Assets geladen sind, werden sie im Metadatenbereich angezeigt und ihr Begrenzungsrahmen wird auf der Karte angezeigt. Für Bildassets können Sie optional auch eine Clipping-Form festlegen, um den vorverarbeiteten Teil einzuschränken. Dies kann beispielsweise verwendet werden, um die Vorverarbeitung einer im Asset vorhandenen Grenze zu vermeiden. Sie können die Terrain-Metadaten (z. B. für die Verwendung mit dem Earth On-the-Fly-Beispiel) über die Schaltfläche unter der Karte speichern. Schließlich können Sie die geografische Referenz des Terrains mithilfe des Kombinationsfelds oben im Metadatenfeld ändern. Normalerweise wird diese geografische Referenz am häufigsten verwendet, wenn das Terrain-Repository visualisiert wird.

Das Repository, in das die Assets vorverarbeitet werden sollen, muss konfiguriert werden, bevor der Präprozessor gestartet werden kann. Optional können Sie auch den zu verarbeitenden Datentyp ändern und die Texturtransparenz aktivieren. Nach Drücken der Starttaste kann der Vorverarbeitungsfortschritt im Fortschrittsfenster und auf der Karte verfolgt werden. Der Präprozessor kann jederzeit über die Schaltflächen im Fortschrittsfeld gestoppt und wieder aufgenommen werden.

Filtern von Daten mit der OGC Filter API Samples.ogc.filter.model.MainPanel

Dieses Applet demonstriert die Möglichkeit, Daten mit der OGC-Filter-API zu filtern. Der Ansicht, für die ein Filter konfiguriert ist, wird ein Layer mit Erdbeben hinzugefügt. Der Layerfilter wird aus einem OGC-Filter erstellt, der aus einer Kombination von drei OGC-Bedingungen erstellt wird: 'ein kleiner als' für die Größe, ein zeitlicher für den Zeitraum und eine Bounding-Box-Bedingung eines Landes.

Die OGC-Bedingungen werden programmgesteuert mithilfe der OGC-Filter-API ausgedrückt. Die Erstellung der OGC-Bedingungen erfolgt in EarthQuakeFilterModel#createCombinedCondition. Ändert sich einer der Parameter für die OGC-Bedingungen, wird ein neuer OGC-Filter angelegt und mittels eines Filter-Evaluators in einen ILcdFiltered umgewandelt. Diesen Konvertierungscode finden Sie in MainPanel#addData.

Anweisungen

Verwenden Sie die Steuerelemente im Filterkonfigurationsfeld, um die verschiedenen Parameter des Filters anzupassen.

Filtern von Daten mit den XML-Dekodierungsfunktionen von OGC Filter Samples.ogc.filter.xml.MainPanel

Dieses Applet demonstriert die Fähigkeit zum Filtern von GML-Daten unter Verwendung der OGC Filter XML-Dekodierungs- und -Auswertungsfunktionen.

Es zeigt alle Länder der Welt und die gleichen Daten an, wobei ein Filter in einer anderen Ebene angewendet wird.

Anweisungen

Geben Sie im unteren Textbereich manuell einen Filter ein oder klicken Sie auf die Schaltfläche Laden, um einen vordefinierten Filter aus der Liste zu laden.

Klicken Sie auf die Schaltfläche Anwenden, um den Filter auf die Länderebene anzuwenden. Die gefilterte Ebene zeigt alle Länder an, die den Filter bestehen.

Doppelklicken Sie auf ein Land, um die zugehörigen Merkmale anzuzeigen und mit dem Filter zu vergleichen.

Exportieren von Daten nach GML31 Samples.encoder.gml3.Main

Dies ist ein Befehlszeilenbeispiel. Klicken Mehr Info für Laufanweisungen.

Dieses Beispiel veranschaulicht, wie Daten im SHP-, MIF- oder MAP-Format umgewandelt und als GML31-Daten exportiert werden können.

Führen Sie das Beispiel mit dem Shell-Skript im Beispielordner aus:

Dies sind die zu übergebenden Parameter:

  • gmlSchema: der Speicherort des GML-Schemas, das im Attribut xsi:schemaLocations kodiert werden soll
  • xmlSchema: die Position des zu codierenden XML-SCHEMA-Schemas im Attribut xsi:schemaLocations
  • namespace: der Ziel-Namespace, falls keiner verfügbar ist.
  • vectorFile: der Name einer zu konvertierenden Vektordatei
  • resultFile: der Name der Ausgabedatei

Transformieren von Daten in und aus GML Samples.transformation.gml.GMLTransformationDemo

Dies ist ein Befehlszeilenbeispiel. Klicken Mehr Info für Laufanweisungen.

Dieses Beispiel verwendet das FlightPlan-Datenmodell aus den LuciadLightspeed-Grundlagen als Quellmodell. Es zeigt, wie dieses Datenmodell in ein GML-Datenmodell umgewandelt werden kann. Es zeigt, wie das GML-Anwendungsschema generiert werden kann. Anschließend codiert es ein Modell mit Flugplänen als GML-Dokument. Dann wird dieses Dokument wieder in ein Modell mit Flugplänen entschlüsselt.

Führen Sie das Beispiel mit dem Shell-Skript im Beispielordner aus:

GXY: KML-Daten anzeigen Samples.decoder.kml22.gxy.MainPanel

In diesem Beispiel wird das Laden und Anzeigen von KML-Daten auf einer Karte veranschaulicht.

Anweisungen

Das Beispiel lädt automatisch eine grundlegende KML-Datei mit den meisten KML-Features und passt die Karte an die Daten an.

Der Modellinhaltsbaum neben der Karte ist eine baumbasierte Struktur, die den Inhalt aller KML-Dateien anzeigt, die derzeit auf der Karte angezeigt werden.

Objekte können entweder über die Karte oder über den Modellinhaltsbaum ausgewählt werden. Wenn ein Objekt ausgewählt wird, wird eine Sprechblase eingeblendet, die zusätzliche Informationen zum Objekt anzeigt.

Das Beispiel löst automatisch Netzwerklinks in KML-Dateien auf und aktualisiert den Modellinhalt, wenn im Link ein Aktualisierungsmodus angegeben ist.

Beim Laden von KML-Dateien mit Zeitinformationen (Zeitstempel, Zeitspanne) wird eine Zeitsymbolleiste angezeigt, die das Zeitintervall anzeigt, für das Daten verfügbar sind. Mit dem Zeitschieberegler kann gesteuert werden, welche Daten auf der Karte angezeigt werden sollen.

Lightspeed: KML-Daten anzeigen Samples.decoder.kml22.lightspeed.MainPanel

In diesem Beispiel wird das Laden und Anzeigen von KML-Daten auf einer Karte veranschaulicht.

Anweisungen

Das Beispiel lädt automatisch zwei KML-Dateien:

  • eine Datei mit Collada-Daten, die das Rathaus von Leuven darstellt.
  • eine einfache KML-Datei, die die meisten KML-Funktionen enthält.

Der Modellinhaltsbaum neben der Karte ist eine baumbasierte Struktur, die den Inhalt aller KML-Dateien anzeigt, die derzeit auf der Karte angezeigt werden.

Objekte können entweder über die Karte oder über den Modellinhaltsbaum ausgewählt werden. Wenn ein Objekt ausgewählt wird, wird eine Sprechblase eingeblendet, die zusätzliche Informationen zum Objekt anzeigt.

Das Beispiel löst automatisch Netzwerklinks in KML-Dateien auf und aktualisiert den Modellinhalt, wenn im Link ein Aktualisierungsmodus angegeben ist.

Beim Laden von KML-Dateien mit Zeitinformationen (Zeitstempel, Zeitspanne) wird eine Zeitsymbolleiste angezeigt, die das Zeitintervall anzeigt, für das Daten verfügbar sind. Mit dem Zeitschieberegler kann gesteuert werden, welche Daten auf der Karte angezeigt werden sollen.

Konvertieren Sie Modelle in KML-Modelle und speichern Sie sie in KML-Dateien Samples.encoder.kml22.KMLConverter

Dies ist ein Befehlszeilenbeispiel. Klicken Mehr Info für Laufanweisungen.

In diesem Beispiel wird veranschaulicht, wie Modelle in KML konvertiert werden. Das KML-Format ist besonders nützlich, um eine Situationskarte mit einer breiteren Gruppe von Stakeholdern zu teilen, die nicht unbedingt Zugriff auf LuciadLightspeed haben, aber KML-Daten in anderen Kartenvisualisierungstools öffnen können. Mit LuciadLightspeed können Sie Kartendaten in KML konvertieren. Dieses Beispiel veranschaulicht eine Möglichkeit, Vektordaten in KML zu konvertieren und die Konvertierung anzupassen. Es gibt Ihnen die volle Kontrolle über den Stil und die Geometrieinformationen, die in das KML-Modell konvertiert werden. Der Modellencoder TLcdKML22ModelEncoder kann dann das KML-Modell exportieren.

Führen Sie das Beispiel mit dem Shell-Skript im Beispielordner aus:

Führen Sie das Beispiel aus, um die Dateien und das In-Memory-Modell in KML zu konvertieren. Die drei neuen KML-Dateien befinden sich im Kml-Verzeichnis im Datenressourcenordner für die Beispiele. Sie können die KML-Dateien in den allgemeinen Decoderbeispielen, den KML-Decoderbeispielen oder einem beliebigen KML-Visualisierungstool visualisieren.

Zuerst decodiert das KML-Codierungsbeispiel eine SHP-Datei, die Tracks darstellt, und wandelt eine Teilmenge der Tracks in ein KML-Modell um. Das KML-Modell wird dann in eine Datei kodiert. Eine andere SHP-Datei, die die US-Bundesstaaten repräsentiert, wird ebenfalls dekodiert, und einige Bundesstaaten sind in KML kodiert. Als Nächstes erstellt das Beispiel ein In-Memory-Modell von Lufträumen. Jeder Luftraum ist eine extrudierte Form mit einem Kreis oder einem Polygon als Grundform. Das Luftraummodell wird ebenfalls in KML umgewandelt und kodiert.

Lightspeed: Lidar-Visualisierung Samples.lightspeed.lidar.MainPanel

Dieses Beispiel veranschaulicht, wie Lidar-Daten aus .las-Dateien in einer Lightspeed-Ansicht visualisiert werden können.

Mit diesem Beispiel können Sie eine oder mehrere .las-Dateien öffnen und unterschiedliche Stile anwenden.

Die folgenden Styling-Optionen sind verfügbar, wenn mindestens eine Ebene dies unterstützt:

  • Farbe: verwendet die in der Datei verfügbaren Farbinformationen.
  • Höhe: zeigt einen Farbverlauf über den kombinierten Höhenbereich aller Ebenen.
  • Einstufung: zeigt eine andere Farbe pro Klasse.
  • Intensität: zeigt den Graustufenverlauf basierend auf der in der Datei verfügbaren Intensität an.
  • Infrarot: zeigt einen Farbverlauf basierend auf den in der Datei verfügbaren Infrarotinformationen.

Darüber hinaus ist standardmäßig eine Schattierungstechnik zur Verbesserung der Tiefenwahrnehmung aktiviert. Über die Bedienelemente im Panel können die Einstellungen geändert werden:

  • Erweitern: das Kontrollkästchen aktiviert oder deaktiviert die Schattierungstechnik
  • Das Dicke Schieberegler verändert die Stärke des aufgetragenen Farbtons
  • Das Stärke Schieberegler verändert die Stärke des aufgetragenen Farbtons
  • Das Farbe Chooser ändert die Farbe des angewendeten Farbtons
Anweisungen

Öffnen Sie .las-Dateien mit dem Symbol "Datei öffnen" oder indem Sie Dateien auf das Sample ziehen.

Ändern Sie das Styling und die Filterung mithilfe des Panels auf der rechten Seite. Das Styling wird auf die Ebenen angewendet, die es unterstützen. Ebenen, die dies nicht unterstützen, verwenden den Höhenstil.

Ändern Sie die Tiefenwahrnehmungseinstellungen mithilfe des Bedienfelds auf der rechten Seite. Die Einstellungen werden auf alle Ebenen angewendet.

GXY: Clusterbildung Samples.gxy.clustering.MainPanel

In diesem Beispiel wird veranschaulicht, wie Clustering in einer GXY-Anwendung mit TLcdTransformingModelFactory und TLcdClusteringTransformer eingeführt wird.

Die Stichprobe enthält eine große Anzahl aufgezeichneter humanitärer Ereignisse in Afrika. Wenn mehrere Ereignisse dicht beieinander liegen (im Sichtraum), werden sie schwer zu unterscheiden. Daher wird anstelle der einzelnen Ereignisse ein Cluster angezeigt.

In diesem Beispiel werden zwei verschiedene Clustering-Strategien verwendet:

  • Beim Heranzoomen werden nur Veranstaltungen im selben Land zusammengefasst (falls erforderlich). Cluster enthalten niemals Ereignisse, die in verschiedenen Ländern stattfinden. Dies wird durch die Angabe eines ILcdClassifier auf dem Transformator erreicht.
  • Beim Herauszoomen werden alle Ereignisse für das Clustering berücksichtigt, auch wenn sie in verschiedenen Ländern aufgetreten sind.

Dieses skalierungsabhängige Clustering-Verhalten wird durch Aufrufen der TLcdClusteringTransformer.createScaleDependent-Methode erstellt.

Anweisungen

Navigieren Sie auf der Karte und sehen Sie, wie die Cluster bei Bedarf aktualisiert werden.

GXY: Asynchrones Layer Painting mit Lightspeed Samples.gxy.concurrent.painting.lightspeed.MainPanel

Dieses Beispiel demonstriert die Fähigkeit zum asynchronen Malen in einem ILcdGXYView mithilfe eines Lightspeed-Layers. Dies kann nützlich sein, wenn Sie keine Lightspeed-Ansicht verwenden können, aber das Rendern in Ihrem ILcdGXYView beschleunigen möchten, beispielsweise beim Malen vieler Objekte oder komplexer Visualisierungen wie der Sichtlinienvisualisierung.

Das Beispiel zeigt, wie Sie eine asynchron gezeichnete Ebene instanziieren, die das eigentliche Zeichnen verarbeitet. Die Ebene wird dann in einem separaten Thread im Hintergrund gemalt, sodass die Malerei die Benutzeroberfläche nicht mehr blockiert.

Außerdem wird veranschaulicht, wie den asynchronen Layern mithilfe eines Paint-Warteschlangen-Managers automatisch Paint-Warteschlangen zugewiesen werden. Der in diesem Beispiel verwendete Paint Queue Manager minimiert die Anzahl der Paint Queues, lässt jedoch nie zu, dass Lightspeed-Layer ihre Warteschlangen mit anderen Arten von asynchronen Layern teilen. Die Zuweisungen der Farbwarteschlange sind im Ebenenbaum zu sehen: Ebenen, die sich eine Farbwarteschlange teilen, haben dieselbe Farbe.

Anweisungen

Versuchen Sie, mit dem Mausrad zu schwenken und zu zoomen. Nach den Operationen werden neue Layer-Inhalte hinzugefügt. Das Kontrollkästchen Durchscheinend macht alle Inhalte durchscheinend. Dies zeigt, wie Sie den Status der Lightspeed-Ebene ändern.

Lichtgeschwindigkeit: Ballon Samples.lightspeed.balloon.MainPanel

In diesem Beispiel wird veranschaulicht, wie Sprechblasen in einer ILspView mit TLspBalloonManager angezeigt werden.

Das Beispiel generiert vier Symbole, von denen jedes eine Sprechblase enthält. Eine Sprechblase wird sichtbar gemacht, wenn ein einzelnes Objekt ausgewählt wird. Die Sprechblase enthält ein Symbol und ein bearbeitbares Textfeld, das die Position des Symbols in geodätischen Koordinaten enthält.

Eine ausführlichere Beschreibung der Ballon-Manager-API finden Sie im Entwicklerhandbuch.

Anweisungen

Wählen Sie eines der Symbole aus. Es erscheint ein Ballon. Wenn Sie das Koordinatenfeld in der Sprechblase bearbeiten und die Eingabetaste drücken, ändert sich die Position des Symbols. Der Ballonpfeil wird bei dieser Operation ebenfalls verschoben. Ballons werden nur angezeigt, wenn ein Domänenobjekt ausgewählt ist.

Lichtgeschwindigkeit: Clustering Samples.lightspeed.clustering.MainPanel

In diesem Beispiel wird veranschaulicht, wie Clustering in einer Lightspeed-Anwendung mit TLcdTransformingModelFactory und TLcdClusteringTransformer eingeführt wird.

Die Stichprobe enthält eine große Anzahl aufgezeichneter humanitärer Ereignisse in Afrika. Wenn mehrere Ereignisse dicht beieinander liegen (im Betrachtungsraum), werden sie schwer zu unterscheiden. Daher wird anstelle der einzelnen Ereignisse ein Cluster angezeigt. Durch die Auswahl eines Clusters werden auch die enthaltenen Elemente ausgewählt und angezeigt.

In diesem Beispiel werden zwei verschiedene Clustering-Strategien verwendet:

  • Beim Heranzoomen werden nur Veranstaltungen im selben Land zusammengefasst (falls erforderlich). Cluster enthalten niemals Ereignisse, die in verschiedenen Ländern stattfinden. Dies wird durch die Angabe eines ILcdClassifier auf dem Transformer erreicht.
  • Beim Herauszoomen werden alle Ereignisse für das Clustering berücksichtigt, auch wenn sie in verschiedenen Ländern aufgetreten sind.

Dieses skalierungsabhängige Clustering-Verhalten wird durch Aufrufen der TLcdClusteringTransformer.createScaleDependent-Methode erstellt.

Anweisungen

Navigieren Sie auf der Karte und sehen Sie, wie die Cluster bei Bedarf aktualisiert werden. Die enthaltenen Elemente eines Clusters können durch Auswahl angezeigt werden. Beim Verschieben eines Clusters werden auch die enthaltenen Elemente verschoben.

Lichtgeschwindigkeit: Benutzerdefinierter Controller Samples.Lightspeed.Customization.Controller.MainPanel

In diesem Beispiel wird veranschaulicht, wie ein benutzerdefinierter Controller implementiert und verwendet wird. Der erste Controller (standardmäßig aktiv) zeigt ein Informationsfenster an, wenn Sie mit der Maus über ein Objekt fahren. Der zweite Controller ermöglicht die Navigation mit den Pfeil- und anderen Tasten.

Anweisungen

Wenn Sie den ersten Controller verwenden, fahren Sie mit der Maus über einige der Bezirke in den USA und ein Informationsfenster mit einigen Informationen über das County wird angezeigt. Bei Verwendung des zweiten Controllers können folgende Tasten verwendet werden:

  • Pfeiltasten: Schwenken Sie die Ansicht nach links, oben, rechts und unten.
  • Start und Ende: Vergrößern und verkleinern.
  • Einfügen und Löschen: Giert nach links und rechts drehen.
  • Page Up und Page Down: Pitch vorwärts und rückwärts drehen (nur 3D).
  • F: Vollbildmodus umschalten.

Lichtgeschwindigkeit: Hippodrom sample.lightspeed.customization.hippodrome.MainPanel

Dieses Beispiel zeigt, wie Sie Unterstützung für das Malen und Bearbeiten einer benutzerdefinierten Form hinzufügen: dem Hippodrom. Das Hippodrom besteht aus zwei 180-Grad-Bögen und zwei diese Bögen verbindenden Linien in einem bestimmten Abstand von der Linie zwischen den Mittelpunkten (Breite).

Weitere Informationen finden Sie im dokumentierten Beispielcode und im Entwicklerhandbuch.

Anweisungen
  • Wählen Sie ein Hippodrom aus, um mit der Bearbeitung zu beginnen.
  • Verschieben Sie einen der Hippodrompunkte, indem Sie die Maus von einem Punkt aus ziehen.
  • Bewegen Sie das gesamte Hippodrom, indem Sie die Maus ausgehend von der Form selbst ziehen.
  • Ändern Sie die Breite des Hippodroms, indem Sie die Maus ausgehend vom Umriss der Form ziehen.
  • Erstellen Sie ein neues geodätisches oder gitterförmiges Hippodrom, indem Sie den entsprechenden Create-Controller in der Symbolleiste auswählen und dreimal für ein normales Hippodrom und viermal für ein extrudiertes Hippodrom in 3D klicken. Die ersten beiden Klicks definieren den Start- und Endpunkt. Der dritte Klick bestimmt die Breite. Der optionale vierte Klick definiert die maximale Höhe des extrudierten Hippodroms.

Lightspeed: Verwenden von benutzerdefinierten Farbdarstellungen sample.lightspeed.customization.paintrepresentation.MainPanel

Dieses Beispiel ist eine Anpassung des Bearbeitungsbeispiels (das die Bearbeitungs- und Erstellungsfunktionen der Editoren veranschaulicht, die in der Lightspeed-API verfügbar sind).

Die Ebene Shapes in diesem Beispiel verfügt über einen regulären Formenmaler ( TLspShapePainter ), um die Körper der Formen zu malen. Darüber hinaus fügt dieses Beispiel einen weiteren Shape Painter mit einem anderen Styler hinzu, der durch eine benutzerdefinierte Paint-Darstellung identifiziert wird. Dieser spezielle Styler bietet dem Maler die Grenzen der Form im Gegensatz zur Form selbst. Daher wird jede Form zweimal gemalt: einmal mit ihrer eigenen Geometrie und einmal mit der Begrenzungsgeometrie.

Ausführlichere Informationen zum Erstellen einer Anwendung, die benutzerdefinierte Zeichendarstellungen verwendet, finden Sie im Entwicklerhandbuch oder im dokumentierten Quellcode dieses Beispiels.

Anweisungen

Versuchen Sie, neue Formen zu bearbeiten und zu erstellen, und beachten Sie, wie beide Maldarstellungen (die Form selbst und ihre Begrenzungen) gezeichnet und aktualisiert werden.

Lichtgeschwindigkeit: Animierter Stil sample.lightspeed.customization.style.animated.MainPanel

Dieses Beispiel zeigt, wie das Animationsframework von LuciadLightspeed verwendet werden kann, um den Stil eines Objekts zu animieren. Die Animation ist in AnimatedAreaStyler implementiert, einer benutzerdefinierten ILspStyler-Implementierung, die eine ILcdAnimation verwendet, um Stileigenschaften zu aktualisieren und bei Bedarf Stiländerungsereignisse auszulösen.

Anweisungen

Wenn das Beispiel gestartet wird, sollte der Stil eines der Länder automatisch animiert werden.

Lightspeed: Styling-Bearbeitungsgriffe sample.lightspeed.customization.style.handles.MainPanel

In diesem Beispiel wird veranschaulicht, wie Sie die Visualisierung von Bearbeitungsziehpunkten mithilfe einiger benutzerdefinierter Styler anpassen. In diesem Beispiel werden zwei Styler verwendet, um:

Anweisungen

Wählen Sie eine Ellipse im Beispiel aus. Dadurch sollte die Bearbeitung dieser Form aktiviert werden, und Sie sollten die folgenden Anpassungen sehen:

Lichtgeschwindigkeit: Hervorhebung Samples.lightspeed.customization.style.highlighting.MainPanel

Dieses Beispiel zeigt, wie die Animations- und Stilframeworks von LuciadLightspeed verwendet werden können, um benutzerdefinierte Animationen für das Objekt unter dem Cursor hervorzuheben und anzuzeigen.

Die Stichprobe besteht aus einer Ebene mit Formen für jedes Land. Wenn die Maus über ein Land bewegt wird, erscheint ein Kreisdiagramm mit der demografischen Verteilung in diesem Land.

Diese Ebene hat zwei Styler:

  • Ein AnimatedHighlightAreaShapeStyler, der das Styling der Länder/Kreisdiagramme selbst übernimmt ( Füll-/Linienfarben )
  • Ein AnimatedHighlightAreaLabelStyler, der sich um das Styling der Labels der Länder/Kreisdiagramme kümmert

Die Kreisdiagramme werden erstellt und gestaltet, indem ihr Stil und ihre Geometrie zusammen mit dem Objekt, zu dem sie gehören, an einen ALspStyleCollector übergeben werden.

Anweisungen

Bewegen Sie Ihren Cursor über die verschiedenen Länder der Welt. Wenn sich der Cursor über einem Land befindet, wird ein Kreisdiagramm nach und nach angehoben und zeigt spezifische Bevölkerungsstatistiken für dieses Land an. Wenn sich der Cursor vom markierten Land entfernt, verschwindet das Kreisdiagramm für dieses Land allmählich.

Lightspeed: Thematisches Mapping Samples.Lightspeed.Customization.style.thematic.MainPanel

Dieses Beispiel zeigt, wie man "thematic Mapping" implementiert, d. h. den Stil eines Objekts an die Attribute dieses Objekts anpasst.

Das Beispiel besteht aus einer Schicht von Länderformen, auf denen benutzerdefinierte Farben gestylt werden. Die Farben für die Länder werden zwischen einer minimalen Farbe und einer vom Benutzer gewählten maximalen Farbe linear interpoliert, wobei die Bevölkerung jedes Landes als Gewichtung für die Interpolation verwendet wird. Stärker besiedelte Bereiche tendieren daher zur maximalen Farbe, während weniger besiedelte Bereiche zur minimalen Farbe tendieren. Dieses Styling wird erreicht, indem eine benutzerdefinierte Styler-Implementierung verwendet wird, nämlich ein samples.lightspeed.customization.style.thematic.CountryStyler

Anweisungen

Klicken Sie entweder auf die linke oder rechte Farbverlaufsschaltfläche in der Symbolleiste, um die niedrigste bzw. Sie werden feststellen, dass die Farbe der Länder ein interpolierter Wert zwischen diesen beiden Farben ist, basierend auf ihrer Bevölkerung.

Beispiel für einen Datenmodellbaum Samples.lightspeed.datamodel.MainPanel

Dieses Beispiel fügt Funktionalität hinzu, um das TLcdDataModel eines ILcdModel anzuzeigen, das über einen ILcdDataModelDescriptor als Modelldeskriptor verfügt.

Der 'Datenmodellbaum' ist beim Start sichtbar und zeigt den Datenmodellbaum für den aktuell ausgewählten Layer.

Der Datenmodellbaum enthält alle deklarierten TLcdDataType-Instanzen des TLcdDataModel. Jeder TLcdDataType enthält eine Reihe von Eigenschaften und TLcdDataProperties.

Alle TLcdDataTypes, die auch Modellelement-TLcdDataType-Instanzen sind, werden in einer speziellen Farbe hervorgehoben.

Beachten Sie, dass TLcdDataModel-Instanzen zyklische Datentypen definieren können. Im Beispielcode gibt es keine explizite Prüfung auf dieses Problem, da es für diesen speziellen Fall nicht benötigt wurde.

Anweisungen

Öffnen Sie einige zufällige Dateien und sehen Sie, wie der Datenmodellbaum jedes Mal aktualisiert wird, wenn Sie einen neuen Layer auswählen, der einen ILcdModelDescriptor als Modelldeskriptor in seinem Modell hat.

Lichtgeschwindigkeit: Tag/Nacht-Karte Samples.lightspeed.daynight.MainPanel

Dieses Beispiel zeigt, wie Sie eine Tag/Nacht-Karte in einer Lightspeed-Ansicht erstellen. Die Bereiche in ziviler/nautischer/astronomischer Dämmerung und Nacht werden in zunehmend dunkleren Farbtönen gezeichnet. Ein Symbol auf der Karte zeigt den Punkt an, an dem die Sonne direkt über Ihnen steht. Die Tag/Nacht-Karte animiert in schneller Zeit über einen Zeitraum von 1 Jahr.

Die Tag/Nacht-Karte ist wie folgt aufgebaut:

  1. Finden Sie den Punkt auf der Erde, an dem die Sonne direkt über Ihnen steht.
  2. Konstruieren Sie auf der gegenüberliegenden Seite des Globus eine Reihe konzentrischer Kreise, um die Nacht- und Dämmerungsbereiche darzustellen.
  3. Füllen Sie diese Kreise mit einer dunklen durchscheinenden Farbe.
Anweisungen

Das Beispiel zeigt automatisch eine animierte Tag/Nacht-Karte. Eine Beschriftung am oberen Kartenrand zeigt das aktuelle Datum und die aktuelle Uhrzeit der Karte an.

Lightspeed: Bericht zur Hardwarefähigkeit Samples.lightspeed.debug.report.MainPanel

Das Beispiel für den Hardwarefähigkeitsbericht generiert eine detaillierte Liste der hardwarebezogenen Fähigkeiten des Geräts, auf dem das Beispiel ausgeführt wird. Das Beispiel generiert einen Hardwarebericht mit den OpenGL- und OpenCL-Funktionen des Systems unter Verwendung der Dienstprogrammklasse com.luciad.view.lightspeed.util.TLspPlatformInfo. Zu den gemeldeten Funktionen gehören:

  • Informationen zum Betriebssystem
  • OpenGL-Basisinformationen (Hersteller, Renderer, Version)
  • Verfügbare OpenGL-Erweiterungen
  • OpenGL-Zustandsvariablen
  • OpenCL-Basisinformationen (Hersteller, Version, . )
  • Verfügbare OpenCL-Erweiterungen
  • OpenCL-Geräteinfo
Anweisungen

Wenn Sie sich bei Problemen mit Lightspeed an den Luciad-Support wenden, ist es immer willkommen, wenn Sie den von diesem Beispiel generierten Bericht beifügen.

Lightspeed: Decodieren von Daten in mehreren Formaten Samples.lightspeed.decoder.MainPanel

Dieses Beispiel demonstriert die Fähigkeit zum Laden und Visualisieren von Daten aus Quellen in verschiedenen Formaten auf einer Lightspeed-Karte mit ILcdModelDecoder und ILspLayerFactory .

Eine Datei- und eine URL-Aktion sind so konfiguriert, dass Daten in fast jedem verfügbaren Format geladen werden.

Das Beispiel verwendet einen zusammengesetzten ILcdModelDecoder, um die Daten in ein ILcdModel zu decodieren. Danach erstellt eine zusammengesetzte ILspLayerFactory einen Layer, der steuert, wie das Modell der geladenen Daten angezeigt wird. Die Modelldecodierer und Schichtfabriken werden unter Verwendung eines Dienstnachschlagemechanismus abgerufen und enthalten sowohl eingebaute als auch Beispielimplementierungen.

Die Symbolleiste enthält mehrere Controller zum visuellen Vergleichen von Layern.

Anweisungen

Fügen Sie neue Daten hinzu, indem Sie auf die entsprechende Schaltfläche in der Symbolleiste klicken oder Dateien oder URLs per Drag & Drop auf die Karte ziehen. Nicht alle gestylten LuciadLightspeed-Formate verfügen über eine dedizierte Lightspeed-Layer-Factory (ein Beispiel hierfür ist DGN). In diesem Fall wird eine Fallback-Layer-Factory verwendet. Daher wird die Visualisierung einiger Daten möglicherweise nicht richtig formatiert.

Die Symbolleiste ermöglicht die Auswahl der folgenden visuellen Inspektionscontroller:

  • Der Swipe-Controller: Wählen Sie zwei Ebenensätze aus. Ziehen Sie die Wischlinie horizontal oder vertikal, um die Unterschiede zwischen den beiden Sätzen entlang der Linie zu überprüfen.
  • Der Flicker-Controller: Wählen Sie zwei Ebenen aus. Klicken Sie schnell mit der Maus, um zwischen den beiden Ebenen zu wechseln.
  • Der Bullaugen-Controller: Wählen Sie zwei Ebenensätze aus und bewegen Sie die Maus über die Karte. Der erste Satz von Ebenen ist standardmäßig sichtbar. Der zweite Satz wird in einem rechteckigen Bereich um die Mausposition herum angezeigt. Halten Sie die Umschalttaste gedrückt und bewegen Sie das Mausrad, um die Größe des Bullauges zu ändern.
  • Der Lupen-Controller: Ein quadratischer Bereich um die Mausposition zeigt eine vergrößerte Ansicht der sichtbaren Ebenen. In der Lupenüberlagerung haben Elemente in Ansichtsgröße immer noch dieselbe Größe, während Elemente in Weltgröße skaliert werden, um den Zoomfaktor der Lupe zu berücksichtigen. Halten Sie die Umschalttaste gedrückt und bewegen Sie das Mausrad, um den Zoomfaktor der Lupe zu ändern. Halten Sie die Strg-Taste gedrückt und bewegen Sie das Mausrad, um die Größe der Lupenüberlagerung zu ändern.

Lightspeed: Geometrische Formen bearbeiten Samples.lightspeed.editing.MainPanel

Dieses Beispiel veranschaulicht die Bearbeitungs- und Erstellungsfunktionen der Editoren, die in der Lightspeed-API verfügbar sind. Das Beispiel enthält eine Formebene zum Bearbeiten und Erstellen. Die Formerstellung erfolgt mit TLspCreateController. Die Formbearbeitung erfolgt mit TLspEditController.

Ausführliche Informationen zum Erstellen einer Anwendung mit Lightspeed-Editoren finden Sie im Entwicklerhandbuch oder im dokumentierten Quellcode dieses Beispiels.

Anweisungen

Um eine der Formen zu bearbeiten, klicken Sie auf die Form und interagieren Sie mit einem der Bearbeitungsgriffe. Bitte lesen Sie die Javadoc der verschiedenen Editorklassen im Paket com.luciad.view.lightspeed.editor, um zu sehen, welche Funktionalität von jedem der Handles bereitgestellt wird.

Um eine neue Form zu erstellen, aktivieren Sie einen der Create-Controller in der Symbolleiste. Die meisten Controller haben auch eine extrudierte Erstellungsvariante. Diese Variante erstellt eine extrudierte Form mit der Grundform, die vom normalen Editor erstellt wird. Der Ellipsen-Erzeugungs-Controller erstellt beispielsweise eine extrudierte Ellipse, wenn die Extrusion aktiviert ist. Die Extrusion kann über die Schaltfläche Extrusion in der Erstellungssymbolleiste aktiviert werden.

Bei den meisten Formen wird die Erstellung einfach durch eine Abfolge von Mausklicks oder Antippen ausgeführt. Einige zusätzliche Anweisungen für Sonderfälle:

  • Polylinien und Polygone: Beenden Sie die Erstellung mit Rechts- oder Doppelklick.
  • Komplexe Polygone: Wechseln Sie mit der rechten Maustaste zum nächsten Polygon. Schließen Sie den Erstellungsprozess mit einem Doppelklick ab.
  • Komplexe Ringe und Kurven: Wechseln Sie mit der rechten Maustaste zur nächsten Form. Ändern Sie den Formtyp mithilfe einer der Schaltflächen, die in der Ansicht angezeigt werden.
  • Extrudierte Polylinien und Polygone: Beenden Sie die Erstellung der Grundform mit einem Rechtsklick.

Beim Erstellen oder Bearbeiten von Formen können Sie das Einrasten deaktivieren, indem Sie die Strg-Taste drücken (cmd auf macOS). Fügen Sie einen Punkt aus einer Polylinie oder einem Polygon ein oder entfernen Sie ihn, indem Sie die Strg-Taste (cmd auf macOS) gedrückt halten, während Sie gedrückt halten. Wählen Sie mehrere Formen aus, indem Sie die Umschalttaste gedrückt halten. Verwenden Sie die Löschtaste, um ausgewählte Formen zu entfernen.

Lichtgeschwindigkeit: Geoid Samples.lightspeed.geoid.MainPanel

Dieses Beispiel visualisiert das Geoid EGM2008 in 3D. Die Geoidhöhen sind übertrieben, tatsächlich schwanken sie zwischen -110m und +90m. Blaue Farben zeigen an, dass die Geoidhöhen negativ sind (Geoid unterhalb des Ellipsoids des WGS84-Datums). Grüne Farben zeigen an, dass die Geoidhöhen positiv sind (Geoid über dem Ellipsoid).

Geoidhöhen werden in der Regel hinter den Bildschirmen bei Berechnungen mit Referenzen verwendet, die geodätische Datumsangaben basierend auf Geoiden aufweisen. Sie sind beispielsweise für Höhendaten relevant, die üblicherweise in Bezug auf wenige standardisierte Geoidmodelle definiert werden. Für genaue Berechnungen können Höhen über einem Geoid dann in Höhen über einem Ellipsoid umgewandelt werden.

Die Geoidhöhen werden aus dem geodätischen Datum abgerufen, das von der TLcdGeoidGeodeticDatumFactory erstellt wird.

Anweisungen

Lichtgeschwindigkeit: Gitter Samples.lightspeed.grid.MainPanel

Dieses Beispiel zeigt die Längen-/Breitengrad-, MGRS-, Georef- und XY-Raster-Layer sowie das Ändern der Text- und Linienstile.

Anweisungen

Für das Längen-/Breitengradraster können Sie die folgenden Stiloptionen ändern:

  • Parallelen: ändert die Farbe aller Parallelen
  • Äquator: Ändert die Farbe des Äquators speziell
  • Meridiane: ändert die Farbe aller Meridiane
  • Nullmeridian: ändert speziell die Farbe des Nullmeridians
  • Koordinatenformat: ändert die Formatierung von Grad (mit Dezimalzahlen oder Minuten)
  • Positionierung: ändert die Position der Beschriftungen (über, unter oder auf der Gitterlinie)
  • Abstand: ändert den Abstand der Rasterlinien (Standard oder grob)

Für das MGRS-Raster können Sie die folgenden Stiloptionen ändern:

  • Primär: ändert die Farbe der gängigsten Linien
  • Sekundär: ändert die Farbe der zweithäufigsten Linien
  • Tertiär: ändert die Farbe der dritthäufigsten Linien
  • Abstand: ändert den Abstand der Rasterlinien (Standard oder grob)

Für das Georef-Raster können Sie die folgenden Stiloptionen ändern:

  • Primär: ändert die Farbe der gängigsten Linien
  • Sekundär: ändert die Farbe der zweithäufigsten Linien
  • Tertiär: ändert die Farbe der dritthäufigsten Linien
  • Abstand: ändert den Abstand der Rasterlinien (Standard oder grob)

Für das XY-Raster können Sie die folgenden Stiloptionen ändern:

  • Primär: ändert die Farbe der gängigsten Linien
  • Sekundär: ändert die Farbe der zweithäufigsten Linien
  • Tertiär: ändert die Farbe der dritthäufigsten Linien
  • Abstand: ändert den Abstand der Rasterlinien (Standard oder grob)

Lichtgeschwindigkeit: 3D-Symbole Samples.lightspeed.icons3d.MainPanel

In diesem Beispiel wird veranschaulicht, wie Punktdaten mithilfe von 3D-Symbolen visualisiert werden. Symbole können aus Dateien im Collada-, OpenFlight- oder WaveFront OBJ-Format geladen werden.

Anweisungen

Das Beispiel zeigt animierte 3D-Punkte. Beim Start werden sie mit einem Flugzeugsymbol angezeigt. Verwenden Sie die Schaltfläche "Öffnen" in der Symbolleiste, um eine .DAE-, .OBJ- oder .FLT-Datei zu laden. Dadurch wird das Flugzeugmodell ersetzt.

Lichtgeschwindigkeit: Bildprojektion Samples.lightspeed.imageprojection.MainPanel

Dieses Beispiel zeigt, wie Bilder auf Gelände projiziert werden.

Anweisungen

Das Beispiel zeigt ein Bild, das von einer animierten Ebene auf das Gelände projiziert wird. Beachten Sie, wie sich das projizierte Bild verformt, wenn es auf das Gelände projiziert wird.Die weißen Linien zeigen den Projektionskegel an. Dieser Frustum kann im Ebenenfenster ein- oder ausgeschaltet werden.

Lightspeed: Multispektrale Bildvisualisierung Samples.lightspeed.imaging.multispectral.MainPanel

Dieses Beispiel veranschaulicht, wie multispektrale Rasterbilder in einem ILspView visualisiert und analysiert werden können.

Das Beispiel beginnt mit vorinstallierten Satellitenbilddateien, die die Region Las Vegas abdecken. Die Bilder stammen aus dem LandSat7 USGS-Archiv. Es handelt sich um multispektrale GeoTIFF-Dateien, die aus 7 Bändern bestehen. Mit dem Beispiel können Sie auch andere GeoTIFF-Dateien von der Festplatte laden.

Das Bedienfeld unter den Ebenensteuerelementen zeigt die LuciadLightspeed-Bildgebungsoperatoren und -Filter und ermöglicht Ihnen die Konfiguration der Darstellung des Bildes in der ausgewählten Ebene. Mit den Schiebereglern können Sie Helligkeit, Kontrast und Deckkraft anpassen und einen Schärfungsfilter anwenden.

Sie können auch wählen, welche der 7 Bildbänder angezeigt werden und welchem ​​Farbkanal sie zugeordnet werden. Um die vorinstallierten Bilder beispielsweise in der LandSat7-Voreinstellung für natürliche Farben anzuzeigen, wählen Sie die Bänder 3, 2 und 1 in den Dropdown-Menüs Rot, Grün bzw. Blau aus. Andere interessante Bandkombinationen, die spezifische Aspekte der Bilddaten hervorheben, sind 4-3-2, um die Daten des nahen Infrarots (NIR) anzuzeigen, und 7-4-2, um Daten des kurzwelligen Infrarots (SWIR) anzuzeigen. Die Bandkombination 7-4-2 zeigt beispielsweise Vegetation in leuchtenden Grüntönen.

Das Kurvenbedienfeld zeigt die Datenverteilung der angezeigten Bildbänder in einem Histogramm an. Sie können den Dynamikbereich für die Bänder in jedem Farbkanal anpassen, indem Sie die über dem Histogramm angezeigte Linie in eine Kurve verwandeln. Sie können den Bildkontrast auch automatisch verbessern, indem Sie die Entzerrungsfunktion auf der Registerkarte Luminanz anwenden.

Die Symbolleiste ermöglicht die Auswahl eines Wisch- und Flicker-Controllers, um Ebenen visuell zu vergleichen. Der Wisch-Controller zeigt eine Wischlinie an, die horizontal oder vertikal gezogen werden kann, wobei nur die Hälfte des ersten Satzes von Ebenen auf der linken oder oberen Seite und die Hälfte der anderen angezeigt werden Satz von Schichten auf der anderen Seite. Der Flicker-Controller ermöglicht das schnelle Umschalten zwischen mehreren Layer-Sets durch Klicken mit der Maus. Weitere Informationen finden Sie in der Dokumentation zu TLspSwipeController und TLspFlickerController.

Das Beispiel verwendet TLspImageFilterStyle und die ALcdImageOperator-API, um die Bandauswahl und die Anpassungen des Dynamikbereichs durchzuführen.

Anweisungen

Laden Sie zusätzliche Dateien per Drag & Drop oder klicken Sie auf die Schaltfläche Öffnen in der Symbolleiste. Wenn Sie die resultierende Ebene im Ebenensteuerungsbedienfeld auswählen, werden unter den Ebenenbedienelementen drei zusätzliche Bedienfelder angezeigt.

Im Bedienfeld „Allgemein“ können Sie mehrere Bildfilter auf die ausgewählte Rasterebene anwenden. Verwenden Sie die Schieberegler, um Bildkontrast, Helligkeit, Deckkraft und Schärfe anzupassen. Klicken Sie auf Zurücksetzen, um zu den Standardfiltereinstellungen zurückzukehren.

Im Bereich Sichtbare Bänder können Sie auswählen, welche Bildbänder in welcher Farbe sichtbar gemacht werden sollen. Die Dropdown-Menüs neben den Farbkanälen Rot, Grün und Blau enthalten eine Liste der Bildbänder, die in der ausgewählten Rasterebene vorhanden sind. Um ein Bildband einem bestimmten Farbkanal zuzuordnen, wählen Sie die Bandnummer aus dem Dropdown-Menü neben der bevorzugten Farbe aus.
Um nur ein Band in Graustufen anzuzeigen, klicken Sie auf das Graustufensymbol und wählen Sie ein Band aus dem Dropdown-Menü aus.

Das Kurvenbedienfeld besteht aus vier Registerkarten. Die Registerkarten Rot, Grün und Blau zeigen ein Histogramm und eine Tonwertkurve für die farblich zugeordneten Bänder des geladenen Bildes an. Um das Histogramm und die Tonwertkurve für ein bestimmtes Band anzuzeigen, wählen Sie die Registerkarte mit der Farbe aus, der Sie das Band zugeordnet haben. Um die Tonwertkurve in einem bestimmten Farbkanal zu ändern, wählen Sie die Linie im Histogramm aus und ziehen Sie ihre Kontrollpunkte, bis sie eine Kurve bildet und Ihr Bild die erforderliche Farbbalance anzeigt. Sie können Punkte auf der ausgewählten Kurve hinzufügen oder löschen, indem Sie bei gedrückter Strg-Taste klicken. Die Registerkarte Luminanz zeigt ein Histogramm und eine Kurve für die Helligkeit des Bildes an. Sie können die Tonwertkurve manipulieren, um den Kontrast im Bild zu verbessern. Um den Bildkontrast automatisch zu verbessern, klicken Sie auf Ausgleichen. Dadurch wird der Kontrast automatisch gestreckt und die Kurve verändert sich.
Um Kurven auf ihre ursprünglichen Einstellungen zurückzusetzen, klicken Sie auf Zurücksetzen.

Um Layer visuell zu vergleichen, wählen Sie den Wisch-Controller aus der Symbolleiste aus. Vergleichen Sie beispielsweise das Las Vegas-Bild von 2000 und 2003. Durch Ziehen der Wischlinie sollten Sie die Unterschiede zwischen den beiden Bilddateien leicht erkennen können. Aktivieren Sie den Flicker-Controller in der Symbolleiste und wählen Sie die beiden Las Vegas-Bilddateien aus. Klicken Sie schnell mit der Maus, um zwischen den beiden Ebenen zu wechseln.

Lightspeed: ILcdGXYLayer-Integration Samples.lightspeed.integration.gxy.MainPanel

Dieses Beispiel zeigt, wie Sie ILcdGXYLayer-Instanzen in einer Lightspeed-Ansicht visualisieren und mit ihnen interagieren. Dies wird mit TLspGXYLayerAdapter erreicht, der eine GXY-Ebene in eine Off-Screen-ILcdGXYView rendert und dann das resultierende Bild in die Lightspeed-Ansicht zeichnet. Der TLspGXYLayerTreeNodeAdapter kann verwendet werden, um ganze Bäume von GXY-Layern anzuzeigen.

Anweisungen

Das Beispiel zeigt eine Karte mit angepasstem Raster- und Vektorlayer. Versuchen Sie, mit dem Mausrad zu schwenken und zu zoomen. Sie werden feststellen, dass der GXY-Inhalt asynchron gerendert wird.

Lichtgeschwindigkeit (JavaFX): Ballon Samples.lightspeed.javafx.balloon.Main

In diesem Beispiel wird veranschaulicht, wie Sprechblasen in einer TLspFXView mit TLspFXBalloonManager angezeigt werden.
Dieses Beispiel erfordert JavaFX. Je nach verwendetem JDK müssen Sie es möglicherweise separat installieren. Weitere Informationen finden Sie in den technischen Hinweisen in der Dokumentation.

Das Beispiel zeigt zwei Punkte auf der Karte, von denen jeder an eine Sprechblase gebunden ist. Eine Sprechblase wird sichtbar gemacht, wenn ein einzelnes Objekt ausgewählt wird. Die Sprechblase enthält ein bearbeitbares Textfeld, das die Position des Symbols in geodätischen Koordinaten enthält.

Eine ausführlichere Beschreibung der Ballon-Manager-API finden Sie im Entwicklerhandbuch.

Anweisungen

Wählen Sie eines der Symbole aus. Es erscheint ein Ballon. Wenn Sie das Koordinatenfeld in der Sprechblase bearbeiten und die Eingabetaste drücken, ändert sich die Position des Symbols. Der Ballonpfeil wird bei dieser Operation ebenfalls verschoben. Ballons werden nur angezeigt, wenn ein Domänenobjekt ausgewählt ist.

Lightspeed (JavaFX): Dekodieren von Daten in mehreren Formaten Samples.lightspeed.javafx.decoder.Main

Dieses Beispiel demonstriert die Fähigkeit zum Laden und Visualisieren von Daten aus Quellen in verschiedenen Formaten auf einer Lightspeed JavaFX-Map mit ILcdModelDecoder und ILspLayerFactory .
Dieses Beispiel erfordert JavaFX. Je nach verwendetem JDK müssen Sie es möglicherweise separat installieren. Weitere Informationen finden Sie in den technischen Hinweisen in der Dokumentation.

Eine Datei- und eine URL-Aktion sind so konfiguriert, dass Daten in fast jedem verfügbaren Format geladen werden.

Das Beispiel verwendet einen zusammengesetzten ILcdModelDecoder, um die Daten in ein ILcdModel zu decodieren. Danach erstellt eine zusammengesetzte ILspLayerFactory einen Layer, der steuert, wie das Modell der geladenen Daten angezeigt wird. Die Modelldecodierer und Schichtfabriken werden unter Verwendung eines Dienstnachschlagemechanismus abgerufen und enthalten sowohl eingebaute als auch Beispielimplementierungen.

Anweisungen

Fügen Sie neue Daten hinzu, indem Sie auf die entsprechende Schaltfläche in der Symbolleiste klicken oder Dateien oder URLs per Drag & Drop auf die Karte ziehen. Nicht alle gestylten LuciadLightspeed-Formate verfügen über eine dedizierte Lightspeed-Layer-Factory (ein Beispiel hierfür ist DGN). Daher wird die Visualisierung einiger Daten möglicherweise nicht richtig formatiert.

Lightspeed (JavaFX): Bearbeiten von geometrischen Formen Samples.lightspeed.javafx.editing.Main

Dieses Beispiel veranschaulicht die Bearbeitungs- und Erstellungsfunktionen der Editoren, die in der Lightspeed-API verfügbar sind.
Dieses Beispiel erfordert JavaFX. Je nach verwendetem JDK müssen Sie es möglicherweise separat installieren. Weitere Informationen finden Sie in den technischen Hinweisen in der Dokumentation.

Das Beispiel enthält eine Formebene zum Bearbeiten und Erstellen. Die Formerstellung erfolgt mit TLspCreateController. Die Formbearbeitung erfolgt mit TLspEditController.

Ausführliche Informationen zum Erstellen einer Anwendung mit Lightspeed-Editoren finden Sie im Entwicklerhandbuch oder im dokumentierten Quellcode dieses Beispiels.

Anweisungen

Um eine der Formen zu bearbeiten, klicken Sie auf die Form und interagieren Sie mit einem der Bearbeitungsgriffe. Bitte lesen Sie die Javadoc der verschiedenen Editorklassen im Paket com.luciad.view.lightspeed.editor, um zu sehen, welche Funktionalität von jedem der Handles bereitgestellt wird.

Um eine neue Form zu erstellen, aktivieren Sie einen der Create-Controller in der Symbolleiste. Die meisten Controller haben auch eine extrudierte Erstellungsvariante. Diese Variante erstellt eine extrudierte Form mit der Grundform, die vom normalen Editor erstellt wird. Der Ellipsen-Erzeugungs-Controller erstellt beispielsweise eine extrudierte Ellipse, wenn die Extrusion aktiviert ist. Die Extrusion kann über die Schaltfläche Extrusion in der Erstellungssymbolleiste aktiviert werden.

Bei den meisten Formen wird die Erstellung einfach durch eine Abfolge von Mausklicks oder Antippen ausgeführt. Einige zusätzliche Anweisungen für Sonderfälle:

  • Polylinien und Polygone: Beenden Sie die Erstellung mit Rechts- oder Doppelklick.
  • Komplexe Polygone: Wechseln Sie mit der rechten Maustaste zum nächsten Polygon. Schließen Sie den Erstellungsprozess mit einem Doppelklick ab.
  • Komplexe Ringe und Kurven: Wechseln Sie mit der rechten Maustaste zur nächsten Form. Ändern Sie den Formtyp mithilfe einer der Schaltflächen, die in der Ansicht angezeigt werden.
  • Extrudierte Polylinien und Polygone: Beenden Sie die Erstellung der Grundform mit einem Rechtsklick.

Beim Erstellen oder Bearbeiten von Formen können Sie das Einrasten deaktivieren, indem Sie die Strg-Taste drücken (cmd auf macOS). Fügen Sie einen Punkt aus einer Polylinie oder einem Polygon ein oder entfernen Sie ihn, indem Sie die Strg-Taste (cmd auf macOS) gedrückt halten, während Sie gedrückt halten. Wählen Sie mehrere Formen aus, indem Sie die Umschalttaste gedrückt halten. Verwenden Sie die Löschtaste, um ausgewählte Formen zu entfernen.

Lightspeed: JavaFX-Touch-Bearbeitung Samples.lightspeed.javafx.touch.Main

Dieses Beispiel zeigt, wie Sie einer JavaFX-Anwendung Touch-Unterstützung hinzufügen.
Dieses Beispiel erfordert JavaFX. Je nach verwendetem JDK müssen Sie es möglicherweise separat installieren. Weitere Informationen finden Sie in den technischen Hinweisen in der Dokumentation.

Das Sample verfügt über große Tasten, die eine einfache Handhabung mit den Fingern anstelle einer Maus als Eingabegerät ermöglichen.

Anweisungen

Verwenden Sie einen Finger zum Schwenken und zum Auswählen oder Bearbeiten von Objekten. Verwenden Sie zwei Finger zum Zoomen oder Drehen.

Um eine der Formen zu bearbeiten, müssen Sie nur die Form berühren und mit einem der Bearbeitungsgriffe interagieren. Bitte lesen Sie die Javadoc der verschiedenen Editorklassen in der API, um zu sehen, welche Funktionalität von jedem der Handles bereitgestellt wird.

Um eine neue Form zu erstellen, aktivieren Sie einen der Create-Controller in der Symbolleiste. Beachten Sie, dass die meisten Controller auch eine extrudierte Erstellungsvariante haben. Diese Variante erstellt eine extrudierte Form mit der Grundform, die vom normalen Editor erstellt wird. Der Ellipsen-Erzeugungs-Controller erstellt beispielsweise eine extrudierte Ellipse, wenn die Extrusion aktiviert ist. Die Extrusion kann über die Schaltfläche Extrusion in der Erstellungssymbolleiste (dritte Schaltfläche) aktiviert werden.

Einige Formen wie Polylinien, Polygone und komplexe Polygone haben verschiedene (dynamische) Erstellungsschritte, die durch Drücken der Schaltfläche „Bestätigen“ beendet werden können. Um beispielsweise ein komplexes Polygon mit zwei dreieckigen Formen zu erstellen, sollte die Reihenfolge der Interaktionen lauten: tap-tap-tap, Commit (um das erste Polygon zu beenden), tap-tap-tap, Commit (um das zweite Polygon zu beenden), Commit ( um die komplexe Polygonerstellung zu beenden).

Lightspeed: Interaktive Etiketten Samples.lightspeed.labels.interactive.MainPanel

Dieses Beispiel zeigt, wie Beschriftungen bearbeitbar gemacht werden können. Die Labels sind in dem Sinne editierbar, dass sie an einen neuen Ort verschoben werden können, sowie in dem Sinne, dass sie dem Benutzer eine interaktive Komponente bieten, mit der Informationen zu den Domänenobjekten bearbeitet werden können.

Anweisungen

Bewegen Sie die Maus über eine Beschriftung einer Stadt. Anstelle des regulären Etiketts wird ein interaktives, bearbeitbares Etikett angezeigt. Im Textfeld können Sie einen Kommentar zu der beschrifteten Stadt eingeben. Um die Änderungen zu übernehmen, drücken Sie die Eingabetaste oder drücken Sie das grüne Häkchen oben auf dem interaktiven Etikett. Um die ausstehenden Änderungen abzubrechen, drücken Sie das rote „Abbrechen“-Symbol oben auf dem Etikett oder drücken Sie die Escape-Taste.

Das interaktive Etikett kann durch Klicken und Ziehen auf der Titelleiste des interaktiven Etiketts verschoben werden.

Lightspeed: Etikettenplatzierung Samples.lightspeed.labels.placement.MainPanel

Dieses Beispiel zeigt verschiedene Kennzeichnungsalgorithmen:

  • TLspLabelingAlgorithm, zur Kennzeichnung von Städten
  • TLspInPathLabelingAlgorithm, zum Beschriften von Zuständen
  • TLspCurvedPathLabelingAlgorithm, zur Kennzeichnung von Flüssen

Beachten Sie, dass die Quellen des Flusses als erster Punkt der ersten Polylinie bestimmt sind, was möglicherweise nicht der Realität entspricht.

Anweisungen

Um die Auswirkungen der Beschriftungsalgorithmen zu sehen, wählen Sie eine Ebene aus, indem Sie sie in der Ebenensteuerung anklicken und:

  • die Sichtbarkeit der Ebene ändern
  • setze die beschriftete/nicht beschriftete Ebene
  • Verschieben Sie die Ebene nach oben/unten: Die Beschriftung wird von der obersten Ebene aus gestartet

Um den Beschriftungsstil zu ändern, ziehen Sie den Deckkraft-Schieberegler oder ändern Sie die Schriftart mithilfe des Kombinationsfelds Schriftart.

Lightspeed: Leichte Ansichten Samples.lightspeed.lightweight.MainPanel

Dieses Beispiel zeigt, wie Swing-Komponenten einer ILspView überlagert werden können. Insbesondere zeigt das Beispiel einen JInternalFrame, der neben Navigationssteuerelementen für die Hauptansicht eine sekundäre Kartenansicht enthält.

Um Probleme beim Mischen von leichten und schweren Komponenten zu vermeiden, verwendet das Beispiel TLspSwingView anstelle von TLspAWTView. Der Hauptansicht wird ein JLayeredPane hinzugefügt. In diesem mehrschichtigen Bereich ist eine Ebene ein JDesktopPane, der den internen Rahmen mit der zweiten Ansicht enthält. Eine weitere Ebene enthält die Standardnavigationssteuerungen und die Skalierungsanzeige für die Hauptansicht (wie auch in anderen Beispielen zu sehen).

Anweisungen

Verschieben, skalieren, minimieren und maximieren Sie den internen Rahmen. Beobachten Sie, wie es zwischen der Hauptansicht und den überlagerten Navigationssteuerelementen angeordnet ist.

Lichtgeschwindigkeit: Eingeschränkte Navigation Samples.lightspeed.limitnavigation.MainPanel

Dieses Beispiel zeigt, wie die Ansichtswelt-Transformation angepasst werden kann, um die Navigationsfreiheit einzuschränken. Dieses Verhalten kann über ein Kontrollkästchen in der Symbolleiste aktiviert oder deaktiviert werden.

Anweisungen

Beachten Sie das Kontrollkästchen "Navigation einschränken" in der oberen rechten Ecke des Bildschirms, standardmäßig ist es aktiviert. Solange dieses Kontrollkästchen aktiviert ist, sind Ihre Navigationsoptionen eingeschränkt:

  • Drehen Sie die Ansicht und beachten Sie, dass dies keine Auswirkungen hat. Die Ansicht wird automatisch gedreht, um den Norden am oberen Bildschirmrand zu halten.
  • Vergrößern und verkleinern Sie, beachten Sie, dass Sie nur bis zu einem bestimmten Grad herauszoomen können und wie Sie nur bis zu einem bestimmten Grad und nur bis zu einem bestimmten Bereich heranzoomen können, der durch das rote Rechteck markiert ist.
  • Schwenken und navigieren Sie in der Ansicht. Beachten Sie, dass Sie nur bis zu den Grenzen des durch das rote Rechteck markierten Bereichs schwenken können.

Deaktivieren Sie das Kontrollkästchen "Navigation einschränken" und versuchen Sie erneut, die Ansicht zu schwenken, zu zoomen und zu drehen, und bemerken Sie den Unterschied zu der eingeschränkten Version dieser Verhaltensweisen.

Lightspeed: Kartenübersicht Samples.lightspeed.mapoverview.MainPanel

Dieses Beispiel zeigt, wie eine Kartenübersicht für eine ILspView implementiert werden kann. Die Kartenübersicht wird der Hauptansicht überlagert. Es zeigt ein Polygon, das den in der Hauptansicht sichtbaren Bereich der Welt begrenzt.

Die Kartenübersicht ist selbst eine TLspSwingView, die dem Overlay-Panel der Hauptansicht hinzugefügt wird. Das Polygon, das den sichtbaren Kartenbereich begrenzt, wird mit ALspViewXYZWorldTransformation.getGeodeticVisibleArea() erhalten. Die Kartenübersicht passt sich kontinuierlich diesem Polygon an.

Anweisungen

Navigieren Sie in der Hauptansicht. Wechseln Sie zwischen 3D und den verschiedenen 2D-Projektionen. Beobachten Sie, wie sich die Kartenübersicht ständig aktualisiert und wie das Polygon in der Kartenübersicht dem in der Hauptansicht sichtbaren Weltbereich entspricht.

Lightspeed: Form als JSON-Mesh codieren Samples.lightspeed.meshencoder.MainPanel

Dieses Beispiel zeigt, wie 3D-Formen in LuciadLightspeed diskretisiert und als 3D-Netze in einem benutzerdefinierten Dateiformat gespeichert werden können.

Dieses Beispiel soll Ihnen zeigen, wie Sie 3D-Formen aus LuciadLightspeed als 3D-Netze zur Wiederverwendung in einem LuciadRIA-Client exportieren. Die erzeugte JSON-Datei kann problemlos von der LuciadRIA MeshFactory geparst werden.

Anweisungen

Um eine 3D-Form als JSON-Mesh-Datei zu speichern, wählen Sie eine Form in der Ansicht aus und klicken Sie auf die Schaltfläche Speichern in der Symbolleiste.

Lightspeed: Navigationssteuerung sample.lightspeed.navigationcontrols.MainPanel

In diesem Beispiel wird veranschaulicht, wie Sie mit TLspNavigationControlsFactory Swing-basierte Steuerelemente für die Ansichtsnavigation erstellen und diese Steuerelemente einer Ansicht überlagern.

Die Standard-Navigationssteuerelemente sind wie gewohnt in der oberen rechten Ecke sichtbar. Auf der linken Seite der Ansicht wird ein sekundärer Satz von Steuerelementen hinzugefügt. Die einzelnen Komponenten sind gleich, aber sie werden getrennt und in verschiedenen Ecken hinzugefügt und erscheinen immer aktiv. Die Kompassnavigationssteuerung auf der linken Seite zeigt in Richtung des magnetischen Nordens statt des echten Nordens.

Anweisungen

Verwenden Sie die sekundären Navigationssteuerelemente, um die Ansicht zu schwenken, zu zoomen und zu drehen.

Lightspeed: Maldaten, die nicht geografisch referenziert sind Samples.lightspeed.nongeoreferenced.MainPanel

Dieses Beispiel enthält drei Ebenen:

  • Rasterdaten: eine GIF-Datei von Washington DC.
  • Vektordaten: eine Reihe von Vektorformen, die über dem Raster gezeichnet werden.
  • XY-Gitter: ein xy-Gitter, einschließlich Beschriftungen.
Anweisungen

Navigieren Sie auf der Karte. Beachten Sie, wie die Mausposition unten die Pixelkoordinaten im Bild anzeigt.

Wählen Sie eine der Formen aus und bearbeiten Sie sie oder erstellen Sie eine neue Form.

Lichtgeschwindigkeit: Malen in Ansichtskoordinaten Samples.lightspeed.paintinview.MainPanel

Dieses Beispiel enthält zwei Ebenen:

  • Bildschirmdaten: ein Punkt, ein Polygon und eine Ellipse, die in Bildschirmkoordinaten definiert sind. Dies wird erreicht, indem eine Modellreferenz verwendet wird, die keine ILcdGeoReference ist.
  • Georeferenzierte Daten: drei lon-lat Ellipsen. Für jede Ellipse wird ein Bleistiftsymbol in Bildschirmkoordinaten sowie eine Miniversion der Ellipse gezeichnet. Dies wird erreicht, indem ein ALspStyleTargetProvider verwendet wird, der null als seine Ziel-Georeferenz zurückgibt.
Anweisungen

Navigieren Sie auf der Karte. Beachten Sie, wie die Formen am oberen Rand des Bildschirms jederzeit an derselben Position bleiben.

Wählen Sie eine der grünen Formen aus und bearbeiten Sie sie.

Wählen Sie eine der blauen Ellipsen aus. Eines der Symbole und Mini-Ellipsen wird ebenfalls automatisch ausgewählt.

Wählen Sie eines der Bleistiftsymbole oder eine Mini-Ellipse aus. Die entsprechende Ellipse wird ebenfalls ausgewählt.

Bearbeiten Sie eine der blauen Ellipsen. Die entsprechende Mini-Ellipse wird ebenfalls bearbeitet.

Lichtgeschwindigkeit: Plot-Malerei Samples.lightspeed.plots.MainPanel

Die Stichprobe lädt 500.000 Flugzeugpositionen rund um New York.

Die Plots werden mit einem Plotlayer ( TLspPlotLayerBuilder ) gemalt.

Bei einem bestimmten Maßstab werden Richtungspfeile angezeigt und Beschriftungen, die mit dem Algorithmus zur kontinuierlichen Entstörung entrümpelt werden.

Die Filterung kann über die Eigenschaften des Datenmodells erfolgen.

  • Fernkampf Eigenschaften (wie Zeit, Geschwindigkeit) können mit den Schiebereglern gefiltert werden
  • Für Immobilien mit begrenzte Werte (z. B. Klasse) können Sie einen Wert aus den Dropdown-Feldern auswählen

Das Styling basiert auch auf den Eigenschaften des Datenmodells.

  • Für distanziert Eigenschaften (wie Zeit, Geschwindigkeit) wird die Symbolfarbe anhand der Filterschieberegler zwischen Rot und Grün interpoliert
  • Für Immobilien mit begrenzte Werte (z.B. Klasse) wird jedem möglichen Wert automatisch eine Farbe oder ein Icon zugewiesen
Anweisungen

Ändern Sie die Filterung über die Schieberegler und Dropdown-Felder. Der Filter ist sofort wirksam.

Ändern Sie die Farbe und die Symbole über die Dropdown-Felder. Die Änderung ist sofort wirksam.

Aktivieren und deaktivieren Sie Dichtediagramme über das Kontrollkästchen. Die Änderung ist sofort wirksam.

Lichtgeschwindigkeit: Drucken proben.lightspeed.printing.MainPanel

In diesem Beispiel wird veranschaulicht, wie eine Komponente mit einer Ansicht mit TLspViewComponentPrintable gedruckt wird.

Anweisungen

Das Beispiel erstellt ein Seitenlayout, das die Ansicht und einige Dekorationen enthält. Sie können die Seite in der Vorschau anzeigen oder direkt über die Schaltflächen in der Symbolleiste ausdrucken.

Lichtgeschwindigkeit: Messcontroller Samples.lightspeed.ruler.MainPanel

Dieses Beispiel zeigt, wie Sie den Messcontroller konfigurieren und verschiedene Eigenschaften davon dynamisch zur Laufzeit ändern.

Anweisungen

Es ist möglich, die folgenden Linealeinstellungen zu ändern:

  • Messmodus: Geodätisch, Rhumbline oder Kartesisch. Letztere misst kartesische Distanzen zwischen Punkten in Weltkoordinaten, was z.B. um die Höhe einer 3D-Form zu messen.
  • Farbstil: die Farbe der Messpolylinien.
  • Schriftstil: die Schriftart der Etiketten.
  • Entfernungseinheit: Meter, Kilometer, Fuß oder US-Meilen.
  • Azimut anzeigen: der Azimut der Messsegmente.
  • Kreise mit gleichem Abstand anzeigen: visuelle Hilfe beim Bearbeiten von Messungen. Wird nur im Geodätischen Messmodus unterstützt.
  • Messungen beibehalten: Löschen Sie die alte Messung nicht, wenn Sie mit der Erstellung einer neuen beginnen.

Lichtgeschwindigkeit: Formen anzeigen Samples.lightspeed.shapes.MainPanel

In diesem Beispiel wird gezeigt, wie ein Modell programmgesteuert erstellt und angezeigt wird. Es zeigt, wie Sie ein ILcdModel erstellen, es mit ILcdShape-Objekten füllen und diese Daten in einem ILspLayer in einer Lightspeed-Ansicht anzeigen.

Eine ausführlichere Beschreibung jedes dieser Schritte finden Sie im Entwicklerhandbuch.

Anweisungen

Das Beispiel zeigt eine Polylinie, ein Polygon und einen durch ein Symbol visualisierten Punkt. Versuchen Sie, mit den Formen zu interagieren.

Lichtgeschwindigkeit: Stereoskopische Ansicht Samples.lightspeed.stereo.MainPanel

Das Beispiel zeigt, wie Sie eine stereoskopische 3D-Lightspeed-Ansicht mit einigen Hintergrunddaten und einem 3D-Collada-Modell erstellen und einrichten. Die stereoskopische Lightspeed-Ansicht kann mit aktiven Shutterbrillen (z. B. Nvidia 3D-Sichtbrillen) verwendet werden.

Hinweis: Für eine stereoskopische 3D-Ansicht ist eine GPU erforderlich, die Quad-Buffering unterstützt. Bei den meisten GPUs muss dies in den Treibereinstellungen aktiviert werden.

Anweisungen

Wenn das Beispiel startet, können die Standardsteuerelemente zum Navigieren verwendet werden.

Hinweis: Sollten die Augen vertauscht erscheinen, können Sie den Treiber normalerweise über das Konfigurationsfenster des Treibers so konfigurieren, dass er die Augen vertauscht.

Lightspeed: Bearbeiten des Stils von Objekten Samples.lightspeed.style.editable.MainPanel

Dieses Beispiel soll den Prozess der Bearbeitung des Stils eines Objekts zur Laufzeit veranschaulichen. Es erstellt ein Setup, in dem ein TLspEditableStyler verwendet wird, um die Stile aller Objekte zu bearbeiten. Um die Werte des Providers zur Laufzeit zu optimieren, wurde ein Widget implementiert, das eine GUI zum Bearbeiten der wichtigsten Style-Eigenschaften bereitstellt (siehe StyleEditor und StyleEditorModel ).

Beachten Sie, dass sich dieses Beispiel der Einfachheit halber auf die Bearbeitung von Linien- und Füllstilen konzentriert, aber die in diesem Beispiel verwendeten Konzepte können auch auf die Bearbeitung anderer Stile angewendet werden.

Anweisungen
  1. Wählen Sie ein Objekt in der Ansicht aus.
  2. Drücken Sie die Schaltfläche Stil bearbeiten in der Symbolleiste.
  3. Ändern Sie im angezeigten Stildialog die gewünschten Einstellungen.
  4. Drücken Sie "OK", um die neuen Einstellungen zu übernehmen und den Dialog zu schließen (wenn Sie nur die Einstellungen übernehmen und den Dialog geöffnet lassen möchten, drücken Sie "Übernehmen").
  • Linienbreite: Verwenden Sie das Spinner-Widget, um die Linienstärke zu ändern.
  • Linienfarbe: Klicken Sie auf das Farbetikett, um eine andere Farbe auszuwählen.
  • Linienmuster: Wählen Sie ein anderes Linienmuster aus der Dropdown-Liste.
  • Füllfarbe: Klicken Sie auf das Farbetikett, um eine andere Farbe auszuwählen.
  • Füllmuster: Wählen Sie ein anderes Füllmuster aus der Dropdown-Liste.

Lightspeed: Ausdrucksbasiertes Styling von Objekten sample.lightspeed.style.expressions.MainPanel

Dieses Beispiel zeigt das ausdrucksbasierte Styling in einer Lightspeed-Ansicht mit TLspParameterizedLineStyle , TLspParameterizedFillStyle und TLspParameterizedIconStylecon

Anweisungen

Verwenden Sie das Ebenenauswahlfenster auf der rechten Seite, um verschiedene Ebenen auszuwählen und verschiedene Arten von parametrisierten Stilen, ILcdExpression und Formen zu demonstrieren.

Die erste Ebene zeigt Flightradar-Tracks im Stil eines TLspParameterizedLineStyle . Nur das Segment eines Tracks, das innerhalb eines bestimmten Zeitintervalls liegt, ist sichtbar.

Die zweite Ebene zeigt europäische Länder im Stil eines TLspParameterizedFillStyle . Die Füllfarbe der Länder wird von der Bevölkerungseigenschaft jedes Landes abgeleitet.

Der letzte Layer visualisiert Städte mit einem TLspParameterizedIconStyle . Ein Symbol für eine Stadt wird basierend auf der Bevölkerungseigenschaft und der Entfernung zum Mauszeiger skaliert.

Lichtgeschwindigkeit: Füllstil Samples.lightspeed.style.fillstyle.MainPanel

Dieses Beispiel demonstriert die Fähigkeiten von TLspFillStyle . Es zeigt verschiedene Ebenen mit Formen mit unterschiedlichen Füllstilen:

  • Fest: der Bereich wird mit einer Farbe gefüllt, möglicherweise transparent.
  • Gepunktet: Der Bereich ist mit einem sich wiederholenden Muster gefüllt. Ein Stipple-Muster wird erstellt, indem ein TLspFillStyle.StipplePattern mit praktischen Methoden zum Zeichnen von Linien oder gefüllten/umrandeten Rechtecken, Ovalen oder Polygonen verwendet wird.
  • Strukturiert: Der Bereich wird basierend auf einer Textur gefüllt. Dies kann ein BufferedImage sein und kann skaliert, gedreht oder übersetzt werden. Außerdem kann die Textur so eingestellt werden, dass sie relativ zu den Grenzen des Objekts oder relativ zu den Grenzen der Welt angewendet wird.
Anweisungen

Das Beispiel enthält verschiedene Ebenen, die Formen mit unterschiedlichen Füllstilen enthalten.

Bewegen Sie sich in 2D und 3D, um den Effekt zu sehen.

Bearbeiten Sie die Formen, um zu sehen, wie sich die verschiedenen Füllstile anpassen.

Lichtgeschwindigkeit: Symbolstil Samples.lightspeed.style.icon.MainPanel

Das Symbolstilbeispiel demonstriert die Symbolstilfunktion von TLspShapeLayerBuilder, d. h.: Drehung und Transparenz von Symbolen, Zeichnen von Symbolen mit einer vertikalen Linie und Zeichnen von Symbolen entweder mit einer Größe in Weltkoordinaten oder in Ansichtskoordinaten. All dies wird mit TLspIconStyle erreicht.

Das Beispiel enthält drei Ebenen mit Symbolen, die sich alle in San Francisco befinden:

  • Symbole in Ansichtsgröße: Die Symbolgröße bleibt in Ansichtskoordinaten (d. h. Pixel) konstant, unabhängig vom Maßstab der Ansicht.
  • Symbole in Weltgröße: Die Größe der Symbole bleibt in Weltkoordinaten (normalerweise Meter) konstant.
  • Rotatable Icons: Diese Icons verwenden einen benutzerdefinierten Styler (siehe RotatableIconStyler). Sie können mit dem Schieberegler in der oberen linken Ecke der Ansicht gedreht werden. Sie ändern auch die Farbe je nach Maßstab der Ansicht. Schließlich verwenden die Symbole einen dritten Skalierungsmodus, der eine Mischung aus Ansicht und Weltgröße ist: Die Größe der Symbole wird in Weltkoordinaten definiert, aber ihre Größe auf dem Bildschirm wird niemals ihre native Größe in Pixeln überschreiten.
Anweisungen

Vergrößern Sie San Francisco und sehen Sie, wie jede Symbolebene die Größe der Symbole unterschiedlich ändert. Beachten Sie auch, wie der drehbare Symbol-Layer die Farbe seiner Symbole basierend auf dem Maßstab der Ansicht ändert. Verwenden Sie den Drehschieberegler, um die Ausrichtung der drehbaren Symbole zu ändern.

Lichtgeschwindigkeit: Raster-Stil Samples.lightspeed.style.raster.MainPanel

Das Beispiel Rasterstil veranschaulicht, wie der Stil eines Rasters im Handumdrehen geändert werden kann:

  • Ändern Sie den Umriss und die Füllung der Grenzen des Rasters.
  • Ändern Sie Helligkeit, Kontrast und Deckkraft.
  • Festlegen und Ändern eines benutzerdefinierten Filters (nur interaktive Raster-Layer).
  • Ändern Sie das Farbmodell für Höhen-Layer.

Das Beispiel beginnt mit einem Rasterstil mit 100 % Helligkeit, 100 % Kontrast, 100 % Deckkraft und ohne benutzerdefinierten Filter. Ausführlichere Informationen zur Verwendung von Raster-Stilen und -Anbietern finden Sie im Entwicklerhandbuch oder im dokumentierten Quellcode dieses Beispiels.

Das Beispiel zeigt 3 Arten von Ebenen:

  • Interaktive Rasterebenen: Der Stil dieser Ebenen kann interaktiv geändert werden. Sie sind mit einem [I]-Präfix gekennzeichnet.
  • Hintergrund-Rasterebenen: Der Stil dieser Ebenen kann geändert werden, jedoch nicht so reibungslos wie bei interaktiven Ebenen. Sie benötigen jedoch im Allgemeinen weniger Verarbeitungs- und Speicherkapazität zum Malen. Diese Layer sind mit einem [B]-Präfix gekennzeichnet.
  • Terrain-Layer: Dieser Layer ist ein Stellvertreter für das Terrain der Ansicht. Das Terrain der Ansicht enthält alle Hintergrundebenen am unteren Rand der Ansicht, daher wirkt sich eine Änderung des Stils auf alle diese Ebenen aus. Sein Stil kann interaktiv geändert werden.
Anweisungen

Wählen Sie in der Ebenensteuerung eine Rasterebene aus und ändern Sie ihren Stil über das Bedienfeld auf der linken Seite.

Lichtgeschwindigkeit: Strichlinienstile Samples.lightspeed.style.strokedline.MainPanel

Dieses Beispiel zeigt, wie Liniendaten mit komplexen Strichen visualisiert werden können. Dies wird durch die Verwendung von TLspComplexStrokedLineStyle erreicht.

Anweisungen

Das Beispiel zeigt eine Reihe von Formen mit unterschiedlichen Strichen. Verwenden Sie das Ebenenauswahlfenster auf der rechten Seite, um verschiedene Ebenen auszuwählen und verschiedene Arten von Strichen zu demonstrieren. Wählen Sie die Formen aus und bearbeiten Sie sie, um zu sehen, wie sich das Strichmuster selbst anpasst. Wechseln Sie zu einer 3D-Ansicht, um zu sehen, wie Strichlinien erscheinen, wenn sie über das Gelände drapiert werden.

Lichtgeschwindigkeit: Touch Basic Samples.lightspeed.touch.basic.MainPanel

Dieses Applet demonstriert die Verwendung des berührungsbasierten ILspControllers . Es verfügt über eine einzige Controller-Kette, um auf der Karte zu navigieren und Objekte auszuwählen und zu bearbeiten.

Das Sample verfügt über große Tasten, die eine einfache Handhabung mit den Fingern anstelle einer Maus als Eingabegerät ermöglichen.

Anweisungen

Verwenden Sie einen Finger zum Schwenken und zum Auswählen oder Bearbeiten von Objekten. Verwenden Sie zum Zoomen zwei Finger.

Lightspeed: Benutzerdefinierter Touch-Controller Samples.lightspeed.touch.customcontroller.MainPanel

Dieses Beispiel zeigt, wie ALspController erweitert werden kann, um einen benutzerdefinierten Touch-Controller zu implementieren.

Der erste benutzerdefinierte Controller zeigt eine QuickInfo für berührte Objekte an.

Der zweite benutzerdefinierte Controller passt die Ansicht an die Grenzen eines Objekts an, wenn eine Berührungs- und Halteaktion für dieses Objekt ausgeführt wird.

Anweisungen

Aktivieren Sie den ersten benutzerdefinierten Controller ("Informationsfelder"). Wenn Sie ein Objekt auf der Karte berühren (z. B. einen Landkreis), wird ein Tooltip mit einigen Attributen dieses Objekts angezeigt.

Aktivieren Sie den zweiten benutzerdefinierten Controller ("An Objekt anpassen"). Berühren und halten Sie ein Objekt, bis ein roter Kreis Sie visuell darauf hinweist, dass die Touch-and-Hold-Zeit erreicht wurde. Wenn Sie jetzt Ihren Finger loslassen, passt sich die Ansicht an die Grenzen dieses Objekts an.

Lichtgeschwindigkeit: Touch-Bearbeitung Samples.lightspeed.touch.editing.MainPanel

Dieses Applet demonstriert die Verwendung des berührungsbasierten ILspControllers für Bearbeitungszwecke.

Anweisungen

Navigieren, Auswählen und Bearbeiten von Objekten. Sie können eine Ebene auswählbar machen, indem Sie zuerst auf ihren Namen in der Ebenenliste tippen und dann auf die Schaltfläche "Ebene auswählbar umschalten".

Um eine der Formen zu bearbeiten, müssen Sie nur die Form berühren und mit einem der Bearbeitungsgriffe interagieren. Bitte lesen Sie die Javadoc der verschiedenen Editorklassen in der API, um zu sehen, welche Funktionalität von jedem der Handles bereitgestellt wird.

Um eine neue Form zu erstellen, aktivieren Sie einen der Create-Controller in der Symbolleiste. Beachten Sie, dass die meisten Controller auch eine extrudierte Erstellungsvariante haben. Diese Variante erstellt eine extrudierte Form mit der Grundform, die vom normalen Editor erstellt wird. Der Ellipsen-Erzeugungs-Controller erstellt beispielsweise eine extrudierte Ellipse, wenn die Extrusion aktiviert ist. Die Extrusion kann über die Schaltfläche Extrusion in der Erstellungssymbolleiste (Schaltfläche ganz rechts) aktiviert werden.

Einige Formen wie Polylinien, Polygone und komplexe Polygone haben verschiedene (dynamische) Erstellungsschritte, die durch Drücken der Schaltfläche „Bestätigen“ beendet werden können. Um beispielsweise ein komplexes Polygon mit zwei dreieckigen Formen zu erstellen, sollte die Reihenfolge der Interaktionen lauten: tap-tap-tap, Commit (um das erste Polygon zu beenden), tap-tap-tap, Commit (um das zweite Polygon zu beenden), Commit ( um die komplexe Polygonerstellung zu beenden).

Lightspeed: Simulation von Berührungsereignissen Samples.lightspeed.touch.touchEvents.MainPanel

Dieses Beispiel zeigt die Auswirkung von Berührungsereignissen auf eine berührungsaktivierte Lightspeed-Ansicht. Es enthält ein Setup, das Berührungsereignisse simuliert und an die Lightspeed-Ansicht übergibt. Der in der Ansicht eingestellte Touch-Controller ist standardmäßig ein Navigations-Controller und interpretiert die eingehenden Ereignisse durch Schwenken und Zoomen der Ansicht.

Die Simulation kann durch Klicken auf die Schaltfläche "Touch-Ereignisse simulieren" in der Symbolleiste gestartet werden.

Anweisungen

Starten Sie eine Simulation der Handhabung von Berührungsereignissen in einer Lightspeed-Ansicht, indem Sie auf die Schaltfläche in der Symbolleiste klicken.

Lichtgeschwindigkeit: Tracking-Kamera Samples.lightspeed.trackingcamera.MainPanel

Dieses Beispiel zeigt, wie der Kamera der Ansicht verschiedene Einschränkungen hinzugefügt werden können, um einem oder mehreren sich bewegenden Objekten automatisch zu folgen.

Das Beispiel zeigt ein Modell mit drei Flugzeugen. Ihre Position wird ständig aktualisiert. Das Beispiel fügt der Kamera eine Tracking-Beschränkung hinzu, damit die Flugzeuge immer im Blickfeld sind.

Die verschiedenen möglichen Tracking-Einschränkungen sind:

  • TLspLookFromTrackingCameraConstraint3D : wird verwendet, um die Kamera an einer bestimmten Position zu fixieren. Schwenken und Zoomen sind nicht möglich, aber das Drehen schon. Optional kann auch die Richtung der Kamera fixiert werden, sodass auch ein Drehen nicht möglich ist.
  • TLspLookAtTrackingCameraConstraint3D : wird verwendet, um die Kamera in eine bestimmte Richtung zu fixieren. Schwenken ist nicht möglich, Zoomen und Drehen jedoch.
  • TLspLookAtTrackingCameraConstraint2D : wie oben für 2D-Ansichten.
Anweisungen

Die Combobox rechts zeigt die verfügbaren Tracking-Modi an. Es ändert die Weltreferenz, die Kamera der Ansicht und den Tracking-Modus.

Unterstützte Tracking-Modi für eine 3D-Ansicht sind:

  • Schau dir das Ziel an: Die Kamera ist immer auf die verfolgten Objekte ausgerichtet. Schwenken ist nicht möglich, aber Zoomen und Drehen schon.
  • Blick vom Ziel: Die Kamera ist immer auf den verfolgten Objekten positioniert und schaut von ihnen weg. Schwenken und Zoomen sind nicht möglich, aber Drehen schon.
  • Orientiert wie das Ziel: Die Kamera wird immer auf den verfolgten Objekten positioniert, orientiert wie die Objekte (basierend auf ILcdOriented). Schwenken, Zoomen und Drehen ist nicht möglich.
  • Standort verfolgen: Die Kamera ist immer auf die verfolgten Objekte ausgerichtet. Schwenken ist nicht möglich, aber Zoomen und Drehen schon.
  • Standort und Orientierung verfolgen: Die Kamera wird immer auf den verfolgten Objekten positioniert, ausgerichtet wie die Objekte. Nur Zoomen ist möglich.

Lichtgeschwindigkeit: Vertikale Ansicht Samples.lightspeed.vertikales.MainPanel

In diesem Beispiel wird die Verwendung des vertikalen Ansichtspakets veranschaulicht. Die 2D-Ansicht im oberen Teil enthält einen Fluglayer mit zwei Flugrouten. Jede Flugroute wird als Liste von 3D-Punkten modelliert.

Die vertikale Ansicht im unteren Teil wird verwendet, um das vertikale Profil des Fluges anzuzeigen, der in der 2D-Ansicht ausgewählt ist. Außer diesem Profil können auch eine Reihe von ihm zugeordneten Unterprofilen in einer vertikalen Ansicht angezeigt werden. In diesem Fall sind der Ansicht zwei Unterprofile zugeordnet: das Gelände und die Flugroute. FlightVVModel, eine Implementierung von ILcdVVModel, enthält die Hauptprofilpunkte und die Informationen über das Unterprofil.

Anweisungen

Wählen Sie einen Flug aus. In beiden Ansichten wird eine vertikale Markierung angezeigt. Ändern Sie die Flughöhe, indem Sie die Punkte nach oben oder unten ziehen. Mit den Schiebereglern rechts und unten können Sie die X- und Y-Achse zoomen. Mit den Schiebereglern oben können Sie Flugpunkte links oder rechts des Fluges ignorieren. Schließlich können Sie im rechten Bedienfeld die Höheneinheit auswählen.

Lightspeed: Stylen von Layern mit Symbology Encoding (SLD) Samples.ogc.sld.lightspeed.MainPanel

Der Standard OGC Symbology Encoding (Styled Layer Descriptor) beschreibt ein XML-Format, um den Stil eines Layers zu beschreiben. Dieses Beispiel zeigt, wie Sie einen solchen Stil aus einer Datei decodieren und auf eine Lightspeed-Ebene anwenden.

Die Anwendung zeigt eine Reihe von Ebenen und eine Reihe von Stilen an. Die Stile können auf die Ebenen angewendet werden. Einige der Stile sind spezifisch für eine bestimmte Ebene, während andere auf jede Ebene angewendet werden können.

Der Textbereich rechts zeigt die Beschreibung des Stils, wie er in der SLD-Datei definiert ist.

Anweisungen

Wählen Sie eine Ebene in der Ebenensteuerung und einen Stil in der Dropdown-Liste aus. Wenn Sie den Stil auswählen, wird er automatisch auf die ausgewählte Ebene angewendet.

Lucy: Aktiv einstellbares Sample Samples.lucy.activesettable.Main

In diesem Beispiel wird veranschaulicht, wie Sie Ihre eigene ILcyActiveSettable-Implementierung erstellen. Ein aktiver Settable kann am besten durch eine Toggle-Aktion verglichen werden. Es wird normalerweise in der Benutzeroberfläche durch eine Umschaltfläche (z. B. ein Kontrollkästchen) visualisiert.

Die Beispiele erstellen eine ILcyActiveSettable, die einen benutzerdefinierten Controller aktiviert (der samples.tooltip.ToolTipController ). Wenn aktiviert, zeigt dieser Controller einen Tooltip für Objekte unter der Maus an.

Der aktive Einstellwert wird sowohl in der Menüleiste als auch in der Symbolleiste der Karte eingefügt. Beachten Sie, wie der ausgewählte Status beider Schaltflächen synchron gehalten wird.

Anweisungen

Der Controller kann durch Klicken auf seine Schaltfläche in der Symbolleiste oder durch Klicken auf die Karte | . aktiviert werden Bedienelemente | Menüeintrag Tooltipps. Wenn der Controller aktiviert ist, zeigt er einen Tooltip für Objekte unter der Maus an. Fahren Sie mit der Maus über ein Land und warten Sie, bis der Tooltip erscheint. Der Tooltip zeigt den Namen des Landes und der Hauptstadt an. Standardmäßig ist die Steuerung bereits beim Start aktiv

Das Deaktivieren des Controllers erfolgt durch Auswahl eines anderen Controllers, entweder in der Symbolleiste oder in der Karte | Steuermenü.

Beachten Sie, wie der ausgewählte Status der Schaltfläche in der Symbolleiste und der Optionsschaltfläche in der Karte | Das Steuermenü wird die ganze Zeit synchron gehalten.

Lucy: Zusätzliche Panels hinzufügen Samples.lucy.applicationpane.Main

Dieses Beispiel veranschaulicht, wie Sie ein ALcyApplicationPaneTool verwenden können, um Lucy zusätzliche Bedienfelder hinzuzufügen.

Weitere Informationen zu diesem Beispiel finden Sie im Lucy Fundamentals Sample Guide.

Anweisungen
  • Verwenden Sie die 'Extras | Menüoption „Benutzerdefiniertes Bedienfeld“, um die Sichtbarkeit des neuen Bedienfelds umzuschalten. Die Menüoption wird in der Konfigurationsdatei des Add-Ons konfiguriert.
  • Wählen Sie einen anderen Wert in der Combobox und verwenden Sie die 'Datei | Arbeitsbereich speichern unter. ', um den Arbeitsbereich zu speichern. Laden Sie den Arbeitsbereich erneut mit 'Datei | Arbeitsbereich öffnen“. Sehen Sie, wie der ausgewählte Wert des Bedienfelds auf den Wert zurückgesetzt wird, den Sie vor dem Speichern des Arbeitsbereichs ausgewählt haben.

Lucy: Clustering Samples.lucy.clustering.Main

Die Karte in diesem Beispiel visualisiert humanitäre Ereignisse (Gewalt gegen Zivilisten, Schlachten, Unruhen, Proteste, . ) auf dem afrikanischen Kontinent. Der Datensatz enthält über 13 Tausend Ereignisse. Wenn jedes Ereignis als einzelner Punkt visualisiert würde, würden die Daten unlesbar. Daher werden die Daten geclustert.

Wenn viele Ereignisse am selben Ort stattgefunden haben, werden sie durch ein einzelnes Cluster-Symbol visualisiert. Der Cluster enthält eine Beschriftung, die angibt, wie viele Ereignisse er repräsentiert. Die Cluster werden während der Interaktion mit der Ansicht neu berechnet. Beim Zoomen werden beispielsweise Cluster zu einzelnen Ereignissen erweitert. Beim Herauszoomen können mehrere Cluster zu einem größeren Cluster gruppiert werden.

Diese Funktionalität wird durch die Einführung des ClusteringSHPAddOn bereitgestellt. Dieses Add-On fügt ein ALcyLspFormat ein, das die Visualisierung einer bestimmten Shape-Datei übernimmt (siehe ClusteringFormat.SOURCE_NAME_FILTER ). Um sicherzustellen, dass diese Shape-Dateien nicht vom standardmäßigen SHP-Add-On ( TLcyLspSHPFormatAddOn ) übernommen werden, fügt das Add-On das Format mit einer höheren Priorität ein. Dies geschieht in ClusteringSHPAddOn#createFormatTool .

Die Clustering-Funktionalität befindet sich in der Layer Factory. Das eingehende Modell wird mithilfe eines TLcdClusteringTransformer mit einem ALcdTransformingModel dekoriert, und der Layer wird für das transformierende Modell erstellt.

Da das Add-On seine eigenen ALcdTransformingModel-Instanzen erstellt, ist es auch dafür verantwortlich, Arbeitsbereichsunterstützung für diese Modelle bereitzustellen. Dies wird durch Einfügen einer ClusteringModelCodec-Instanz erreicht.

Anweisungen
  • Interagieren Sie mit der Karte (vergrößern und verkleinern, schwenken, Projektionen wechseln) und beobachten Sie, wie die Cluster ständig neu berechnet werden.
  • Die Tabellenansicht des Datensatzes humanitärer Ereignisse zeigt die ursprünglichen, nicht gruppierten Daten. Auf diese Weise können Sie durch die Originaldaten scrollen, auch wenn diese auf der Karte geclustert sind.
  • Mit dem Lucy-Suchfeld können Sie die Originaldaten durchsuchen. Dies bedeutet, dass Sie es auch dann finden können, wenn ein Ereignis in einem Cluster enthalten ist.
  • Durch das Speichern und Laden des Arbeitsbereichs bleiben die Daten geclustert.

Lucy: Beispiel für ein Daten-Repository Samples.lucy.datarepository.Main

Dieses Beispiel zeigt, wie Sie bestimmen, welche Dateien von Lucy geöffnet werden können, sowie das tatsächliche Öffnen dieser Dateien.

Lucy verwendet zwei Konzepte zum Öffnen einer Datei:

  • ILcdModelDecoder-Instanzen werden verwendet, um eine Quelle in ein ILcdModel zu konvertieren. Wenn die Daten visualisiert werden müssen, wird das Modell in einen Layer konvertiert, der zu einer Ansicht hinzugefügt werden kann. Dies ist der gleiche Mechanismus, der im LuciadLightspeed-Kernprodukt verfügbar ist.
  • ALcyDataSourceHandler-Instanzen werden verwendet, um alle anderen Daten zu öffnen, die nicht in das Konzept eines ILcdModelDecoder passen. Ein Beispiel sind Daten, die von einem Server wie einem WMS-Server stammen. Dies erfordert in der Regel, dass eine Verbindung zum Server aufgebaut wird, um zu sehen, welche Daten verfügbar sind. Dann werden die Daten ausgewählt und dieser Datenstrom kann dann auf der Client-Seite visualisiert werden.

Jedes der Format-Add-Ons registriert seine Modelldecoder und/oder Datenquellenhandler beim Lucy-Back-End (siehe TLcyCompositeModelDecoder#addModelDecoder und TLcyCompositeDataSourceHandler#addDataSourceHandler ). Die Registrierung einer solchen Instanz erfordert die Registrierung eines übereinstimmenden ALcyFileTypeDescriptor . Dieser Deskriptor ermöglicht es, schnell zu filtern, welche Dateien vom Modell-Decoder oder Datenquellen-Handler durch seine include-Methode akzeptiert werden.

Dieses Beispiel veranschaulicht, wie diese registrierten ALcyFileTypeDescriptor-Instanzen verwendet werden, um zu bestimmen, welche Dateien in einem bestimmten Verzeichnis von Lucy geöffnet werden können. Die Konfigurationsdatei ermöglicht die Angabe dieses Verzeichnisses und der Suchtiefe. Für jede der Dateien in diesen Verzeichnissen wird ein Menüpunkt hinzugefügt. Wenn der Menüpunkt angeklickt wird, werden die Daten auf die Karte geladen.

Das Laden von Daten in Lucy liegt in der Verantwortung des TLcyDataFormatManager . Diese Klasse stellt eine handleDataSources-Methode bereit, die die angegebenen Daten lädt.

Beachten Sie, dass das Öffnen einiger Dateien zu einem Fehler führen kann. Zum Beispiel haben eine CADGR-Datei und eine Dafif-Datei beide die Erweiterung .toc . Lucy gibt an, dass sie anhand der Erweiterung der Datei mit der Datei umgehen kann, wenn mindestens eines der für diese Dateitypen verantwortlichen Addons geladen ist. Wenn also versucht wird, eine Dafif-Datei zu öffnen, wenn dieses Addon nicht geladen ist, wird ein Fehler ausgegeben, da der CADGR-Decoder nicht weiß, wie eine Dafif-Datei decodiert wird.

Anweisungen

Verwenden Sie die Menüpunkte unter dem Menüpunkt 'Daten', um Daten auf die aktuell aktive GXY-Karte zu laden. Die Daten werden in einen Hintergrundthread geladen, wenn auf einen Menüpunkt geklickt wird. Das Laden der Daten in einem Hintergrundthread stellt sicher, dass die Lucy-Benutzeroberfläche während des Ladens der Daten reaktionsfähig bleibt.

Lucy: Dichteprobe Samples.lucy.density.Main

In diesem Beispiel wird die Verwendung der Lightspeed-Technologie in einer GXY-Karte mithilfe der TLcyGXYLspAsynchronousFormatWrapper-Klasse veranschaulicht.

In der DensityAddOn-Klasse wird ein reguläres GXY-Format (DensityFormat) mit einem TLcyGXYLspAsynchronousFormatWrapper dekoriert. Dieser Wrapper stellt sicher, dass die Ebene in einer GXY-Ansicht mit Lightspeed-Technologie visualisiert wird, wenn die GPU unterstützt wird. Falls die GPU nicht unterstützt wird, wird auf die reguläre GXY-Ebene zurückgegriffen.

Um diesen Wrapper zu verwenden, wird auch eine Lightspeed-Layer-Factory benötigt. Die Lightspeed-Layer-Factory in diesem Beispiel ist die LightspeedDensityLayerFactory .

Die GXY-Karte zeigt Trajektorien zwischen Städten als Dichtediagramm an. Die Daten werden mit einer Farbe visualisiert, die von der Überlappung innerhalb einer Region abhängt. Der Trajektorien-Layer ist ein Lightspeed-Layer, der in einen asynchronen gxy-Layer eingebettet ist.

Weitere Informationen zu diesem Format-Wrapper finden Sie in der Klasse javadoc und im Lucy-Entwicklerhandbuch.

Anweisungen

Die GXY-Karte zeigt Trajektorien zwischen Städten als Dichtediagramm an. Die Daten werden mit einer Farbe visualisiert, die von der Überlappung innerhalb einer Region abhängt. Der Trajektorien-Layer ist ein Lightspeed-Layer, der in einen asynchronen gxy-Layer eingebettet ist.

Lucy Drawing Add-on: benutzerdefiniertes Domänenobjekt: Samples.lucy.drawing.customdomainobject.Main

Das Lucy-Zeichnungs-Add-on bietet Unterstützung für das Erstellen von Anmerkungen auf einer Karte. Es kommt mit einer Reihe von Standardformen und Stiloptionen. Die API dieses Add-ons ermöglicht Anpassungen auf vielen Ebenen, zum Beispiel:

  • Hinzufügen eines komplett neuen Domänenobjekts mit eigenen Stiloptionen.
  • Hinzufügen einer neuen Form mit Wiederverwendung der Standard-Styling-Optionen.
  • Anpassen einer der vorhandenen Formen.
  • Passen Sie die verfügbare Symbolleisten-Benutzeroberfläche an.

Dieses Beispiel veranschaulicht, wie Sie dem Zeichnungs-Add-On Unterstützung für ein komplett neues Domänenobjekt hinzufügen. Das benutzerdefinierte Domänenobjekt ist in diesem Beispiel nur ein einfacher Punkt, der mit einem Symbol visualisiert wird.

Die gesamte Unterstützung für das benutzerdefinierte Domänenobjekt wird in der CustomDomainObjectSupplier-Klasse erstellt. Dieser Domänenobjektlieferant wird dann im DrawingCustomDomainObjectAddOn für das Zeichnungsformat registriert.

Das benutzerdefinierte Domänenobjekt ist auch auf Lightspeed-Maps mit derselben Funktionalität wie auf der GXY-Map verfügbar. Die gesamte Lightspeed-Unterstützung für das benutzerdefinierte Domänenobjekt ist in der LspCustomDomainObjectSupplier-Klasse enthalten, die im Lightspeed-Zeichnungsformat in LspDrawingCustomDomainObjectAddOn registriert ist.

Es wird dringend empfohlen, das Kapitel über das Zeichnungs-Add-On im Lucy-Entwicklerhandbuch zu lesen, bevor Sie den Beispielcode durchgehen. Das Entwicklerhandbuch bietet einen Überblick über die Struktur des Zeichnungs-Add-Ons und zeigt, wo sich die verschiedenen Anpassungs-Hooks in der API befinden. Dieses Wissen wird es einfacher machen, den Code in diesem Beispiel zu verstehen und zu befolgen.

Anweisungen

Das Beispiel beginnt mit einem Zeichnungs-Layer, der mehrere benutzerdefinierte Domänenobjekte enthält und die Zeichnungssymbolleiste aktiv ist.

  • Verwenden Sie die Schaltfläche Neu in der Zeichensymbolleiste, um neue Domänenobjekte zu erstellen.
  • Bearbeiten Sie die benutzerdefinierten Domänenobjekte mit der Maus oder über das Objekteigenschaftenfenster.
  • Wenn Sie einen Zeichnungs-Layer im nativen Zeichnungsformat speichern, werden auch diese benutzerdefinierten Domänenobjekte gespeichert.

Alle Funktionen sind auf GXY- und Lightspeed-Karten verfügbar.

Lucy-Zeichnungs-Add-on: Kreismalerei anpassen proben.lucy.drawing.custompainting.Main

Das Lucy-Zeichnungs-Add-on bietet Unterstützung für das Erstellen von Anmerkungen auf einer Karte. Es kommt mit einer Reihe von Standardformen und Stiloptionen. Die API dieses Add-ons ermöglicht Anpassungen auf vielen Ebenen, zum Beispiel:

  • Hinzufügen eines komplett neuen Domänenobjekts mit eigenen Stiloptionen.
  • Hinzufügen einer neuen Form mit Wiederverwendung der Standard-Styling-Optionen.
  • Anpassen einer der vorhandenen Formen.
  • Passen Sie die verfügbare Symbolleisten-Benutzeroberfläche an.

In diesem Beispiel wird veranschaulicht, wie Sie eine der vorhandenen Formen anpassen. Die benutzerdefinierte Form in diesem Beispiel ist der Kreis. Beim Erstellen des Kreises wird der Radius in einem Etikett angezeigt. Wenn Sie einen bestehenden Kreis mit der Maus an eine andere Position verschieben, wird die Position des Mittelpunkts angezeigt. In einer Lightspeed-Ansicht werden der Radius und die Mittenpositionen sowohl während der Bearbeitung als auch während der Erstellung angezeigt.

Die Anpassung des Kreisformlieferanten erfolgt in der CircleSupplierWrapper-Klasse. Der dekorierte Lieferant wird dann im DrawingPaintingAddOn für das Zeichnungsformat registriert.

Die Anpassung des Lightspeed-Kreisformlieferanten erfolgt in der LspCircleSupplierWrapper-Klasse. Der dekorierte Lieferant wird dann im Lightspeed-Zeichnungsformat im LspDrawingPaintingAddOn registriert.

Es wird dringend empfohlen, das Kapitel über das Zeichnungs-Add-On im Lucy-Entwicklerhandbuch zu lesen, bevor Sie den Beispielcode durchgehen. Das Entwicklerhandbuch bietet einen Überblick über die Struktur des Zeichnungs-Add-Ons und zeigt, wo sich die verschiedenen Anpassungs-Hooks in der API befinden. Dieses Wissen wird es einfacher machen, den Code in diesem Beispiel zu verstehen und zu befolgen.

Anweisungen

Das Beispiel beginnt mit einer Zeichenebene, die mehrere Kreise enthält und die Zeichensymbolleiste aktiv ist.

  • Verwenden Sie die Kreis-Schaltfläche in der Zeichensymbolleiste, um einen neuen Kreis zu erstellen und zu sehen, wie der Radius während der Erstellung im Textformat in einem Etikett angezeigt wird.
  • Verschieben Sie einen der erstellten Kreise mit der Maus an eine neue Position und sehen Sie, wie die Position des Mittelpunkts angezeigt wird.
  • Passen Sie den Radius eines der Kreise mit der Maus an und sehen Sie, wie der Radius angezeigt wird.

Alle Funktionen sind auf GXY- und Lightspeed-Karten verfügbar. Auf einer Lightspeed-Karte werden während der Bearbeitung und Erstellung sowohl der Radius als auch der Mittelpunkt angezeigt.

Lucy Drawing Add-on: Benutzerdefinierte Form hinzufügen (Hippodrom) Proben.lucy.drawing.hippodrome.Main

Das Lucy-Zeichnungs-Add-On unterstützt das Erstellen von Anmerkungen auf einer Karte. Es kommt mit einer Reihe von Standardformen und Stiloptionen. Die API dieses Add-ons ermöglicht Anpassungen auf vielen Ebenen, zum Beispiel:

  • Hinzufügen eines komplett neuen Domänenobjekts mit eigenen Stiloptionen.
  • Hinzufügen einer neuen Form mit Wiederverwendung der Standard-Styling-Optionen.
  • Anpassen einer der vorhandenen Formen.
  • Passen Sie die verfügbare Symbolleisten-Benutzeroberfläche an.

In diesem Beispiel wird veranschaulicht, wie Sie Unterstützung für eine neue Form hinzufügen, während Sie die Standardstiloptionen wiederverwenden. Die neue Form in diesem Beispiel ist die Hippodrom-Form, die in den Fundamentmustern verfügbar ist.

Die gesamte Unterstützung für diese neue Form wird in der HippodromeShapeSupplier-Klasse erstellt. Dieser Shape-Lieferant wird dann für das Zeichnungsformat in der DrawingHippodromeAddOn-Klasse registriert.

Die Hippodrom-Form ist auch auf Lightspeed-Karten mit derselben Funktionalität wie auf der GXY-Karte verfügbar. Die gesamte Lightspeed-Unterstützung für die Hippodrom-Form ist in der LspHippodromeShapeSupplier-Klasse enthalten, die im Lightspeed-Zeichnungsformat im LspDrawingHippodromeAddOn registriert ist.

Es wird dringend empfohlen, das Kapitel über das Zeichnungs-Add-On im Lucy-Entwicklerhandbuch zu lesen, bevor Sie den Beispielcode durchgehen. Das Entwicklerhandbuch bietet einen Überblick über die Struktur des Zeichnungs-Add-Ons und zeigt, wo sich die verschiedenen Anpassungs-Hooks in der API befinden. Dieses Wissen wird es einfacher machen, den Code in diesem Beispiel zu verstehen und zu befolgen.

Anweisungen

Das Beispiel beginnt mit einer Zeichenebene, die mehrere Hippodrom-Formen enthält und die Zeichensymbolleiste aktiv ist.

  • Verwenden Sie die Schaltfläche Neu in der Zeichensymbolleiste, um neue Hippodrom-Formen zu erstellen.
  • Verwenden Sie die verfügbaren Stilschaltflächen in der Zeichensymbolleiste, um den Stil der Hippodrome zu bearbeiten.
  • Bearbeiten Sie die Hippodrome mit der Maus oder über das Objekteigenschaftenfenster.
  • Wenn Sie einen Zeichnungs-Layer im nativen Zeichnungsformat speichern, werden auch diese benutzerdefinierten Domänenobjekte gespeichert.

Alle Funktionen sind auf GXY- und Lightspeed-Karten verfügbar.

Lucy-Zeichnungs-Add-on: Verwenden vordefinierter Stile Beispiele.lucy.drawing.styles.Main

Das Lucy-Zeichnungs-Add-On unterstützt das Erstellen von Anmerkungen auf einer Karte. Es kommt mit einer Reihe von Standardformen und Stiloptionen. Die API dieses Add-ons ermöglicht Anpassungen auf vielen Ebenen, zum Beispiel:

  • Hinzufügen eines komplett neuen Domänenobjekts mit eigenen Styling-Optionen.
  • Hinzufügen einer neuen Form mit Wiederverwendung der Standard-Styling-Optionen.
  • Anpassen einer der vorhandenen Formen.
  • Anpassen der verfügbaren Symbolleisten-Benutzeroberfläche.

Dieses Beispiel veranschaulicht, wie Sie Stile im Voraus definieren und dem Benutzer die Benutzeroberfläche bereitstellen können, um einen dieser vordefinierten Stile auf die ausgewählten Formen anzuwenden.

Jedes Zeichnungsmodell hat sein eigenes Stil-Repository (siehe TLcyDrawingModelDescriptor#getDrawingStyleRepository ). Dieses Beispiel füllt das Stil-Repository mit einigen vordefinierten Stilen (siehe ApplyStyleActionFactory#addDefaultStyles ). Außerdem wird der Zeichensymbolleiste eine Benutzeroberfläche hinzugefügt. Über die Benutzeroberfläche kann der Benutzer einen dieser vordefinierten Stile auf die ausgewählten Zeichnungsobjekte anwenden. Dies geschieht in der Methode ApplyStyleAction#applyStyle().

Wenn Sie einen der vordefinierten Stile auf ein Zeichnungsdomänenobjekt anwenden, müssen Sie das Stilobjekt aus dem Stil-Repository abrufen und für das Zeichnungsdomänenobjekt festlegen. An diesem Punkt teilt das Domänenobjekt seinen Stil mit dem Stil im Repository. Folglich führt eine Änderung des Stils im Repository auch zu einer Stiländerung des Domänenobjekts.

Damit dieser Mechanismus auch beim Speichern und späteren Laden des Zeichnungsmodells funktioniert, werden alle Stile im Stil-Repository zusammen mit den Zeichnungsformen in der Zeichnungsdatei (*.drawing) gespeichert. Die Domänenobjekte, die einen Stil gemeinsam nutzen, speichern einen Verweis auf den Stil im Repository, anstatt den Stil selbst zu speichern. Dies ermöglicht die Wiederherstellung des zwischen Domänenobjekt und Stilspeicher geteilten Stils, wenn die Zeichnungsdatei geladen wird. Ein Beispiel dafür sehen Sie in der Zeichnungsdatei, die von diesem Beispiel geladen wird (resources/samples/drawing/styles/polygonLayer.drawing).

Es wird dringend empfohlen, das Kapitel über das Zeichnungs-Add-On im Lucy-Entwicklerhandbuch zu lesen, bevor Sie den Beispielcode durchgehen. Das Entwicklerhandbuch bietet einen Überblick über die Struktur des Zeichnungs-Add-Ons und veranschaulicht die Position der Anpassungs-Hooks in der API. Die Kenntnis dieser Lucy-Zeichnungsgrundlagen macht es einfacher, den Code in diesem Beispiel zu verstehen und zu befolgen.

Anweisungen

Das Beispiel beginnt mit einem Zeichen-Layer, der mehrere Polygone mit unterschiedlichen Stilen enthält. Die Zeichenwerkzeugleiste ist aktiv.

  • Wählen Sie ein oder mehrere Polygone aus und verwenden Sie die Schaltfläche 'Stil anwenden' in der Werkzeugleiste, um den Stil der ausgewählten Polygone zu ändern.

Alle Funktionen sind sowohl in GXY- als auch in Lightspeed-Ansichten verfügbar.

Lucy: Bearbeitbare Tabellen Samples.lucy.editabletables.Main

Dieses Beispiel zeigt, wie Sie Daten in der Tabellenansicht oder in den Objekteigenschaften bearbeiten.

Durch das Registrieren von Anpassungspanelfactorys für Instanzen von TLcdDataPropertyValueContext können Sie die Bearbeitung für Werte bestimmter Eigenschaften aktivieren. Die Klasse TLcyDataPropertyValueCustomizerPanelFactories bietet eine Reihe von Implementierungen für Basistypen wie Strings, Numbers, Measures etc. . Die Klasse TLcyDataPropertyValueFilters bietet Filter, mit denen Sie genau bestimmen können, für welche Eigenschaft Sie eine Customizer-Panel-Factory registrieren möchten. Für weitere Informationen verweisen wir auf die Javadoc dieser Klassen.

Anweisungen
  • Für Strings, Zahlen und Kennzahlen erscheint ein Textfeld, in das Sie einen neuen Wert eingeben können. Ungültige Werte werden dadurch angezeigt, dass das Textfeld rot wird.
  • Bei booleschen Werten wird ein Kontrollkästchen angezeigt, um den Wert umzuschalten.
  • Für die Aufzählung erscheint ein Kombinationsfeld, in dem Sie einen aus einer begrenzten Anzahl von Werten auswählen können.
  • Die ReadOnlyInteger-Eigenschaft kann nicht bearbeitet werden.

Lucy: Generierte Daten Samples.lucy.format.generated.Main

Dieses Beispiel zeigt, wie Sie jeder Karte, die von der Anwendung generiert oder konstruiert wird, Daten hinzufügen können, also beispielsweise nicht mit einem Modelldecoder aus einer Datei geladen werden.

Modell hinzufügen und generieren

In diesem Beispiel wird ein ILcdModel mithilfe der GenerateModel-Dienstprogrammmethode in GeneratedFormatAddOn generiert. Für die Zwecke des Beispiels erstellt es ein sehr einfaches Modell mit nur drei Punkten, aber es könnte natürlich alles sein. Zum Beispiel das Ergebnis einer Berechnung, das Ergebnis einer Webservice-Anfrage oder eine Verbindung zu einem Live-Feed von Tracks. Die Methode addGeneratedDataToEveryMap fügt dieses Modell allen aktuellen und zukünftigen Karten hinzu, wobei die Workspace-Unterstützung berücksichtigt wird. Das Beispiel erstellt für jede Karte eine neue Modellinstanz, kann jedoch je nach gewünschtem Verhalten leicht geändert werden, um ein einzelnes Modell für alle Karten freizugeben.

Formate

Dieses programmgesteuert generierte ILcdModel ist eigentlich ein neues Datenformat. So wird ein Lucy ALcyFormat erstellt und eingesteckt. Da auch Lightspeed-Unterstützung benötigt wird, werden eigentlich zwei Formate verwendet:

  • GeneratedFormat : Dieses Format wird von GeneratedFormatAddOn angeschlossen und sorgt für die Bereitstellung von Arbeitsbereichsunterstützung für das Modell und die Bereitstellung eines Modellinhaltstypanbieters. Wenn GXY-Unterstützung erforderlich wäre, würde sie auch hier hinzugefügt. Das Beispiel hat sich dafür entschieden, dies nicht bereitzustellen, daher wird null für die GXY-Layer-Factory zurückgegeben.
  • GeneratedLspFormat : Dieses Format wird von GeneratedLspFormatAddOn eingesteckt und stellt die Layer-Factory für Lightspeed-Ansichten bereit. Durch seine Superklasse erbt es auch die Workspace-Unterstützung für die Lightspeed-Ebenen.
Anweisungen
  • Sehen Sie, wie jede Karte einen Layer namens „Von der Anwendung generierte Daten“ enthält. Wenn Sie Ihren Arbeitsbereich speichern und laden, wird die Ebene wiederhergestellt, wobei die Ebenenreihenfolge und andere Einstellungen wie die Ebenensichtbarkeit berücksichtigt werden.

Lucy: Andockbares Frames-Frontend Samples.lucy.frontend.dockableframes.Main

Dieses Beispiel zeigt, wie Sie Ihr eigenes benutzerdefiniertes Front-End für Lucy erstellen.

Das Frontend von Lucy ist der Teil, der Lucy startet, die allgemeine Benutzeroberfläche erstellt und die Addons lädt. Lucy wird mit einem solchen Frontend ausgeliefert, TLcyMain , das zwei verschiedene Arten von Benutzeroberflächen erstellen kann: eine mit andockbaren Frames (Standard) oder eine mit Registerkarten.

Dieses Beispiel veranschaulicht, wie das gesamte Front-End durch eine benutzerdefinierte Implementierung ersetzt wird, bei der die Benutzeroberfläche auf andockbaren Frames basiert, die von JIDE bereitgestellt werden. Die Docking-Funktionalität dieses Frontends ist identisch mit dem 'DOCKING'-Modus von TLcyMain .

Die allgemeine Frontend-Funktionalität (z. B. das Laden von Add-Ons) befindet sich in der Klasse AFrontEnd und wird von den verschiedenen im Release enthaltenen Frontend-Beispielen geteilt. Der UI-spezifische Code ist in einer ILcyApplicationPaneFactory-Implementierung enthalten, die für dieses Beispiel spezifisch ist: DockableFrameAppPaneFactory .

Bitte beachten Sie, dass die Entwicklung gegen die JIDE-API eine JIDE-Entwicklungslizenz erfordert, die nicht mit diesem Beispiel geliefert wird. Wenn Sie Anpassungen an diesem Front-End vornehmen möchten, die nichts mit JIDE zu tun haben (aber beispielsweise gegen die allgemeinere ILcyApplicationPane-API durchgeführt werden können), sollten Sie mit GrantedDockableFramesFrontendMain beginnen.

Weitere Informationen zu benutzerdefinierten Front-Ends finden Sie im Lucy-Entwicklerhandbuch.

Anweisungen

Das Beispiel startet und zeigt die Karte, die Kartenübersicht und die Ebenensteuerung mit andockbaren Rahmen.

Lucy: Zugelassenes andockbares Frames-Frontend Samples.lucy.frontend.granteddockableframes.Main

Dieses Beispiel zeigt, wie Sie Ihr eigenes benutzerdefiniertes Front-End für Lucy erstellen.

Das Frontend von Lucy ist der Teil, der Lucy startet, die allgemeine Benutzeroberfläche erstellt und die Addons lädt. Lucy wird mit einem solchen Frontend ausgeliefert, TLcyMain , das zwei verschiedene Arten von Benutzeroberflächen erstellen kann: eine mit andockbaren Frames (Standard) oder eine mit Registerkarten.

Dieses Beispiel veranschaulicht, wie das gesamte Front-End durch eine benutzerdefinierte Implementierung ersetzt wird, bei der die Benutzeroberfläche auf andockbaren Frames basiert, die von JIDE bereitgestellt werden. Die Docking-Funktionalität dieses Frontends ist identisch mit dem 'DOCKING'-Modus von TLcyMain .

Die allgemeine Frontend-Funktionalität (z. B. das Laden von Add-Ons) befindet sich in der Klasse AFrontEnd und wird von den verschiedenen im Release enthaltenen Frontend-Beispielen geteilt. Der UI-spezifische Code ist nicht als Quellcode verfügbar. Daher ermöglicht dieses Beispiel nur die Anpassung des Gesamtlayouts.

Dieses Beispiel erfordert keine JIDE-Lizenz, da es nicht erlaubt, in die JIDE-Bibliotheken zu programmieren. Es ermöglicht die Anpassung des Gesamtlayouts an Ihre Bedürfnisse, bietet jedoch keinen Zugriff auf die ILcyApplicationPaneFactory-Implementierung. Verwenden Sie das DockableFramesFrontendMain-Beispiel, wenn Sie auf die ILcyApplicationPaneFactory selbst zugreifen möchten.

Weitere Informationen zu benutzerdefinierten Front-Ends finden Sie im Lucy-Entwicklerhandbuch.

Anweisungen

Das Beispiel startet und zeigt die Karte, die Kartenübersicht und die Ebenensteuerung mit andockbaren Rahmen.

Lucy: Frontend für interne Frames Samples.lucy.frontend.internalframes.Main

Dieses Beispiel zeigt, wie Sie Ihr eigenes benutzerdefiniertes Front-End für Lucy erstellen.

Das Frontend von Lucy ist der Teil, der Lucy startet, die allgemeine Benutzeroberfläche erstellt und die Addons lädt. Lucy wird mit einem solchen Frontend ausgeliefert, TLcyMain , das zwei verschiedene Arten von Benutzeroberflächen erstellen kann: eine mit andockbaren Frames (Standard) oder eine mit Registerkarten.

In diesem Beispiel wird veranschaulicht, wie das gesamte Front-End durch eine benutzerdefinierte Implementierung ersetzt wird, bei der die Benutzeroberfläche auf internen Frames basiert.

Die allgemeine Frontend-Funktionalität (zB das Laden von Add-Ons) befindet sich in der AFrontEnd-Klasse und wird von den verschiedenen im Release enthaltenen Frontend-Beispielen geteilt. Der UI-spezifische Code ist in einer ILcyApplicationPaneFactory-Implementierung enthalten, die für dieses Beispiel spezifisch ist: InternalFrameAppPaneFactory .

Weitere Informationen zu benutzerdefinierten Front-Ends finden Sie im Lucy-Entwicklerhandbuch.

Anweisungen

Das Beispiel startet und zeigt die Karte, die Kartenübersicht und die Layerkontrolle mit Hilfe von internen Frames.

Lucy: Kartenzentriertes Frontend Samples.lucy.frontend.mapcentric.Main

Dieses Beispiel zeigt, wie Sie Ihr eigenes benutzerdefiniertes Front-End für Lucy erstellen.

Das Frontend von Lucy ist der Teil, der Lucy startet, die allgemeine Benutzeroberfläche erstellt und die Addons lädt. Lucy wird mit einem solchen Frontend ausgeliefert, TLcyMain , das zwei verschiedene Arten von Benutzeroberflächen erstellen kann: eine mit andockbaren Frames (Standard) oder eine mit Registerkarten.

Dieses Beispiel veranschaulicht, wie Sie das gesamte Front-End durch eine benutzerdefinierte Implementierung ersetzen, bei der die Benutzeroberfläche auf sogenannten On-Map-Bereichen basiert.

Die allgemeine Frontend-Funktionalität (zB das Laden von Add-Ons) befindet sich in der AFrontEnd-Klasse und wird von den verschiedenen im Release enthaltenen Frontend-Beispielen geteilt. Der UI-spezifische Code ist in einer ILcyApplicationPaneFactory-Implementierung enthalten, die für dieses Beispiel spezifisch ist: MapCentricAppPaneFactory .

Es hat einen großen Bereich für die Karte, und alle anderen Panels werden in sogenannten On-Map-Fenstern angezeigt. Diese Bereiche auf der Karte schweben über der Karte. Eine Einschränkung besteht darin, dass nur eine Karte unterstützt wird, wenn eine zweite hinzugefügt wird, wird eine Ausnahme ausgelöst.

Weitere Informationen zu benutzerdefinierten Front-Ends finden Sie im Lucy-Entwicklerhandbuch.

Anweisungen

Das Beispiel startet und zeigt die Karte, die Kartenübersicht und die Layerkontrolle mit Hilfe von internen Frames.

Lucy: Touch Map Centric Frontend Samples.lucy.frontend.mapcentric.touch.Main

Dieses Beispiel zeigt, wie Sie Ihr eigenes Multi-Touch-Front-End für Lucy erstellen.

Das Beispiel weist die folgenden Änderungen im Vergleich zum kartenzentrierten Front-End auf:

  • Ein benutzerdefiniertes Look-and-Feel, das die Größe aller UI-Elemente erhöht und deren Handhabung per Touch-Eingabe erleichtert.
  • Eine benutzerdefinierte Konfigurationsdatei für das Lightspeed-Karten-Add-on, die die Karte für die Verwendung der Berührungseingabe konfiguriert. Andere Add-Ons verwenden diese Informationen, um die entsprechenden Touch-Controller einzurichten.

Weitere Informationen zu benutzerdefinierten Front-Ends finden Sie im Lucy-Entwicklerhandbuch.

Anweisungen

Das Beispiel startet und zeigt die Karte, die Kartenübersicht und die Layerkontrolle mit Hilfe von internen Frames. Die Größe aller UI-Elemente wurde erhöht, um die Touch-Interaktion zu erleichtern. Die Controller für die Karte sind Touch-Controller.

Lucy: Tabbed Panes Frontend Samples.lucy.frontend.tabbedpanes.Main

Dieses Beispiel zeigt, wie Sie Ihr eigenes benutzerdefiniertes Front-End für Lucy erstellen.

Das Frontend von Lucy ist der Teil, der Lucy startet, die allgemeine Benutzeroberfläche erstellt und die Addons lädt. Lucy wird mit einem solchen Frontend ausgeliefert, TLcyMain , das zwei verschiedene Arten von Benutzeroberflächen erstellen kann: eine mit andockbaren Frames (Standard) oder eine mit Registerkarten.

In diesem Beispiel wird veranschaulicht, wie das gesamte Front-End durch eine benutzerdefinierte Implementierung ersetzt wird, bei der die Benutzeroberfläche auf Registerkartenbereichen basiert.

Die allgemeine Frontend-Funktionalität (zB das Laden von Add-Ons) befindet sich in der AFrontEnd-Klasse und wird von den verschiedenen im Release enthaltenen Frontend-Beispielen geteilt.

Es bietet unbegrenzte Flexibilität in Bezug auf die Hauptklasse, die Benutzeroberfläche, wie viele Fenster mit Registerkarten verwendet werden sollen, wo sie platziert werden sollen, ob überhaupt Fenster mit Registerkarten verwendet werden sollen, das Laden von Add-Ons, die Position des Rahmens, die Anzahl der Rahmen, . Außerdem können Sie Lucy in eine vorhandene Anwendung integrieren.

Weitere Informationen zu benutzerdefinierten Front-Ends finden Sie im Lucy-Entwicklerhandbuch.

Anweisungen

Das Beispiel startet und zeigt die Karte, die Kartenübersicht und die Ebenensteuerung mithilfe von Registerkarten.

Lucy: Beispiel für eine benutzerdefinierte Kartenbenutzeroberfläche Samples.lucy.gxy.custommapui.Main

Dieses Beispiel zeigt, wie Sie die Benutzeroberfläche der GXY-Maps in Lucy anpassen.

Die Benutzeroberfläche wird angepasst, indem eine benutzerdefinierte Erweiterung von TLcyMapComponentFactory und TLcyMapLayerControlFactory beim Karten-Add-On registriert wird. Die Registrierung dieser benutzerdefinierten Factorys erfolgt durch das Setzen der Factory-Instanzen in der Konfigurationsdatei des TLcyMapAddOn .

Die MapComponentFactory erweitert TLcyMapComponentFactory und bietet die folgenden Anpassungen an der Karte:

  • Die 'Datei | Die Aktion „Öffnen“ hat ein anderes Symbol.
  • Der Lineal-Controller wurde entfernt.
  • Die Symbolleiste befindet sich nicht mehr oben auf der Karte, sondern wurde nach unten verschoben.
  • Das Skalierungs-Kombinationsfeld befindet sich nicht mehr in der Symbolleiste, sondern ganz rechts
  • Oben links wird ein interaktives Overlay-Panel hinzugefügt.

Die MapLayerControlFactory erweitert TLcyMapLayerControlFactory und bietet die folgenden Anpassungen für das Layer-Steuerelement:

  • Die Schaltfläche Löschen wurde für SHP-Layer deaktiviert.
  • Die Checkboxen für die Sichtbarkeit aller Layer wurden deaktiviert.

Weitere Informationen zum Anpassen der GXY-Karte finden Sie im Lucy-Entwicklerhandbuch.

Anweisungen

Beim Start zeigt das Beispiel eine Karte mit einer angepassten Benutzeroberfläche.

Lucy: Beispiel für einen Höhenanbieter Samples.lucy.heightprovider.Main

Dieses Beispiel veranschaulicht die Verwendung der ILcdHeightProvider-Schnittstelle und einer ihrer Lucy-spezifischen Implementierungen TLcyViewHeightProvider .

Das Beispiel enthält ein Panel, das die minimale, maximale und durchschnittliche Höhe im aktuell sichtbaren Bereich anzeigt. Das Panel enthält eine 'Aktualisieren'-Schaltfläche, mit der diese Höhen neu berechnet werden können, beispielsweise wenn zusätzliche Daten geladen werden oder wenn die Ansichtsgrenzen geändert wurden.

Um die minimale und maximale Höhe im sichtbaren Bereich zu berechnen, wird ein Raster von Abtastpunkten in der Ansicht genommen. Dies bedeutet, dass beim Herauszoomen der Ansicht möglicherweise der wahre tiefste und höchste Punkt übersehen wird und ein weniger extremer Wert angezeigt wird.

Weitere Informationen zur ILcdHeightProvider-Schnittstelle finden Sie im LuciadLightspeed-Entwicklerhandbuch.

Anweisungen

Beispiele beginnen mit dem sichtbaren Höhenbereich und der Kartenanpassung an den Alpen-Layer. Durch Drücken der Schaltfläche 'Aktualisieren' werden die Höhenberechnungen durchgeführt und die Ergebnisse im Panel angezeigt.

Wenn Sie die Drehung, den Zoom oder die Position in der Kartenansicht ändern, verwenden Sie die Schaltfläche „Aktualisieren“ im Bereich „Höhe“, um die neuen Werte zu erhalten.

Lucy: Beispiel für einen Ebeneneigenschaften-Editor Samples.lucy.layerpropertyeditor.Main

In diesem Beispiel wird veranschaulicht, wie die registrierten ILcyCustomizerPanelFactory-Instanzen auf dem Lucy-Back-End verwendet werden, um ein ILcyCustomizerPanel zu erstellen.

Das Beispiel zeigt das Bedienfeld „Ebeneneigenschaften“ in einem separaten Anwendungsbereich. Das Bedienfeld „Ebeneneigenschaften“ ist dasselbe Bedienfeld, das beim Auslösen der Aktion „Ebeneneigenschaften“ in der Ebenensteuerung angezeigt wird. Jedes Mal, wenn die ausgewählte Ebene geändert wird, zeigt das Bedienfeld ein neues Bedienfeld an, das der neuen Ebenenauswahl entspricht.

Der Code, der das ILcyCustomizerPanel mithilfe der registrierten ILcyCustomizerPanelFactory-Instanzen erstellt, befindet sich in LayerPropertyEditor#createCustomizerPanelForContext .

Weitere Informationen zu den Schnittstellen ILcyCustomizerPanel und ILcyCustomizerPanelFactory finden Sie im Lucy-Entwicklerhandbuch.

Anweisungen

Wenn das Sample startet, ist die Ebene 'World' ausgewählt. In der oberen linken Ecke ist das Bedienfeld „Ebeneneigenschaften“ sichtbar.

  • Nehmen Sie im Bedienfeld „Layer-Eigenschaften“ eine Änderung vor und sehen Sie, wie die Änderung sofort auf die Karte angewendet wird.
  • Öffnen Sie das Bedienfeld „Ebeneneigenschaften“ mit der Aktion in der Ebenensteuerung und sehen Sie, wie dasselbe Bedienfeld angezeigt wird. Wenn Sie Änderungen in einem Panel vornehmen und anwenden, wird auch das andere Panel aktualisiert.
  • Wählen Sie einen anderen Layer auf der Karte aus, und das Bedienfeld „Layer-Eigenschaften“ zeigt das Bedienfeld für den neu ausgewählten Layer an.

Lucy Lightspeed: Benutzeroberfläche für benutzerdefinierte Karten Samples.lucy.lightspeed.map.guifactory.Main

Dieses Beispiel zeigt, wie Sie die Benutzeroberfläche der Lightspeed-Karten in Lucy anpassen.

Die Benutzeroberfläche wird angepasst, indem eine benutzerdefinierte Erweiterung von TLcyLspMapAddOn ( LspMapAddOn ) eingefügt wird, die die createGUIFactory -Methode überschreibt. Die überschriebene Methode gibt eine benutzerdefinierte TLcyLspMapComponentFactory- und TLcyLspMapLayerControlFactory-Erweiterung zurück.

Die LspMapComponentFactory erweitert TLcyLspMapComponentFactory und bietet die folgenden Anpassungen an der Karte:

  • Fügt die gnomonische Projektion zum Kombinationsfeld hinzu und Karte | Projektionsmenü
  • Der Lineal-Controller wurde entfernt.
  • Die Symbolleiste befindet sich nicht mehr oben auf der Karte, sondern wurde nach unten verschoben.
  • Oben links wird ein interaktives Overlay-Panel hinzugefügt.

Die LspMapLayerControlFactory erweitert TLcyLspMapLayerControlFactory und bietet die folgenden Anpassungen für das Layer-Steuerelement:

  • Die Schaltfläche Löschen wurde für SHP-Layer deaktiviert.
  • Die Checkboxen für die Sichtbarkeit aller Layer wurden deaktiviert.

Weitere Informationen zum Anpassen der Lightspeed-Karte finden Sie im Lucy-Entwicklerhandbuch.

Anweisungen

Beim Start lädt das Beispiel bequem einen Arbeitsbereich, der bereits eine Lightspeed-Karte enthält, zu der ein zusätzlicher SHP-Layer hinzugefügt wurde. Beachten Sie, wie die Benutzeroberfläche der Lightspeed-Karte angepasst wurde.

Lucy Lightspeed: mehrere Typen von Kartenkomponenten Samples.lucy.lightspeed.missionmap.Main

Dieses Beispiel veranschaulicht, wie Sie mehrere Lightspeed-Kartenkomponententypen verwenden können, wobei jeder Kartenkomponententyp seine eigenen spezifischen Einstellungen hat.

Das Beispiel definiert zwei Arten von Kartenkomponenten: eine Karte zur Vorbereitung einer Mission und eine Karte, die während der Durchführung dieser Mission verwendet werden kann. In der Ausführungsansicht werden die meisten gängigen Aktionen entfernt, sodass nur eine grundlegende Navigation möglich ist.

Die verschiedenen Kartentypen sind in der benutzerdefinierten Konfigurationsdatei für das TLcyLspMapAddOn definiert: MissionMap_TLcyLspMapAddOn.cfg. In dieser Datei werden ein Vorbereitungs- und Vorschaukartenkomponententyp definiert, die beide eine benutzerdefinierte Konfigurationsdatei verwenden. Diese benutzerdefinierten Konfigurationsdateien stellen sicher, dass jeder Kartenkomponententyp über eine spezifische Benutzeroberfläche verfügt.

Die Probe beginnt mit einer Vorbereitungsansicht. Der oberen Symbolleiste wurde eine zusätzliche Schaltfläche zum Wechseln von Missionen hinzugefügt. Mit dieser Schaltfläche können Sie neben der Registerkarte Missionsvorbereitung eine zusätzliche Registerkarte Missionsvorschau erstellen, um eine Vorschau der Ausführungsansicht während der Vorbereitung dieser Mission zu erhalten. Diese Schaltfläche löst die PreviewMapAction aus, die veranschaulicht, wie Sie die API des TLcyLspMapAddOn verwenden können, um eine neue Karte zu erstellen und sie der Benutzeroberfläche hinzuzufügen.

Weitere Informationen zur Verwendung mehrerer Lightspeed-Kartenkomponententypen und Kartenanpassungen finden Sie im Lucy-Entwicklerhandbuch.

Anweisungen

Die Probe beginnt mit der aktiven Vorbereitungsansicht. Laden Sie einige Daten, nehmen Sie einige Änderungen am Stil dieser Daten vor, . .

Klicken Sie auf die Schaltfläche zum Missionswechsel, die der oberen Symbolleiste hinzugefügt wurde, um neben der Registerkarte Missionsvorbereitung eine zusätzliche Registerkarte Missionsvorschau zu erstellen, um eine Vorschau der Ausführungsansicht während der Vorbereitung dieser Mission zu erhalten.

Wie gezeigt, werden in der Ausführungsansicht die meisten üblichen Aktionen entfernt, sodass nur eine grundlegende Navigation möglich ist: Es wird unmöglich, Ebenen zu laden, zu entfernen oder anzupassen und die Lineal-Schaltfläche, die Auswahlschaltfläche und die meisten Menüpunkte verschwinden.

Beachten Sie auch, dass Layer und Layereinstellungen, die in der Vorbereitungsansicht hinzugefügt oder geändert wurden, beim Öffnen der Ausführungsansicht nicht verloren gehen.

Lucy: Oculus-Beispiel Samples.lucy.lightspeed.oculus.Main

Dieses Beispiel zeigt, wie Sie eine Oculus-Ansicht integrieren.

Das OculusAddOn fügt dem Popup-Menü, das erscheint, wenn auf ein Objekt auf der Karte geklickt wird, zwei Optionen hinzu. Wenn die Option 'Oculus (Track)' ausgewählt ist, wird die OculusTrackAction ausgelöst. Diese Aktion erstellt eine Oculus-Ansicht mit dem TLspViewBuilder und TLspOculusDeviceBuilder .

Wenn die Oculus-Ansicht erstellt wird, wird der Oculus-Ansicht eine Blick-von-Beschränkung hinzugefügt, sodass die Kamera an der Position des ausgewählten Objekts positioniert wird. Dies geschieht mithilfe von TLspLookFromTrackingCameraConstraint3D . In der Hauptansicht wird eine Betrachtungskamera-Beschränkung hinzugefügt, um sicherzustellen, dass das ausgewählte Objekt in der Ansicht bleibt.

Die zweite Option löst die OculusOnTerrainAction aus, die eine Oculus-Ansicht mit einem darauf konfigurierten OculusMoveController öffnet. Die Kamera wird in der Oculus-Ansicht auf einer festen Höhe über dem Gelände positioniert.

Anweisungen

Wenn Sie mit der rechten Maustaste auf eine Position auf der Karte klicken, können Sie die Option zum Öffnen einer Oculus-Ansicht auswählen, bei der die Kamera über dem Gelände positioniert wird. Mit den Pfeiltasten können Sie sich frei bewegen.

Beachten Sie, dass die Oculus Rift nur unter Microsoft Windows unterstützt wird.

Lucy Lightspeed: domänenobjektspezifisches Styling Samples.lucy.lightspeed.style.customizablestyle.Main

Dieses Beispiel veranschaulicht, wie Sie von der Unterstützung des Lucy-Stils profitieren können, indem Sie einen ILspCustomizableStyler für Ihre Layer verwenden.

  • Arbeitsbereichsunterstützung für den Stil Ihrer Ebene.
  • Die Möglichkeit, den Stil Ihres Layers in einer Datei zu speichern, zum Beispiel mit der Datei | Option Ebenenstil speichern.
  • Eine Benutzeroberfläche, mit der Sie Ihren Stil zur Laufzeit ändern können (aufrufbar im Ebeneneigenschaftenfenster).

Die Unterstützung des Arbeitsbereichs und das Speichern des Stils werden ermöglicht, indem das SHPFormat von der ALcyLspStyleFormat-Klasse erweitert wird. Die Klasse javadoc dieses Formats dokumentiert, wann dieses Format verwendet werden kann. Die Hauptanforderung ist, dass die Erweiterung einen ILspCustomizableStyler als Styler auf den Layern verwendet.

Die Benutzeroberfläche wird vom TLcyLspLayerCustomizerAddOn bereitgestellt. Dieses Add-on kann solche Customizer-Panels für ILspCustomizableStyler-Instanzen erstellen. Weitere Informationen finden Sie in der Javadoc-Klasse dieses Add-Ons.

Weitere Informationen zur integrierten Stilunterstützung von Lucy finden Sie im Lucy-Entwicklerhandbuch.

Anweisungen

Das Beispiel wird mit einer Lightspeed-Karte geöffnet, die einen SHP-Layer enthält, der die Länder der Welt darstellt. Der Stil, mit dem das Land bemalt wird, hängt von der Bevölkerung des Landes ab. Kleine Länder sind weiß gestrichen, größere Länder pink.

Öffnen Sie das Ebeneneigenschaftenbedienfeld der Ebene „Länder“ und ändern Sie den Stil für die kleinen und großen Länder.

Lucy Lightspeed: Laden von Stilen aus einer Datei Samples.lucy.lightspeed.style.loading.Main

Dieses Beispiel veranschaulicht, wie Sie einen zuvor gespeicherten Stil laden und diesen geladenen Stil auf eine vorhandene Ebene anwenden.

Das Beispiel fügt Menüpunkte unter 'Karte | . hinzu Farbe', die es ermöglicht, den Stil der Ebene 'Welt' zu ändern.

Lucy hat das Konzept von ILcyLayerStyle : ein Objekt, das alle Stilinformationen einer Ebene repräsentiert. Ein solcher Layer-Stil kann in einem persistenten Speicher (z. B. in/aus einer Datei) gespeichert und aus diesem geladen und auf einen Layer angewendet werden. Dieses Beispiel veranschaulicht beide Mechanismen.

Der wichtigste Code dieses Beispiels befindet sich in der Methode ChangeStyleAction#loadStyle. Zuerst wird der Layer-Stil mithilfe der verfügbaren ILcyLayerStyleProvider-Instanzen aus dem Layer abgerufen. Wenn der Ebenenstil gefunden wird, werden die in der Datei gespeicherten Einstellungen auf diesen Ebenenstil angewendet, indem ein ILcyLayerStyleCodec verwendet wird.

Das Beispiel zeigt auch, wie der anwendungsweite Auswahlstil, wie er von TLcyLspStyleRepositoryAddOn bereitgestellt wird, über die API geändert werden kann. Dies wird in der Methode ChangeStyleAction#updateSelectionStyleColors demonstriert.

Das Beispiel fügt der Karte Menüelemente hinzu | Menü Farben, das es ermöglicht, den Stil der vorhandenen Ebenen auf einige vordefinierte Werte zu ändern. Wechseln Sie zwischen den verschiedenen Farben und beobachten Sie, wie der Stil auf die Weltebene angewendet wird. Beachten Sie, wie sich der standardmäßige anwendungsweite Auswahlstil von Orange zu Weiß ändert, wenn Sie zu einem der vordefinierten Stile wechseln.

Anweisungen

Verwenden Sie die 'Karte | Menüelemente der Farben, um den Stil der Weltebene zu ändern. Beachten Sie, wie auch der Auswahlstil angepasst wird.

Lucy Lightspeed: Beispiel für einen modifizierten Linienstil-Anpasser Samples.lucy.lightspeed.style.modifiedlinestylecustomizer.Main

Dieses Beispiel demonstriert eine der Anpassungsoptionen für die Lightspeed 'Layer Properties'-Panels.

Die meisten Lightspeed-Layer verwenden ein 'Layer Properties'-Panel, das vom TLcyLspLayerCustomizerAddOn bereitgestellt wird. Dieses Add-On bietet ein Panel, mit dem die Stileinstellungen geändert werden können, wenn der Layer einen ILspCustomizableStyler verwendet. Es bietet auch einen Mechanismus zum Ändern von Teilen dieses Panels oder zum Erstellen eines eigenen Panels, das Teile der Standardbenutzeroberfläche wiederverwendet. Weitere Informationen finden Sie im Klassen-Javadoc des TLcyLspLayerCustomizerAddOn.

In diesem Beispiel wurde die Standardbenutzeroberfläche zum Anpassen des Linienstils durch eine benutzerdefinierte Benutzeroberfläche ersetzt. Dies wird durch die Registrierung einer ILcyCustomizerPanelFactory für TLcyLspCustomizableStyleContexts auf dem Lucy-Backend erreicht (siehe CustomLineStyleAddOn#plugInto ). Alle diese Kontexte sollten einen oder mehrere TLspCustomizableStyles enthalten, die TLspLineStyles umschließen. Das vom TLcyLspLayerCustomizerAddOn erstellte Panel verwendet die registrierten ILcyCustomizerPanelFactory-Instanzen des Lucy-Back-Ends, um seine Benutzeroberfläche zu erstellen.

Es wird dringend empfohlen, den Lightspeed-Styling-Teil im Lucy-Entwicklerhandbuch zu lesen, bevor Sie den Code dieses Beispiels durchgehen. Das Lucy-Entwicklerhandbuch bietet einen allgemeinen Überblick über die Unterstützungs- und Anpassungsoptionen für den Lucy-Stil. Dieses Wissen erleichtert das Verständnis des Codes in diesem Beispiel.

Anweisungen

Das Beispiel beginnt mit einer Lightspeed-Ansicht, der die Ebene „Trajectories“ hinzugefügt wird. Öffnen Sie das Bedienfeld „Ebeneneigenschaften“ dieser Ebene und beachten Sie, wie die Standardbenutzeroberfläche zum Ändern des Linienstils durch eine benutzerdefinierte Benutzeroberfläche ersetzt wurde.

Lucy Lightspeed: Neues Symbolstilbeispiel Samples.lucy.lightspeed.style.newiconstyle.Main

Dieses Beispiel demonstriert eine der Anpassungsoptionen für die Lightspeed 'Layer Properties'-Panels.

Die meisten Lightspeed-Layer verwenden ein 'Layer Properties'-Panel, das vom TLcyLspLayerCustomizerAddOn bereitgestellt wird. Dieses Add-On bietet ein Panel, mit dem die Stileinstellungen geändert werden können, wenn der Layer einen ILspCustomizableStyler verwendet. Es bietet auch einen Mechanismus zum Ändern von Teilen dieses Panels oder zum Erstellen eines eigenen Panels, das Teile der Standardbenutzeroberfläche wiederverwendet. Weitere Informationen finden Sie im Klassen-Javadoc des TLcyLspLayerCustomizerAddOn.

In diesem Beispiel werden Teile der Standardbenutzeroberfläche wiederverwendet, um ein benutzerdefiniertes Panel für ein bestimmtes Format zu erstellen. Dieses Beispiel lädt nicht das Standard-TLcyLspSHPFormatAddOn, sondern ersetzt es durch das SHPFormatAddOn . Dieses SHPFormatAddOn fügt ein eigenes Format hinzu, das es ermöglicht, SHP-Daten mit Punkten zu visualisieren. Darüber hinaus überschreibt es die createLayerCustomizerPanelFactories-Methode, um ein benutzerdefiniertes Layer-Eigenschaftenfenster für diese SHP-Layer bereitzustellen. Das benutzerdefinierte Bedienfeld enthält nur eine Benutzeroberfläche für die allgemeinen Ebeneneinstellungen (z. B. sichtbar, auswählbar, . ) und eine Benutzeroberfläche zum Anpassen des verwendeten Symbols.

Es wird dringend empfohlen, den Lightspeed-Styling-Teil im Lucy-Entwicklerhandbuch zu lesen, bevor Sie den Code dieses Beispiels durchgehen. Das Lucy-Entwicklerhandbuch bietet einen allgemeinen Überblick über die Unterstützungs- und Anpassungsoptionen für den Lucy-Stil. Dieses Wissen erleichtert das Verständnis des Codes in diesem Beispiel.

Anweisungen

Das Beispiel beginnt mit einer Lightspeed-Ansicht, der die Ebene 'city_125' hinzugefügt wird. Öffnen Sie das Bedienfeld „Ebeneneigenschaften“ dieser Ebene und beachten Sie, dass das Bedienfeld keine Registerkarten mehr enthält, sondern alle Informationen in einem Bedienfeld bereitstellt. Das Panel bietet auch eine Benutzeroberfläche zum Anpassen des Symbolstils.

Lucy: Laden von Stilen aus Datei Samples.lucy.loadstyle.Main

Dieses Beispiel veranschaulicht, wie Sie einen zuvor gespeicherten Stil laden und diesen geladenen Stil auf eine vorhandene Ebene anwenden.

Das Beispiel fügt Menüpunkte unter 'Karte | . hinzu Farbe', die es ermöglicht, den Stil der Ebene 'Welt' zu ändern.

Lucy hat das Konzept von ILcyLayerStyle : ein Objekt, das alle Stilinformationen einer Ebene repräsentiert. Ein solcher Layer-Stil kann in einem persistenten Speicher (z. B. in/aus einer Datei) gespeichert und aus diesem geladen und auf einen Layer angewendet werden. Dieses Beispiel veranschaulicht beide Mechanismen.

Der wichtigste Code dieses Beispiels befindet sich in der Methode ChangeStyleAction#actionPerformed. Das Lesen der Stildatei und das Erstellen des ILcyLayerStyle erfolgt mithilfe der ILcdGXYLayerDecoder-Instanzen, die auf dem Lucy-Backend verfügbar sind.

Sobald der ILcyLayerStyle erstellt wurde, wird er mithilfe der verfügbaren ILcyLayerStyleProvider-Instanzen auf den Layer 'World' angewendet.

Anweisungen

Verwenden Sie den Menüpunkt unter 'Karte | Color', um den Stil der Weltebene zu ändern.

Lucy: Druckprobe Muster.lucy.printing.Main

Dieses Beispiel zeigt, wie Sie die Druckfunktion in Lucy anpassen.
Das Beispiel modifiziert den gedruckten Inhalt wie folgt:

Weitere Informationen zum Anpassen des Druckseitenlayouts, der Druckvorschau-Benutzeroberfläche und mehr finden Sie im Lucy-Entwicklerhandbuch.

Anweisungen

Öffnen Sie die Druckvorschau über die Schaltfläche 'Datei | Druckvorschau. ' auf einer 2D- oder 3D-Karte. Das Beispiel ändert die Seitenausrichtung in Querformat. Die Vorschau zeigt eine Seite mit Wasserzeichen, oben einen Kopfzeilentext und daneben eine Übersichtskomponente. Die Komponenten Legende, Maßstabssymbol und Maßstabsanzeige befinden sich auf der rechten Seite der Karte.
Wenn Sie das Ergebnis ausdrucken, sehen Sie im Ausdruck eine Titelseite.

Lucy-Schaukasten Proben.lucy.showcase.Main

Das Lucy Showcase-Beispiel veranschaulicht verschiedene Teile der LuciadLightspeed-Technologie und wie diese Technologie in Lucy integriert ist.
Das Beispiel enthält eine Reihe vordefinierter Arbeitsbereiche, die jeweils einen bestimmten Aspekt des Produkts hervorheben. Das Beispiel enthält auch eine Benutzeroberflächenkomponente, die eine Vorschau aller verfügbaren Arbeitsbereiche anzeigt. Die Benutzeroberfläche wird vom ThemeChooserAddOn-Beispiel-Add-On bereitgestellt.

Anweisungen

Öffnen Sie die Arbeitsbereichsübersicht, indem Sie auf das Symbol für die Themenauswahl unten in der linken Seitenleiste klicken. In der Übersicht sehen Sie ein Vorschaubild jedes Arbeitsbereichs. Klicken Sie auf eines der Bilder, um den Arbeitsbereich zu laden.

Hinzufügen eigener Arbeitsbereiche

Es ist möglich, dem Showcase-Beispiel eigene Arbeitsbereiche hinzuzufügen und vorhandene Arbeitsbereiche zu entfernen. Standardmäßig zeigt das Beispiel alle Arbeitsbereiche aus einem vordefinierten Ordner ( sample/lucy/showcase/themes ), aber Sie können dies in der Konfigurationsdatei samples/showcase/ThemeChooserAddOn.cfg ändern.

Wenn Sie Arbeitsbereiche aus diesem Ordner entfernen, werden sie aus dem Beispiel entfernt.

Sie fügen Unterstützung für einen zusätzlichen Arbeitsbereich hinzu, indem Sie diesem Ordner zusätzliche Dateien hinzufügen:

  • Eine Arbeitsbereichsdatei, zum Beispiel custom.lws . Beachten Sie, dass der Name der Arbeitsbereichsdatei den in der Benutzeroberfläche angezeigten Namen bestimmt. In diesem Beispiel zeigt die Benutzeroberfläche den Namen "custom".
  • Ein Vorschaubild mit demselben Namen wie der Arbeitsbereich, zum Beispiel custom.png. Lucy speichert automatisch ein solches Vorschaubild, wenn Sie einen Arbeitsbereich speichern. Sie können das von Lucy gespeicherte Standardvorschaubild jederzeit durch ein benutzerdefiniertes ersetzen.
  • Eine Anleitungs-HTML-Datei mit dem gleichen Namen wie der Arbeitsbereich, zum Beispiel custom.html. Die Anweisungen in dieser Datei werden beim Laden des Arbeitsbereichs unter der Karte angezeigt.

Lucy: Sync-Style-Beispiel Samples.lucy.syncstyle.Main

Dieses Beispiel hält den Stil mehrerer Ebenen synchron. Die Synchronisierung der Stile veranschaulicht mehrere Operationen an einem Ebenenstil:

  • Abrufen des ILcyLayerStyle mithilfe der verfügbaren ILcyLayerStyleProvider-Instanzen.
  • So hören Sie auf Änderungen im ILcyLayerStyle .
  • So kopieren Sie den Stil einer Ebene auf eine andere Ebene.

Das Abrufen des Ebenenstils und der Kopiervorgang werden in der Methode LayerStyleSynchronizer#copyLayerStyle angezeigt. Das Abhören von Änderungen eines vorhandenen Ebenenstils erfolgt durch Registrieren eines ILcdChangeListeners bei der ILcyLayerStyle-Instanz. Dies wird in der Methode LayerStyleSynchronizer#addLayer angezeigt.

Der Stilsynchronisierungsmechanismus funktioniert für alle Layer auf allen Karten. Die Layer müssen nur das gleiche Modell teilen (zum Beispiel durch Kopieren eines Layers von einer Karte in eine andere mit der Schaltfläche in der Layersteuerung), und die Stile werden synchron gehalten.

Dieser Synchronisationsmechanismus kann in der Menüleiste unter 'Karte | . abgeschaltet werden Ebenenstil synchronisieren“.

Anweisungen

Das Beispiel beginnt mit einer GXY- und einer Lightspeed-Karte. Die Trajektorien-Layer auf beiden Karten verwenden dasselbe Modell, sodass der Stil dieses Layers synchronisiert wird.

  1. Verwenden Sie das Ebeneneigenschaftenbedienfeld, um den Malstil der Ebene „Trajektorien“ in der ersten Karte anzupassen (z. B. die Füllfarbe zu ändern).
  2. Sehen Sie, wie dieselbe Änderung auf den Trajektorien-Layer der anderen Karte angewendet wird.
  3. Schalten Sie den Synchronisationsmechanismus mit der 'Map | Menüelement "Ebenenstil synchronisieren".
  4. Das Ändern des Ebenenstils einer der Trajektorien-Ebenen wirkt sich nicht mehr auf den Ebenenstil der anderen Trajektorien-Ebene aus.

Lucy: benutzerdefinierte Tabellenansicht Samples.lucy.tableviewext.Main

Lucy verfügt über integrierte Funktionen, um die mit Daten verknüpften Attribute in Tabellenansichten anzuzeigen. Dieses Beispiel veranschaulicht, wie Sie diese Tabellenansicht anpassen können.

Das Beispiel legt einen Renderer für die Tabelle fest, der den Text farbig und kursiv rendert. Der Symbolleiste der Tabelle wird eine Schaltfläche hinzugefügt, mit der die Farbe des Textes geändert werden kann.

Dieses Beispiel veranschaulicht auch das Konzept einer ALcyGUIFactory : eine Klasse, die für die Erstellung eines UI-Elements (normalerweise eines ganzen Panels) verantwortlich ist, das eine API zum Anpassen dieser UI bereitstellt. Die API ist so konzipiert, dass Sie nur Code für die Teile bereitstellen müssen, die Sie anpassen möchten, und alle anderen UI-Elemente wiederverwenden können.

Die TableViewGUIFactory zeigt, wie eine ALcyGUIFactory typischerweise im Lucy-Produkt implementiert wird. Die TableViewExtGUIFactory ist eine Erweiterung dieser TableViewGUIFactory , die veranschaulicht, wie Sie die ALcyGUIFactory-API verwenden können, um Teile der Benutzeroberfläche anzupassen und den Rest wiederzuverwenden.

Weitere Informationen zum ALcyGUIFactory-Konzept finden Sie im Lucy-Entwicklerhandbuch.

Beachten Sie, dass der Quellcode der Tabellenansicht in jedem Release enthalten ist. Wenn Sie Anpassungen vornehmen möchten, die über das Angebot der Beispiel-API hinausgehen, können Sie den Quellcode direkt ändern. Die Klasse javadoc des TLcyToteAddOn (das offizielle Add-On für die Tabellenansicht) dokumentiert die Schritte, die Sie ausführen müssen, um das Standard-Add-On durch ein angepasstes Add-On zu ersetzen.

Anweisungen

Das Beispiel beginnt mit einer Tabellenansicht für den Welt-Layer. Der Inhalt der Spalte 'CAPITAL' wird fett, kursiv und blau dargestellt.

  • Klicken Sie auf die zusätzliche Schaltfläche in der Symbolleiste (das rote A) und sehen Sie, wie sich die Farbe der 'CAPITAL' ändert.
  • Speichern und laden Sie den Arbeitsbereich und sehen Sie, wie die zuletzt verwendete Farbe beim Laden des Arbeitsbereichs wiederhergestellt wird.

Detaillierte Anweisungen zur Verwendung der regulären Tabellenansicht finden Sie in 'LucyUserGuide.pdf' im Abschnitt 'Tote'.

Lucy: Flugbahn Proben.lucy.trajectory.Main

Dieses Beispiel fügt Lucy Unterstützung für ein bearbeitbares, zeitabhängiges Format hinzu. Die Daten enthalten Flugbahnen von Flugzeugen und ermöglichen die Visualisierung der Position des Flugzeugs während des Fluges. Es unterstützt:

  • Hinzufügen und Entfernen von Trajektorien mithilfe eines Controllers auf der Karte.
  • Bearbeiten vorhandener Trajektorien.
  • Integration mit der Lucy-Previewer-Benutzeroberfläche, damit der Benutzer die Position des Flugzeugs entlang der Flugbahn im Laufe der Zeit visualisieren kann.
  • Speichern und Laden der Flugbahndaten in und von Dateien auf der Festplatte.

Das Beispiel fügt dafür zwei Add-Ons hinzu:

  • TrajectoryModelAddOn : Dieses Add-On unterstützt die Modellierung der Trajektoriendaten.
  • TrajectoryAddOn : Dieses Add-On bietet Visualisierungsunterstützung für die Trajektoriendaten auf einer Lightspeed-Karte sowie den Controller zum Erstellen neuer Trajektorien auf der Karte.

Die Produktdokumentation enthält einige Artikel mit weiteren Informationen zur in diesem Beispiel verwendeten Produkt-API:

    : Dieser Artikel enthält weitere Informationen zur Unterstützung eines benutzerdefinierten Datenformats mit zeitabhängigen Informationen. : In diesem Artikel wird erläutert, wie Sie Ihre Daten auf der Festplatte speichern.
  • Hinzufügen von Unterstützung für benutzerdefinierte bearbeitbare Daten zu einer Lightspeed-Ansicht: In diesem Artikel wird erläutert, wie Sie Unterstützung zum Visualisieren und Bearbeiten von Daten auf einer Lightspeed-Karte in Lucy hinzufügen.
Anweisungen
  • Verwenden Sie die Schaltflächen in der Symbolleiste unter der Karte, um einem vorhandenen Layer neue Trajektorien hinzuzufügen oder einen neuen Trajektorienlayer zu erstellen.
  • Erstellen Sie eine neue Flugbahn.
  • Sie können den Erstellungsvorgang mit 'Bearbeiten | . rückgängig machen und wiederholen Rückgängig' und 'Bearbeiten | Wiederholen'.
  • Verwenden Sie 'Datei | Speichern unter', um die geänderte Flugbahnebene auf der Festplatte zu speichern.
  • Verwenden Sie 'Datei | Öffnen', um die im vorherigen Schritt gespeicherte Datei zu laden und zu sehen, wie alle Daten genau so wiederhergestellt werden, wie sie gespeichert wurden. Beachten Sie, dass die bewegte Spur nur sichtbar ist, wenn die Lucy-Vorschau aktiv ist.
  • Öffnen Sie das Vorschaufenster. Am Anfang der Trajektorie wird eine sich bewegende Spur hinzugefügt.
  • Verwenden Sie die Vorschau-Steuerelemente, um die Spur auf der Flugbahn zu verschieben.

Lucy: Workspace-Beispiel Samples.lucy.workspace.Main

Das standardmäßige TLcyWorkspaceAddon bietet unter anderem die Aktionen 'Arbeitsbereich öffnen' und 'Arbeitsbereich speichern (unter)'. Dieses Beispiel zeigt, wie Sie die Funktionalität hinter diesen Aktionen wiederverwenden können, während Sie die volle Kontrolle über die Benutzeroberfläche haben, die dem Benutzer angezeigt wird, und die Zeichenfolgen, die an den Arbeitsbereichsmanager übergeben werden.

Ein Beispiel für einen Anwendungsfall, bei dem Sie die Benutzeroberfläche und die Zeichenfolgen anpassen möchten, ist, die Arbeitsbereiche in einer Datenbank statt im Dateisystem zu speichern.

Dieses Beispiel veranschaulicht den Anwendungsfall, bei dem Sie die Arbeitsbereiche in einem hartcodierten Verzeichnis speichern und die Arbeitsbereiche aus demselben Verzeichnis laden möchten. Wenn Sie die Aktion 'Arbeitsbereich öffnen' auslösen, wird Ihnen ein modales Dialogfeld mit einer Fortschrittsanzeige angezeigt (siehe Methode ChooseFromListWorkspaceAddOn.selectWorkspaceToOpen).
Gleichzeitig wird in einem Hintergrundthread das hartcodierte Verzeichnis nach vorhandenen Arbeitsbereichen durchsucht (siehe die FileRetrievalSwingWorker-Klasse). Sobald der Hintergrundthread abgeschlossen ist, wird der Dialog aktualisiert und der Benutzer kann einen Arbeitsbereich auswählen. Der ausgewählte Arbeitsbereich wird in einen Pfad umgewandelt, der an den Arbeitsbereichsmanager übergeben wird.

Beim Speichern eines Arbeitsbereichs muss der Benutzer nur einen Namen für den Arbeitsbereich eingeben (siehe Methode ChooseFromListWorkspaceAddOn.selectWorkspaceDestination). Der Name wird in einen Pfad im hartcodierten Verzeichnis konvertiert und an den Arbeitsbereichsmanager übergeben.

Da das Beispiel weiterhin mit dateibasierten Arbeitsbereichen funktioniert und Dateipfade an den TLcyWorkspaceManager übergibt, muss der ALcyWorkspaceCodec auf dem TLcyWorkspaceManager nicht ersetzt werden. Der Standardcodec kann Dateipfade verarbeiten. Falls Sie die Arbeitsbereiche in einer Datenbank speichern, müssen Sie den Codec ersetzen.

Anweisungen

Verwenden Sie die 'Datei | Arbeitsbereich öffnen', um einen der Arbeitsbereiche aus dem hartcodierten Verzeichnis zu öffnen. Nehmen Sie einige Änderungen daran vor (z. B. laden Sie zusätzliche Daten) und verwenden Sie die Datei 'Datei | Aktion Arbeitsbereich speichern unter, um ihn unter einem neuen Namen zu speichern.

Dekodierung von ISO19139-Metadaten Samples.metadata.MainPanel

Dieses Beispiel demonstriert die Möglichkeit, Metadaten zu laden, die nach dem ISO 19139-Standardschema codiert sind.

Anweisungen

Klicken Sie auf die Schaltfläche Öffnen und wählen Sie eine Datei aus dem Ordner LuciadLightspeed/samples/resources/Data/metadata aus. Der zentrale Rahmen zeigt die Metadaten wie in der Datei kodiert an.

Metadatenverzeichnis gaze Samples.metadata.gazetteer.MainPanel

Dieses Beispiel demonstriert eine einfache Gazetteer-Funktionalität.

Einige Metadatendateien werden geladen und die geografische Ausdehnung der von ihnen beschriebenen Daten wird aus den Metadaten extrahiert und auf der Karte als Grenzen angezeigt.

Anweisungen

Doppelklicken Sie auf die Grenzen, um alle mit den Grenzen verknüpften Metadaten anzuzeigen.

Klicken Sie mit der rechten Maustaste, um die in den Metadaten beschriebenen Daten zu laden. Die Speicherorte der zu ladenden Datei werden aus den Metadaten extrahiert.

Oculus: Navigationssteuerung Samples.lightspeed.oculus.controller.MainPanel

Dieses Beispiel zeigt, wie Sie eine Oculus Rift-Ansicht erstellen und einen Controller hinzufügen, um die Kamera zu bewegen. Die standardmäßigen LuciadLightspeed-Controller können in einer Oculus-Ansicht nicht verwendet werden. Der in diesem Beispiel verwendete Controller platziert die Kamera immer auf einer festen Höhe über dem Gelände.

Anweisungen

Wenn die Probe gestartet wird, wird die Kamera knapp über dem Gelände positioniert. Mit der Auf- und Ab-Pfeiltaste können Sie sich vorwärts und rückwärts bewegen. Die Kamera bewegt sich entlang der Richtung, in die der Benutzer gerade schaut. Die linke und rechte Pfeiltaste dreht die Kamera.

GXY: Dynamische Daten anzeigen Samples.realtime.gxy.tracksimulator.MainPanel

Dieses Beispiel zeigt, wie Sie dynamische Spuren in einer GXY-Karte visualisieren.

Das Beispiel zeigt mehrere zufällige parabolische Trajektorien und animiert 2000 dynamische Spuren, die sich entlang dieser Trajektorien bewegen. Der Layer mit dynamischen Spuren wird mit einem TLcdSimulator mit einem benutzerdefinierten ALcdSimulatorModel simuliert.

Jede Spur hat ein Etikett, das ihre Kennung und den geerdeten Zustand der Spur anzeigt.

Anweisungen

Drücken Sie die „Play“-Taste, um die Simulation zu starten. Die Spuren beginnen sich über ihre individuellen Bahnen zu bewegen.

Während sich die Spuren bewegen, werden die Etiketten vorsichtig neu positioniert, um Überlappungen zu vermeiden. Wenn Sie mit der Maus über eine Beschriftung eines sich bewegenden Tracks fahren, wird die Bewegung gestoppt. In den seltenen Fällen, in denen Labels verwechselt werden, ziehen Sie sie an eine neue Position. Etiketten werden automatisch zurückgeschoben.

Ein Zeitschieberegler ermöglicht es, Ihren Fortschritt in der Simulation zu sehen. Wenn die Simulation nicht läuft, können Sie mit dem Schieberegler auch die "Simulationszeit" mit der Maus ändern.

Sie können den Wiedergabegeschwindigkeitsfaktor mit dem Schieberegler "Beschleunigung" anpassen.

Lightspeed: Dynamische Daten auf einer Karte und Zeitleiste anzeigen Samples.realtime.lightspeed.tracksimulator.MainPanel

Dieses Beispiel zeigt, wie Sie dynamische Spuren in einer Lightspeed-Map und Timeline visualisieren.

Die Stichprobe zeigt 2000 zufällige parabolische Bahnen und animiert 2000 dynamische Spuren, die sich entlang dieser Bahnen bewegen. Die dynamische Spurebene wird mit einem TLcdSimulator mit einem benutzerdefinierten ALcdSimulatorModel simuliert.

Tracks werden mit Flugzeugsymbolen visualisiert. In 3D-Projektionen verbindet eine Linie jedes Symbol mit seinem Nullpunkt. Jede Spur hat auch eine Spur aus grauen Punkten, die vorherige Positionen anzeigen. Der Pfad wird den Symbolen mithilfe eines benutzerdefinierten ILspStyler hinzugefügt. Die Spurbezeichnungen werden mit dem TLspContinuousLabelingAlgorithm , einem spezialisierten Algorithmus zum Bewegen von Objekten in einer Lightspeed-Ansicht, aufgeräumt.

Die Zeitleiste unten ist eine nicht georeferenzierte Lightspeed-Ansicht, die Sie schwenken und zoomen können.

Anweisungen

Drücken Sie die Schaltfläche "Play", um die Simulation zu starten. Die Tracks beginnen sich über ihre individuellen Trajektorien zu bewegen. Auch die Zeitansicht wird aktualisiert. Wenn Sie die Zeitansicht schwenken, wird auch die Simulation aktualisiert. Sie können die Wiedergabegeschwindigkeit anpassen, indem Sie in die Zeitleiste hinein- oder herauszoomen.

Wählen Sie in der Hauptansicht eine Ebene aus. Seine Höhe im Zeitverlauf wird in der Zeitansicht zusammen mit dem Namen seiner Lande- und Startstadt angezeigt.

Zoomen und schwenken Sie um die Welt, um zu sehen, wie die Beschriftungen der dynamischen Spuren je nach aktueller Situation automatisch entrümpelt werden. Sie können auch alle Spurbezeichnungen auswählen und verschieben.

GXY: Stilebenen mit SymbologyEncoding (SLD) Samples.ogc.sld.gxy.MainPanel

Der OGC Styled Layer Descriptor Standard beschreibt ein XML-Format, um den Stil einer Schicht zu beschreiben. Dieses Beispiel zeigt, wie Sie einen solchen Stil aus einer Datei decodieren und auf eine Ebene anwenden.

Die Anwendung zeigt eine Reihe von Ebenen und eine Reihe von Stilen an. Die Stile können auf die Ebenen angewendet werden. Einige der Stile sind spezifisch für eine bestimmte Ebene, während andere auf jede Ebene angewendet werden können.

Der Textbereich rechts zeigt die Beschreibung des Stils, wie er in der SLD-Datei definiert ist.

Anweisungen

Wählen Sie eine Ebene in der Ebenensteuerung und einen Stil in der Dropdown-Liste aus. Wenn Sie auf die Schaltfläche Anwenden klicken, wird versucht, den Stil auf die ausgewählte Ebene anzuwenden. Die Auswahl von 'Standard' in der Liste setzt den Stil der Ebene zurück.

Beispiel für GeoPackage-Encoder Samples.encoder.sqlite.geopackage.Main

Dies ist ein Befehlszeilenbeispiel. Klicken Mehr Info für Laufanweisungen.

Diese Anwendung zeigt, wie Sie mit TLcdGeoPackageModelEncoder räumliche Daten in eine GeoPackage-Datei codieren.

Führen Sie das Beispiel mit dem Shell-Skript im Beispielordner aus:

Übergeben Sie zwei Argumente an dieses Beispiel: eine Eingabedatei und eine (neue oder vorhandene) .gpkg-Datei.

Verwenden von WCS-Daten in einer 2D-GXY-Ansicht Samples.ogc.wcs.client.MainPanel

Dieses Beispiel demonstriert die Verwendung eines OGC Web Coverage Service (WCS) in einer Clientanwendung, die mit einer 2D-GXY-Ansicht ausgestattet ist, unter Verwendung der Luciad WCS-Client-API.

Mit der Client-API können Anwendungen ein "Proxy"-ILcdModel erstellen, das Abdeckungsdaten transparent vom WCS erhält.

Wenn eine Verbindung mit einem WCS-Dienst hergestellt wird, wird das Kombinationsfeld oben rechts im Beispiel mit der Liste der Abdeckungen gefüllt, die von diesem WCS angeboten werden. Diese Abdeckungen können ausgewählt und auf der Karte visualisiert werden.

Anweisungen

Während des Startvorgangs versucht das Beispiel, eine Verbindung zu einem von zwei standardmäßigen OGC WCS-Diensten herzustellen:

  • ein Luciad OGC WCS-Dienstbeispiel, das auf localhost unter Port 8080 (http://localhost:8080/LuciadOGCServices/wcs) ausgeführt wird. Wenn die OGC Web Services Suite verfügbar ist, kann dieser Dienst gestartet werden, indem das Beispiel sample.ogc.server.Main ausgeführt wird.
  • ein öffentlicher Luciad OGC WCS-Dienst (http://sampleservices.luciad.com/wcs).

Abfrage der Liste der verfügbaren Abdeckungen: Geben Sie eine URL in das Textfeld unter der Karte ein und klicken Sie auf die Schaltfläche "WCS-Dienst abfragen". Dadurch wird eine GetCapabilities-Anforderung an den Dienst gesendet und die Liste der verfügbaren Abdeckungen analysiert. Bei Erfolg werden die Coverages im Kombinationsfeld in der oberen rechten Ecke des Beispiels aufgelistet.

Coverage abrufen und visualisieren: Wählen Sie im Kombinationsfeld oben rechts im Sample ein Coverage aus. Klicken Sie auf die Schaltfläche "Get Coverage", um eine GetCoverage-Anfrage an den Dienst zu senden und die angeforderten Daten auf der Karte anzuzeigen.

Verwenden von WFS-Daten in einer 2D-GXY-Ansicht Samples.ogc.wfs.client.gxy.MainPanel

Dieses Beispiel demonstriert die Verwendung eines OGC Web Feature Service (WFS) in einer Clientanwendung, die mit einer 2D-GXY-Ansicht ausgestattet ist, unter Verwendung der Luciad WFS-Client-API.

Mit der Client-API können Anwendungen ein "Proxy"-ILcdModel erstellen, das auf transparente Weise Featuredaten von einem WFS erhält. Dieses WFS-Proxy-Modell kann optional mit einem OGC-Filter konfiguriert werden, der auf die Daten angewendet wird, und, wie im Beispiel, einem "maxfeatures"-Parameter, um die Anzahl der vom Dienst abgerufenen Features zu begrenzen.

Wenn eine Verbindung mit einem WFS-Dienst hergestellt wird, wird das Kombinationsfeld oben rechts im Beispiel mit der Liste der von diesem WFS angebotenen Funktionstypen aufgefüllt. Durch Auswahl eines Feature-Typs aus der Liste werden die Feature-Daten auf der Karte abgerufen und visualisiert. Sie können auch über das URL-Feld unter der Karte eine Verbindung zu anderen WFS-Diensten herstellen.

Anweisungen

Während des Startvorgangs versucht das Beispiel, eine Verbindung zu einem von zwei standardmäßigen OGC WFS-Diensten herzustellen:

  • ein Luciad OGC WFS-Dienstbeispiel, das auf localhost unter Port 8080 (http://localhost:8080/LuciadOGCServices/wfs) ausgeführt wird. Wenn die OGC Web Services Suite verfügbar ist, kann dieser Dienst gestartet werden, indem das Beispiel sample.ogc.server.Main ausgeführt wird.
  • ein öffentlicher Luciad OGC WFS-Dienst (http://sampleservices.luciad.com/wfs).

Um die Liste der verfügbaren Feature-Typen abzufragen, geben Sie einen Server ein und klicken Sie auf die Schaltfläche "Abfragen". Dadurch wird eine GetCapabilities-Anforderung an den Dienst gesendet und die Liste der verfügbaren Featuretypen analysiert. Bei Erfolg werden die Feature-Typen im Kombinationsfeld in der oberen rechten Ecke des Beispiels aufgelistet.

Um einen Feature-Typ zu visualisieren, wählen Sie ihn einfach aus dem Kombinationsfeld aus. Dadurch wird eine GetFeature-Anfrage für den ausgewählten Feature-Typ an den Service gesendet und ein Layer erstellt, um die abgerufenen Feature-Daten zu visualisieren.

Verwenden von WFS-Daten in einer 2D/3D-Lightspeed-Ansicht Samples.ogc.wfs.client.lightspeed.MainPanel

Dieses Beispiel zeigt, wie Sie einen OGC Web Feature Service (WFS) in einer Client-Anwendung verwenden, die mit einer 2D/3D-Lightspeed-Ansicht ausgestattet ist, unter Verwendung der Luciad WFS-Client-API.

Mit der Client-API können Anwendungen ein "Proxy"-ILcdModel erstellen, das auf transparente Weise Featuredaten von einem WFS erhält. Dieses WFS-Proxy-Modell kann optional konfiguriert werden Standardmäßig führt dies zu einer Karte, die geladen wird mit:

  • die Staaten und Flüsse der USA,
  • die Straßen und ein Rasterhintergrund von Washington DC,
  • ein blaues Polygon, das Kanada teilweise bedeckt.

Wenn eine Verbindung mit einem WFS-Dienst hergestellt wird, wird das Kombinationsfeld oben rechts im Beispiel mit der Liste der von diesem WFS angebotenen Funktionstypen aufgefüllt. Durch Auswahl eines Feature-Typs aus der Liste werden die Feature-Daten auf der Karte abgerufen und visualisiert. Sie können auch über das URL-Feld unter der Karte eine Verbindung zu anderen WFS-Diensten herstellen.

Anweisungen

Während des Startvorgangs versucht das Beispiel, eine Verbindung zu einem von zwei standardmäßigen OGC WFS-Diensten herzustellen:

  • ein Luciad OGC WFS-Dienstbeispiel, das auf localhost unter Port 8080 (http://localhost:8080/LuciadOGCServices/wfs) ausgeführt wird. Wenn die OGC Web Services Suite verfügbar ist, kann dieser Dienst gestartet werden, indem das Beispiel sample.ogc.server.Main ausgeführt wird.
  • ein öffentlicher Luciad OGC WFS-Dienst (http://sampleservices.luciad.com/wfs).

Um die Liste der verfügbaren Feature-Typen abzufragen, geben Sie einen Server ein und klicken Sie auf die Schaltfläche "Abfragen". Dadurch wird eine GetCapabilities-Anforderung an den Dienst gesendet und die Liste der verfügbaren Featuretypen analysiert. Bei Erfolg werden die Feature-Typen im Kombinationsfeld in der oberen rechten Ecke des Beispiels aufgelistet.

Um einen Feature-Typ zu visualisieren, wählen Sie ihn einfach aus dem Kombinationsfeld aus. Dadurch wird eine GetFeature-Anfrage für den ausgewählten Feature-Typ an den Service gesendet und ein Layer erstellt, um die abgerufenen Feature-Daten zu visualisieren.

Verwenden von ECDIS-Daten aus einem LuciadFusion WMS in einer 2D-GXY-Ansicht Samples.wms.client.ecdis.gxy.MainPanel

Dieses Beispiel zeigt, wie Sie ECDIS-Daten von einem LuciadFusion OGC Web Map Service (WMS) in einer WMS-Clientanwendung unter Berücksichtigung der S-52-Anzeigeeinstellungen abfragen.

Dieses Beispiel erfordert einen LuciadFusion WMS-Dienst, der SLD-basiertes S-52-Styling unterstützt.

Sie können das S-52-Anpassungsfeld auf der rechten Seite der Karte verwenden, um die Anzeigeeinstellungen für die ECDIS WMS-Layer zu optimieren. Der WMS-Client codiert die S-52-Anzeigeeinstellungen in eine S-52-SLD-Erweiterung und bettet diese SLD in die GetMap-Anforderung ein, die an den Server gesendet wird. Der Fusion WMS-Server gibt das ECDIS-Bild zurück, das mit den Einstellungen aus dem SLD gerendert wurde.

Anweisungen

Während des Startvorgangs versucht das Beispiel, eine Verbindung zu einem öffentlichen LuciadFusion OGC WMS-Dienst (http://sampleservices.luciad.com/wms) herzustellen. Darüber hinaus können Sie über das URL-Panel eine Verbindung zu anderen LuciadFusion WMS-Diensten herstellen.

Karteninteraktion: Die Symbolleiste bietet eine Reihe von Aktionen zum Navigieren und Interagieren mit der Karte. Dazu gehören die Möglichkeit zum Schwenken und Zoomen, zum Messen von Entfernungen und zum Umschalten der Projektion. Wenn die Auswahlprojektion nicht mit den verfügbaren Projekten im WMS-Service übereinstimmt, werden die Daten für den Benutzer vollständig transparent automatisch neu projiziert.

S-52-Anzeigeeinstellungen: Das S-52-Anzeigeeinstellungen-Anpassungsfeld rechts neben der Karte ermöglicht die Änderung der S-52-Anzeigeeinstellungen. Jede Änderung der Einstellungen löst sofort eine neue Abfrage an den WMS-Server mit aktualisierten S-52 SLD-Styling-Parametern aus und aktualisiert die Client-Ansicht entsprechend.

Verwenden von WMS-Daten in einer 2D-GXY-Ansicht Samples.wms.client.gxy.MainPanel

Dieses Beispiel zeigt, wie Kartendaten von einem OGC Web Map Service (WMS) abgerufen und in einer GXY (2D)-Ansicht visualisiert werden können.

Mit der Client-API können Anwendungen ein "Proxy"-ILcdModel erstellen, das Kartendaten transparent vom WMS erhält.

Wenn eine Verbindung zu einem WMS-Dienst hergestellt wird, wird die Layerliste oben rechts im Beispiel mit der Liste der Layer gefüllt, die von diesem WMS angeboten werden. Diese Layer können ausgewählt und auf der Karte visualisiert werden.

Sie können zwischen einer gekachelten und einer nicht gekachelten Malstrategie wechseln. Gekacheltes Malen bietet in der Regel eine bessere Leistung, während nicht gekacheltes Malen pixelgenaue Ergebnisse in einer 2D-Ansicht ermöglicht.

Das Beispiel demonstriert auch die Verwendung von WMS-Feature-Info-Requests. Wenn das WMS für GetFeatureInfo-Unterstützung wirbt, können Sie auf die Karte klicken. Dadurch werden zusätzliche Funktionsinformationen für diesen Standort vom Dienst angefordert. Wenn Feature-Informationen verfügbar sind, werden sie an der angeklickten Position als Overlay-Label auf der Karte angezeigt.

Das Beispiel demonstriert die Verwendung mehrdimensionaler Daten bei der Auswahl von WMS-Layern, für die der WMS-Server sie ankündigt.

Das Kontrollkästchen "WMS automatisch aktualisieren" ist standardmäßig aktiviert, was bedeutet, dass das Beispiel bei jeder Schwenk-/Zoom-Aktion überprüft, ob die Fähigkeiten auf dem Server aktualisiert wurden. Alle Änderungen an den verfügbaren Layern werden automatisch angewendet, wenn auf dem Server neue Layer definiert werden, werden diese hinzugefügt. Layer, die auf dem Server nicht mehr verfügbar sind, werden automatisch entfernt.

Anweisungen

Während des Startvorgangs versucht das Beispiel, eine Verbindung zu einem von zwei standardmäßigen OGC WMS-Diensten herzustellen:

  • ein Luciad OGC WMS-Dienstbeispiel, das auf localhost unter Port 8080 (http://localhost:8080/LuciadOGCServices/wms) ausgeführt wird. Wenn die OGC Web Services Suite verfügbar ist, kann dieser Dienst gestartet werden, indem das Beispiel sample.ogc.server.Main ausgeführt wird.
  • ein öffentlicher Luciad OGC WMS-Dienst (http://sampleservices.luciad.com/wms).

WMS-Layer-Auswahl: Die Liste oben rechts in den Beispielen zeigt die verfügbaren WMS-Layer. Das An- und Abwählen von Layern löst eine Kartenaktualisierung unter Berücksichtigung der aktuellen WMS-Layer-Auswahl aus.

Karteninteraktion: Die Symbolleiste bietet eine Reihe von Aktionen zum Navigieren und Interagieren mit der Karte. Dazu gehören die Möglichkeit zum Schwenken und Zoomen, zum Messen von Entfernungen und zum Umschalten der Projektion. Wenn die Auswahlprojektion nicht mit den verfügbaren Projekten im WMS-Service übereinstimmt, werden die Daten für den Benutzer vollständig transparent automatisch neu projiziert.

Maleinstellungen: Deaktivieren Sie das gekachelte Kontrollkästchen im Bedienfeld. Die Update-Latenz wird erhöht, aber die Ergebnisse sind jetzt pixelgenau, wenn die Ansicht eine 2D-Referenz verwendet, die vom WMS-Server unterstützt wird.

Feature-Info: Klicken Sie auf die Fadenkreuz-Schaltfläche in der Symbolleiste, um den Feature-Info-Controller zu aktivieren. Ein Klick auf die Städte oder Flüsse der USA oder auf die Straßen von Washington DC zeigt eine Beschriftung mit den Feature-Informationen neben dem angeklickten Punkt, falls vorhanden.

Aktivieren Sie das Kontrollkästchen "WMS automatisch aktualisieren", damit die Anwendung bei jeder Schwenk- oder Zoomaktion nach neuen/entfernten WMS-Ebenen sucht. Bei Verwendung mit dem Luciad WMS-Beispieldienst kann man Daten in die Beispiele/Ressourcen/Daten/Dynamik Ordner, um diese Funktion auszuprobieren. Folgende Datenformate werden unterstützt: SHP, MIF, CADRG, DMED, DEM, GeoTIFF, Raster (.rst), ETOPO und ein benutzerdefiniertes Format (.txt). Dieser Ordner wird alle 10 Sekunden überwacht. Wenn neue Daten gefunden oder Daten entfernt werden, werden die angekündigten Layer in den WMS-Funktionen automatisch aktualisiert, und die Client-Stichprobe übernimmt die Änderungen automatisch. Neu hinzugefügte Daten sollten daher nach einer Schwenk- oder Zoom-Aktion bald am Client sichtbar werden.

Verwenden von WMS-Daten in einer 2D / 3D-Lightspeed-Ansicht Samples.wms.client.lightspeed.MainPanel

Dieses Beispiel zeigt, wie Kartendaten von einem OGC Web Map Service (WMS) abgerufen und in einer Lightspeed-Ansicht visualisiert werden können.

Mit der Client-API können Anwendungen ein "Proxy"-ILcdModel erstellen, das Kartendaten transparent vom WMS erhält.

Wenn eine Verbindung zu einem WMS-Dienst hergestellt wird, wird die Layerliste oben rechts im Beispiel mit der Liste der Layer gefüllt, die von diesem WMS angeboten werden. Diese Layer können ausgewählt und auf der Karte visualisiert werden.

Sie können zwischen einer gekachelten und einer nicht gekachelten Malstrategie wechseln. Gekacheltes Malen bietet in der Regel eine bessere Leistung, während nicht gekacheltes Malen pixelgenaue Ergebnisse in einer 2D-Ansicht ermöglicht.

Das Beispiel demonstriert auch die Verwendung von WMS-Feature-Info-Requests. Wenn das WMS für GetFeatureInfo-Unterstützung wirbt, können Sie auf die Karte klicken. Dadurch werden zusätzliche Funktionsinformationen für diesen Standort vom Dienst angefordert. Wenn Feature-Informationen verfügbar sind, werden sie an der angeklickten Position als Overlay-Label auf der Karte angezeigt.

Das Beispiel demonstriert die Verwendung mehrdimensionaler Daten bei der Auswahl von WMS-Layern, für die der WMS-Server sie ankündigt.

Anweisungen

Während des Startvorgangs versucht das Beispiel, eine Verbindung zu einem von zwei standardmäßigen OGC WMS-Diensten herzustellen:

  • ein Luciad OGC WMS-Dienstbeispiel, das auf localhost unter Port 8080 (http://localhost:8080/LuciadOGCServices/wms) ausgeführt wird. Wenn die OGC Web Services Suite verfügbar ist, kann dieser Dienst gestartet werden, indem das Beispiel sample.ogc.server.Main ausgeführt wird.
  • ein öffentlicher Luciad OGC WMS-Dienst (http://sampleservices.luciad.com/wms).

WMS-Layer-Auswahl: Die Liste oben rechts in den Beispielen zeigt die verfügbaren WMS-Layer. Das An- und Abwählen von Layern löst eine Kartenaktualisierung unter Berücksichtigung der aktuellen WMS-Layer-Auswahl aus.

Karteninteraktion: Die Symbolleiste bietet eine Reihe von Aktionen zum Navigieren und Interagieren mit der Karte. Dazu gehören die Möglichkeit zum Schwenken und Zoomen, zum Messen von Entfernungen und zum Umschalten der Projektion. Wenn die Auswahlprojektion nicht mit den verfügbaren Projekten im WMS-Service übereinstimmt, werden die Daten für den Benutzer vollständig transparent automatisch neu projiziert.

Maleinstellungen: Deaktivieren Sie das gekachelte Kontrollkästchen im Bedienfeld. Die Update-Latenz wird erhöht, aber die Ergebnisse sind jetzt pixelgenau, wenn die Ansicht eine 2D-Referenz verwendet, die vom WMS-Server unterstützt wird.

Feature-Info: Klicken Sie auf die Fadenkreuz-Schaltfläche in der Symbolleiste, um den Feature-Info-Controller zu aktivieren. Ein Klick auf die Städte oder Flüsse der USA oder auf die Straßen von Washington DC zeigt eine Beschriftung mit den Feature-Informationen neben dem angeklickten Punkt, falls vorhanden.


5 Antworten 5

Wenn es sich um eine CSV-Datei handelt und Sie beim Trainieren Ihres Algorithmus nicht auf alle Daten gleichzeitig zugreifen müssen, können Sie sie in Blöcken lesen. Mit der Methode pandas.read_csv können Sie eine Datei in Blöcken wie folgt lesen:

Es gibt zwei Möglichkeiten: entweder du brauchen um alle Ihre Daten zur Verarbeitung im Speicher zu haben (z. B. möchte Ihr Algorithmus für maschinelles Lernen alles auf einmal verbrauchen), oder Sie können darauf verzichten (z. B. benötigt Ihr Algorithmus nur Stichproben von Zeilen oder Spalten auf einmal).

Im ersten Fall musst du ein Gedächtnisproblem lösen. Erhöhen Sie Ihren Speicher, mieten Sie eine Cloud-Maschine mit hohem Speicher, verwenden Sie Inplace-Operationen, geben Sie Informationen über die Art der Daten an, die Sie einlesen, stellen Sie sicher, dass Sie alle nicht verwendeten Variablen löschen und Müll sammeln usw.

Es ist sehr wahrscheinlich, dass 32 GB RAM für Pandas nicht ausreichen, um Ihre Daten zu verarbeiten. Beachten Sie, dass die Ganzzahl "1" nur ein Byte ist, wenn sie als Text gespeichert wird, aber 8 Byte, wenn sie als int64 dargestellt wird (was der Standard ist, wenn Pandas sie aus Text einliest). Sie können das gleiche Beispiel mit einer Gleitkommazahl "1.0" erstellen, die standardmäßig von einem 3-Byte-String auf einen 8-Byte-Float64 erweitert wird. Sie können etwas Platz gewinnen, indem Sie Pandas genau mitteilen, welche Typen für jede Spalte verwendet werden sollen, und die kleinstmöglichen Darstellungen erzwingen, aber wir haben hier noch nicht einmal angefangen, über Pythons Datenstruktur-Overhead zu sprechen, der hier oder da leicht ein oder zwei zusätzliche Zeiger hinzufügen kann , und Zeiger sind auf einem 64-Bit-Computer jeweils 8 Byte groß.

Um es zusammenzufassen: Nein, 32 GB RAM reichen Pandas wahrscheinlich nicht aus, um eine 20-GB-Datei zu verarbeiten.

Im zweiten Fall (der realistischer ist und wahrscheinlich auf Sie zutrifft) müssen Sie a . lösen Datenverwaltungsproblem. Tatsächlich kann es ein Zeichen für schlechtes Datenmanagement sein, alle Daten laden zu müssen, wenn Sie wirklich nur Teile davon für die Verarbeitung benötigen. Hier gibt es mehrere Möglichkeiten:


Punktwolkendaten sind wichtige Quellen für 3D-Geoinformationen. Eine Bestandsaufnahme der Benutzeranforderungen für das Punktwolken-Datenmanagement wurde anhand strukturierter Interviews mit Benutzern unterschiedlicher Herkunft erstellt: Regierung, Industrie und Wissenschaft. Basierend auf diesen Anforderungen wurde ein Benchmark entwickelt, um verschiedene Punktwolken-Datenmanagementlösungen hinsichtlich Funktionalität und Performance zu vergleichen. Der wichtigste Testdatensatz ist die zweite nationale Höhenkarte der Niederlande, AHN2, mit 6–10 Stichproben für jeden Quadratmeter des Landes, was 640 Milliarden Punkte ergibt. Auf Datenbankebene steht in Oracle und PostgreSQL ein Datenspeichermodell zur Verfügung, das auf der Gruppierung der Punkte in Blöcken basiert. Dieses Modell wird mit dem „Flat Table“-Modell verglichen, bei dem jeder Punkt in einer Tabellenzeile gespeichert wird, in Oracle, PostgreSQL und dem Spaltenspeicher MonetDB. Darüber hinaus wird die häufig verwendete dateibasierte Lösung Rapidlasso LAStools zum Abgleich mit den Datenbanklösungen verwendet. Die Ergebnisse der Durchführung des Benchmarks auf verschiedenen Plattformen werden so präsentiert, wie sie in den immer anspruchsvolleren Phasen mit mehr Funktionalität und mehr Daten erzielt wurden: Mini (20 Millionen Punkte), Medium (20 Milliarden Punkte) und Full Benchmark (der komplette AHN2).

Während des Designs, der Implementierung und der Ausführung der Benchmarks wurden eine Reihe von Verbesserungen beim Punktwolken-Datenmanagement vorgeschlagen und teilweise getestet: Morton/Hilbert-Code zum Ordnen von Daten (insbesondere im flachen Modell), zwei Algorithmen zur parallelen Abfrageausführung und a einzigartige vario-skalige LoD-Datenorganisation, die die Dichtesprünge der bekannten diskreten LoD-Datenorganisationen vermeidet.


OGR 1.9.0 - Übersicht der Änderungen

  • RFC35: OGRLayer::DeleteField?(), ReorderField?(), ReorderFields?() und AlterFieldDefn?() hinzufügen
  • Vermeiden Sie OGRLineString::addPoint( OGRPoint * poPoint ), um immer eine 3D-Geometrie zu erzwingen (#3907)
  • Fügen Sie ein OGREnvelope3D-Objekt und die Methode getEnvelope( OGREnvelope3D * psEnvelope ) / OGR_G_GetEnvelope3D() hinzu
  • OGR_G_SimplifyPreserveTopology() / OGRGeometry::SimplifyPreserveTopology?() hinzufügen
  • OGR SQL: Erkenne optionale ESCAPE escape_char-Klausel
  • OGR SQL: Erlaube NULL als Wert zu verwenden, damit 'SELECT *, NULL FROM foo funktioniert'
  • OGR SQL: Akzeptiere doppelte Anführungszeichen von column_name in 'SELECT DISTINCT "column_name" FROM table_name' (#3966)
  • OGR SQL: OGRGenSQLResultsLayer: Wenn der Dialekt explizit auf OGRSQL gesetzt ist, propagiere die WHERE-Klausel des SELECT nicht an die Quellschicht, sondern werte sie stattdessen auf der OGRGenSQLResultsLayer-Ebene aus (#4022)
  • OGR SQL: Fehleremission bei Anfragen wie 'SELECT MIN(EAS_ID), COUNT(*) FROM POLY' vermeiden
  • OGR SQL: Vermeiden Sie die Einstellung von Breite/Genauigkeit für AVG-Spalte
  • OGR SQL: Fügen Sie einen Mechanismus zum Löschen einer Ebene hinzu (DROP TABLE x)
  • OGR SQL: Segfault bei Auswertung eines 'IS NULL' in einer Float-Spalte behoben (#4091)
  • OGR SQL: Unterstützung für neue Spezialbefehle hinzugefügt: 'ALTER TABLE Layername ADD COLUMN Spaltenname Spaltentyp', 'ALTER TABLE Layername RENAME COLUMN alter Name TO neuer Name', 'ALTER TABLE Layername ALTER COLUMN Spaltenname TYPE Spaltentyp', 'ALTER TABLE Layername DROP COLUMN Spaltenname '
  • OGR SQL: Implizite Konvertierung von String zu Numerisch hinzufügen (#4259)
  • OGR SQL: Große SQL-Anweisungen richtig parsen (#4262)
  • OGR SQL: Korrigiert das Verbinden einer Float-Spalte mit einer String-Spalte (#4321)
  • OGR SQL: Betrachten Sie mit DISTINCT Nullwerte als solche und nicht als leere Zeichenfolge (#4353)
  • OGR SQL: Korrektur der Offset-Konvertierung für SUBSTR() (#4348)
  • OGR_G_GetPoints() hinzufügen
  • Fehler beim Parsen von WKT-Geometrien beim Mischen von 2D- und 3D-Teilen
  • OGR_Dr_CopyDataSource() und OGRSFDriver::CopyDataSource?() : Stellen Sie sicher, dass der Treiber an die erstellte Datenquelle angehängt ist (#4350)
  • OGRFeature::SetFrom?() unterstützt mehr Konvertierungen zwischen Feldtypen.
  • Update auf EPSG 7.9-Datenbank
  • Geozentrische SRS-Unterstützung hinzufügen
  • Unterstützung für Interrupted Goode Homolosine-Projektion (#4060) hinzugefügt
  • Unterstützung für vertikale SRS-Einheiten hinzufügen
  • SetVertCS(), OSRSetVertCS(), SetCompound?(), IsCompound?() und zielorientierte Funktionen zum Setzen/Erhalten von linearen Einheiten hinzufügen
  • ESRI : Sphäroid-Neuzuordnung verbessern (#3904)
  • ESRI: Vergleiche ganze Namen in RemapNameBasedOnKeyName?() (#3965).
  • ESRI: Hinzufügen der Methoden ImportFromESRIStatePlaneWKT und ImportfromESRIWisconsinWKTKT
  • ESRI: importFromESRI() : unterstützt die POLYCONIC-Projektion aus Dateien im alten Stil (#3983)
  • ESRI: importFromESRI() : unterstützt LAMBERT_AZIMUTHAL-Projektion aus Dateien im alten Stil (#4302)
  • ESRI: EPSG:32161-Mapping behoben
  • ESRI: Stereo/Oblique_Stereo/Double_Stereo behoben (Fehler #1428 und #4267)
  • ESRI: Korrektur der Projektionsparameterzuordnung für die orthographische Projektion (#4249)
  • ESRI: optionale Befestigung von TOWGS84, DATUM und GEOGCS mit GDAL_FIX_ESRI_WKT config. Option (#4345 und #4378)
  • ESRI: Krassowsky/Krasovsky hinzugefügt? 1940 Sphäroid-Mapping
  • EPSG:102113 in der Datei data/esri_extra.wkt hinzufügenkt
  • Deutschland Zone 1-5 im Bereich 31491-31495 in der Datei data/esri_extra.wkt hinzufügen
  • NAD_1983_Oregon_Statewide_Lambert_Feet_Intl-Code beheben
  • Koordinatensysteme von IGNF hinzugefügt/aktualisiert (#3868)
  • ERM: Unterstützung für EPSG:n-basierte Koordinatensysteme hinzufügen (#3955)
  • ImportFromEPSG(): Standardunterstützung für verschiedene Gradeinheiten hinzufügen, ohne .csv-Datei zu unterstützen.
  • ImportFromEPSG(): Unterstützung für sphärische LAEA hinzugefügt (#3828)
  • ImportFromEPSG(): CoLatConeAxis verwenden? Parameter zum Erstellen des Krovak-Azimut-Parameters (#4223)
  • importFromURN(): unterstützt zusammengesetzte SRS
  • importFromURN(): Akzeptieren Sie die Syntax 'urn:opengis:crs:', die in einigen TOP10NL-GML-Dateien zu finden ist
  • CRS hinzufügen: Unterstützung und zum Importieren von zweiteiligen ESRI PE SRS mit VERTCS () : 'IGNF:xxx' erkennen
  • Stellen Sie sicher, dass das Ergebnis von importFromEPSGA() immer die Reihenfolge der Schlüsselwörter korrigiert hat (#4178)
  • exportToERM() : Umgang mit dem GDA94-Datum und seinen UTM-Projektionen (#4208)
  • Fix ESRI_DATUM_NAME für D_MOLDREF99 und D_Philippine_Reference_System_1992 (#4378)
  • ogr2ogr: Lass 'ogr2ogr someDirThatDoesNotExist.shp dataSourceWithMultipleLayer' ein Verzeichnis erstellen
  • ogr2ogr: make -overwrite/-append funktioniert mit nicht-räumlichen Tabellen, die von GDAL 1.8.0 erstellt wurden
  • ogr2ogr: Berücksichtigen Sie die in der -where-Klausel angegebenen Felder in Kombination mit -select, um die richtige Liste von Feldern zu erstellen, die an SetIgnoredFields?() übergeben werden (#4015)
  • ogr2ogr: Option -zfield korrigiert, damit die geänderte Geometrie korrekt die Koordinatendimension = 3 meldet. Verhindert auch, dass sie in der Liste der ignorierten Feldnamen aufgeführt wird
  • ogr2ogr: Option -simplify hinzufügen, um Geometrien zu vereinfachen
  • ogr2ogr: Fügen Sie eine Warnung hinzu, wenn der Zieldateiname eine Erweiterung oder ein Präfix hat, das nicht mit dem Standardausgabeformat (z. B. Shapefile) übereinstimmt, aber mit einem anderen Treiber übereinstimmt. Kann mit der Option -q leise gemacht werden
  • ogrinfo/ogr2ogr: Beenden, wenn SetAttributeFilter?() fehlschlägt, anstatt still fortzufahren (#4261)
  • RFC35 : Implementierung in Shapefile-, Speicher-, PG- und SQLite-Treibern (#2671)
  • DXF, EDIGEO, KML, LIBKML, Shapefile, SDE, SOSI: Als UTF-8 unterstützend markieren
  • BNA, CSV, GPX, KML, GeoRSS, GML, LIBKML, GeoJSON, PGDump : Akzeptiere sowohl /dev/stdout als auch /vsistdout/ als Dateinamen entferne 'stdout' als gültigen Alias, der in einigen von ihnen verwendet werden könnte (#4225, #4226)
  • Spezielle Erkennung und Handhabung für USGS GNIS (Geographic Names Information System)-Dateien hinzufügen
  • Erkenne direkt die Struktur der allCountries-Datei von GeoNames?.org
  • Implementieren Sie GetFeatureCount?(), um etwas schneller zu sein
  • Akzeptieren Sie /dev/stdout als Dateinamen für CreateDataSource?()
  • Behandlung von nicht numerischen Werten in numerischen Spalten korrigiert (NULL statt 0)
  • Handhabung von Spaltennamen mit Zahlen korrigiert
  • Erkennen Sie numerische Feldnamen in Anführungszeichen
  • Akzeptieren Sie reelle Zahlen mit ',' als Dezimaltrennzeichen, wenn '' das Feldtrennzeichen ist (CSV-Export im französischen Gebietsschema)
  • Unterstützung für DXF_ENCODING-Konfigurationsvariable und DWGCODEPAGE-Header-Feld hinzugefügt (#4008)
  • DXF_MERGE_BLOCK_GEOMETRIES hinzugefügt
  • Behandeln Sie ATTDEFs genauso wie TEXT-Entitäten
  • Schraffurpolylinie und elliptische Bogenunterstützung implementieren, Schraffurfüllung, geschlossene geglättete Linien nicht polygonisieren
  • Handhabung von ausgeblendeten/eingefrorenen/off-Layern hinzufügen.
  • Neu für GDAL/OGR 1.9.0
  • Lesen Sie DWG-Dateien mithilfe der Teigha-Bibliotheken der Open Design Alliance
  • Unterstützt das Schreiben von 3D-Linien und Polygonen
  • Fügen Sie ein bbox-Attribut mit dem Geometrie-Begrenzungsrahmen hinzu, wenn die Layer-Erstellungsoption WRITE_BBOX eingestellt ist (#2392)
  • Bbox von FeatureCollection schreiben? vor Funktionen, wenn die Datei durchsuchbar ist
  • Entfernen Sie das Zurücksetzen von FID, das dazu führte, dass FID nicht an der letzten Position der Eigenschaften verloren ging
  • Korrekter Umgang mit Null-Feldwerten beim Lesen und Schreiben
  • Behandeln von OFTIntegerList-, OFTRealList- und OFTStringList-Feldern
  • Andere Arrays als OFTString-Feld erkennen
  • Assertion bei nicht behandeltem ESRI json beheben (#4056)
  • Segfault für Feature behoben, bei dem das Member 'properties' existiert, aber kein Objekt ist (#4057)
  • Bessere Erkennung des OGR-Typs für numerische JSON-Felder (#4082)
  • Fügen Sie die Layer-Erstellungsoption COORDINATE_PRECISION hinzu, um die maximale Anzahl von Stellen nach dem Komma in Koordinaten anzugeben, die standardmäßig auf 15 eingestellt sind, wobei nachfolgende Nullen intelligent abgeschnitten werden (wie bei WKT).
  • Fügen Sie OGR_G_ExportToJsonEx() hinzu, um eine Liste von Optionen zu akzeptieren
  • Möglichkeit hinzugefügt, Geojson-Dateien ohne Erweiterung zu erkennen (#4314)
  • Deutliche Leistungsverbesserung beim Lesen großer mehrschichtiger GML-Dateien. Siehe Verwendung der neuen Konfigurationsoption GML_READ_MODE
  • Unterstützung von gml:xlink-Auflösung für große GML-Dateien durch GML_SKIP_RESOLVE_ELEMS=HUGE (erfordert SQLite)
  • Fügen Sie die Konfigurationsoption GML_GFS_TEMPLATE hinzu, um eine .gfs-Vorlagendatei anzugeben, die für mehrere GML-Dateien mit ähnlicher Struktur verwendet werden kann (#4380)
  • Sie können den Treiber mit Unterstützung von Expat- und Xerces-Bibliotheken erstellen und zur Laufzeit auswählen. Für UTF-8-Dokumente wählen wir Expat aus, wenn es verfügbar ist, da es schneller ist als Xerces
  • Stellen Sie fid oder gml_id als Feature-Felder bereit, wenn sie automatisch erkannt werden. Dieses Verhalten kann durch die Konfigurationsoption GML_EXPOSE_FID / GML_EXPOSE_GML_ID geändert werden.
  • Verbessern Sie die Handhabung von .gml und .xsd, die von FME erstellt wurden (insbesondere für CanVec? GML)
  • Sie können die .gz-Datei direkt öffnen (wie die von OS Mastermap) und die .gfs-Datei neben der .gz-Datei lesen/schreiben
  • Segfault behoben, wenn eine ungültige (oder von OGR nicht behandelte) Geometrie auftritt und die Achsenreihenfolge lat/long ist (#3935)
  • GML3: Verwenden Sie eine neue Methode zum Interpretieren von Gesichtsobjekten (was GEOS-Unterstützung erfordert)

alte Methode verfügbar, wenn GML_FACE_HOLE_NEGATIVE config. Option auf JA gesetzt (#3937)


Namensräume

Allgemeine Bemerkungen

Dieses Dokument verwendet eine eindeutige Abkürzung ("Präfix") für jeden in diesem Abschnitt aufgeführten RDF-Namespace und XML-Namespace. Die Namensraum-IRI kann immer aus der Deklaration des Namensraumkürzels ermittelt werden.

RDF-Namespaces

Die folgenden RDF-Namespace-Präfixe werden in diesem Dokument verwendet. Die Verwendung eines Namensraums bedeutet keine Billigung der zugehörigen Datenplattform oder des zugehörigen Vokabulars.

Die folgenden fehlenden Namespaces wurden hinzugefügt: geodcatap , ldqd , sdmx-attribute .

Im Dokument verwendete RDF-Namespaces
Präfix Namensraum IRI Quelle
admingeo http://data.ordnancesurvey.co.uk/ontology/admingeo/ Ontologie des Gebiets Verwaltungsgeographie und Zivilwahl von Ordnance Survey
adms http://www.w3.org/ns/adms# Asset-Beschreibungs-Metadaten-Schema (ADMS) [[VOCAB-ADMS]]
Tasche http://bag.basisregistraties.overheid.nl/def/bag# Adressen en Gebouwen (BAG) der niederländischen Regierung
dcat http://www.w3.org/ns/dcat# Datenkatalog-Vokabular (DCAT) [[VOCAB-DCAT]]
dcterms http://purl.org/dc/terms/ Metadaten-Begriffe der Dublin Core Metadata Initiative (DCMI) [[DCTERMS]]
dqv http://www.w3.org/ns/dqv# DWBP-Datenqualitätsvokabular (DQV) [[VOCAB-DQV]]
schaumig http://xmlns.com/foaf/0.1/ FOAF-Vokabularspezifikation
Geodcatap http://data.europa.eu/930/ GeoDCAT-AP: Eine raumbezogene Erweiterung für das DCAT-Anwendungsprofil für Datenportale in Europa [[GeoDCAT-AP]]
geom http://data.ordnancesurvey.co.uk/ontology/geometry/ Geometrieontologie von Ordnance Survey Survey
Geonamen http://www.geonames.org/ontology# GeoNames-Ontologie
georss http://www.georss.org/georss/ GeoRSS :: Geografisch kodierte Objekte für RSS-Feeds [[GeoRSS]], Geo OWL-Kodierung
Geosparql http://www.opengis.net/ont/geosparql# GeoSPARQL &mdash Eine geografische Abfragesprache für RDF-Daten [[GeoSPARQL]]
gml-ont http://www.opengis.net/ont/gml# GeoSPARQL &mdash Eine geografische Abfragesprache für RDF-Daten [[GeoSPARQL]]
ldqd http://www.w3.org/2016/05/ldqd# DWBP-Datenqualitätsvokabular (DQV) [[VOCAB-DQV]]: Datenqualitätskategorien und -dimensionen
locn http://www.w3.org/ns/locn# ISA-Standort-Kernvokabular [[LOCN]]
osuk http://data.ordnancesurvey.co.uk/id/ Linked-Data-Plattform für Ordnance Survey
ov http://open.vocab.org/terms/ Open.vocab.org
Eule http://www.w3.org/2002/07/owl# Web Ontology Language (OWL) [[OWL2-ÜBERSICHT]]
pdok http://data.pdok.nl/def/pdok# PDOK-Datenplattform
qudt http://qudt.org/schema/qudt# Ontologien für Mengen, Einheiten, Dimensionen und Datentypen (QUDT)
rdf http://www.w3.org/1999/02/22-rdf-syntax-ns# Ressourcenbeschreibungs-Framework (RDF) [[RDF11-PRIMER]]
rdfs http://www.w3.org/2000/01/rdf-schema# RDF-Schema-Vokabular (RDFS) [[RDF-SCHEMA]]
Schema http://schema.org/ Schema.org [[SCHEMA-ORG]]
scotgov-stat http://statistics.gov.scot/id/statistical-geography/ STATISTICS.GOV.SCOT Geografie verknüpfte Daten
sdmx-Attribut http://purl.org/linked-data/sdmx/2009/attribute# Das RDF-Datenwürfel-Vokabular [[VOCAB-DATA-CUBE]]: Attributeigenschaften
sf http://www.opengis.net/ont/sf# GeoSPARQL &mdash Eine geografische Abfragesprache für RDF-Daten [[GeoSPARQL]]
skos http://www.w3.org/2004/02/skos/core# Einfaches Wissensorganisationssystem (SKOS) [[SKOS-PRIMER]]
ukgov-stat http://statistics.data.gov.uk/id/statistical-geography/ Amt für nationale Statistik Geographie verknüpfte Daten
vcard http://www.w3.org/2006/vcard/ns# vCard Ontology &mdash zur Beschreibung von Personen und Organisationen [[VCARD-RDF]]
Leere http://rdfs.org/ns/void# Beschreiben verknüpfter Datensätze mit dem VoID-Vokabular [[VoID]]
w3cgeo http://www.w3.org/2003/01/geo/wgs84_pos# Basic Geo (WGS 84 lat/long) Vokabeln [[W3C-BASIC-GEO]]

XML-Namespaces

Die folgenden XML-Namespace-Präfixe werden in diesem Dokument verwendet. Die Verwendung eines Namensraums impliziert keine Billigung des zugehörigen XML-Schemas.

Im Dokument verwendete XML-Namespaces
Präfix Namensraum IRI Quelle
bagwfs http://bag.geonovum.nl XML-Schema für das niederländische Government Base Registry Adressen en Gebouwen (BAG)
gml http://www.opengis.net/gml/3.2 Geography Markup Language (GML) Codierungsstandard [[GML]]
Sam http://www.opengis.net/sampling/2.0 Beobachtungen und Messungen &ndash XML-Implementierung [[OM-XML]]
sams http://www.opengis.net/samplingSpatial/2.0 Beobachtungen und Messungen &ndash XML-Implementierung [[OM-XML]]
wml2 http://www.opengis.net/waterml/2.0 WaterML 2.0-Kodierungsstandard [[WaterML]]
xlink http://www.w3.org/1999/xlink XML-Verknüpfungssprache (XLink) Version 1.1 [[XLINK11]]


B) Technische Zwischenberechnungen (die Endbenutzern nicht unbedingt angezeigt werden)

1) Flüsse von Ökosystemdienstleistungen. Aus der Perspektive des ausgewählten Standorts berechnet das System, was ökologisch „vorgelagert“ und „nachgelagert“ ist. Berechnet beispielsweise für hydrologische Komponenten die Ansammlung und Richtung von Wassereinzugsgebieten. Die Berechnung erfolgt optional unter besonderer Berücksichtigung von Pits und Spikes unter extremen Bedingungen.

2) Segmentierung von Produzenten und Konsumenten. Alle diese Unternehmen und Wohnhaushalte „Upgstream“ (oder Upgradient) des ausgewählten Standorts sind potenzielle „Produzenten“ von Ökosystemdienstleistungen, die von diesem Standort genutzt werden. In ähnlicher Weise sind alle Unternehmen und Wohnhaushalte, die dem ausgewählten Standort „stromabwärts“ (oder abfallend) liegen, potenzielle „Verbraucher“ von ES, die von diesem Standort bereitgestellt werden. Diese Segmentierung ist geografisch durch zuvor festgelegte Systemgrenzen begrenzt. Die Listen von Unternehmen und Verbrauchern werden intern verwendet, um potenzielle Kandidaten für den Kauf oder Verkauf von Ökosystemdienstleistungen zu empfehlen.

3) Berechnung des Potenzialindex für Ökosystemleistungen („ESPI“), ein Potenzialindex für Ökosystemleistungen. Dieser Index bestimmt die Bandbreite der Veränderungen von Ökosystemleistungen, die ein bestimmter Standort erbringen kann. Dies wird verwendet, um zu bestimmen, welche Ökosystemleistungen wahrscheinlich möglich oder lebensfähig sind. Die Empfehlungsmaschine analysiert die Kosten verschiedener Optionen, liefert eine Auflistung von Produkten und Dienstleistungen sowie Handlungsanreize. FEIGE. 5 ist ein Flussdiagramm 500 des allgemeinen ESPI-Berechnungsprozesses zum Bestimmen, welche Ökosystemleistungen möglich sind, gemäß einer beispielhaften Ausführungsform der Erfindung.

4) Berechnung von Hochrisikoszenarien mit Auswirkungen auf die Ökosystemleistungen. Einige Ökosystemleistungen sind unter extremen Bedingungen wertvoller als normale. So ist beispielsweise Hochwasserschutz bei Nässe wichtiger als bei Trockenheit. Für diese Arten von Diensten können vom System exogene Ereignisse oder Szenarien generiert werden.

5) Robuste Optimierung, um Risiken zu reduzieren und/oder den Nutzen bei minimalen Kosten zu erhöhen.

6) Schätzung des Wertmodells des ES-Käufers für den Kauf, unter Berücksichtigung der Kosten alternativer Maßnahmen, regulatorischer Aufträge

7) Simulation des potenziellen ES-Marktes unter Berücksichtigung des ES-Käuferwertmodells und des Lieferantenwertmodells.

8) Etablierung einer Online-Börse mit objektiver erster Preisberatung für Käufer und Verkäufer.

9) Aufrechterhaltung von Verbindungen zu einem oder mehreren Fernerkundungs-Überwachungsnetzwerken für die Bodenbedeckung und andere Änderungen im Zusammenhang mit ES-Diensten.


Numerisches Problem beim Laden von Gleitkomma-geschätztem GeoTIFF in PostGIS - Geographische Informationssysteme

Ich habe ein Shapefile von Seen über meinem Untersuchungsgebiet. Jedes Polygon hat Attributinformationen zu jedem See, Namen, Form usw. Eigentlich möchte ich alle Seen aus der Analyse eliminieren. Mit anderen Worten, ich möchte, dass Seen den Wert 0 haben und der Bereich außerhalb der Grenzen des Sees ihre ursprünglichen Pixelwerte hat. Wenn ich mit diesem Shapefile eine Teilmenge verwende, ist die Ausgabe nicht erwünscht, da mein Shapefile-Deo keinen Wert für die äußere Grenze des Sees hat.

Wie kann ich mit diesem Shapefile in ArcGIS Desktop eine richtige Maskendatei erstellen (innerer Teil des Sees hat den Wert 0, der äußere ist 1)?

Füllen von Hohlräumen in ASTER-Stereobildern für die DEM-Generierung mit ArcGIS Desktop?

Ich versuche, ein Stereo-Paar von ASTER-Bildern zu verwenden, um ein DEM (in ERDAS Imagine) zu generieren. Allerdings sind die Berge ziemlich bewölkt und die Bilder können nicht so verwendet werden, wie sie sind. Aber die relevanten Teile (Talböden) sind gut sichtbar.

Ich hatte die Idee, die trüben Teile aus den Stereobildern auszuschneiden und das SRTM (in ArcGIS) einzufügen. Damit könnte ich wahrscheinlich ein DEM generieren. Aber ich bin mir nicht sicher, wie viel Sinn das macht, weil ich die Stereoansicht verlieren würde, wo ich das SRTM einfüge (da ich in beiden ASTER-Bildern genau das gleiche SRTM-DTM einfügen müsste).

Halten Sie es für sinnvoll, SRTM-Daten dort einzufügen, wo Wolken in ASTER vorhanden sind?

Alternativ könnte ich eine andere ASTER-Szene verwenden, um dort einzufügen, wo ich diese Voids in meinem ursprünglichen ASTER-Set habe. Aber dann stellt sich wohl die Frage nach dem Blickwinkel des Sensors, wenn es nicht genau gleich wäre, ist diese Idee auch nutzlos.

Arcgis server - So dekomprimieren und komprimieren Sie eine msd-Datei mit 7zip über die Befehlszeile richtig

Ich versuche, sowohl die msd- als auch die sd-Datei zu dekomprimieren und neu zu komprimieren, um einige Dinge zu optimieren, die ich möchte. Tatsächlich möchte ich in den Ordner "layers" gelangen und für jede Datei "layer.xml" den Namen der dbconnection durch eine Zeichenfolge ersetzen. Mein Ziel ist es, mit einer bat-Datei 5 SD-Dateien zu erstellen, die aus einer Original-SD-Datei generiert wurden - für 5 Benutzer, die mit derselben Oracle-Xe-Datenbank mit demselben Passwort verbunden sind. Es sieht ehrgeizig aus, aber es funktioniert. Ich habe versucht, die DB-Namen von Hand zu ändern, indem ich in die SD- und die MSD-Pakete mit 7zip nach einer von @ericchiasson hier beschriebenen Methode gelangt bin. Im gleichen Artikel sagt @jpmc26, dass Sie die SD neu komprimieren und dekomprimieren können, aber Sie müssen bestimmte Komprimierungseigenschaften befolgen. @jpmc26 sagt:


Übrigens können Sie eine SD-Datei neu komprimieren. Sie müssen die richtigen Komprimierungsoptionen verwenden. Optionen, die für mich funktionieren, sind Format: 7z, Wortgröße: 16, Solid Blockgröße: Nicht solide. Ich habe auch die Wörterbuchgröße auf 64 KB eingestellt, aber das ist meiner Meinung nach nicht wichtig. Alle anderen Optionen wurden auf ihre Standardeinstellungen belassen.(Ich habe einige fundierte Vermutungen angestellt, basierend auf der Tatsache, dass 7-zip die Komprimierungsmethode als "LZMA:16" für eine SD-Datei meldet.) – jpmc26 Jun 18 at


Ich habe seine Anweisung befolgt und 7z von der Befehlszeile wie folgt verwendet: 7za a -t7z -m0=lzma -md=64k -ms=off %MAP_NAME_MXD%.7z Diese Eigenschaften funktionieren jedoch zum Komprimieren der SD-Datei. In der .sd-Datei befindet sich eine komprimierte Datei vom Typ .msd. Ich versuche, es mit der gleichen Konfiguration zu komprimieren, nachdem ich es dekomprimiert habe, um die .xml-Dateien darin zu optimieren.

Wenn ich versuche, meine generierte SD-Datei zu veröffentlichen, wird sie korrekt veröffentlicht, aber sie startet nicht. Ich habe versucht, die generierte msd in meiner neu generierten SD-Datei durch die ursprüngliche msd zu ersetzen, und sowohl der Dienst veröffentlichen als auch der Start funktionierten. Dies ließ mich denken, dass die Methode zum Komprimieren des msd-Pakets die problematische ist.

Kann mir jemand sagen, was die richtigen Komprimierungsoptionen für die msd-Dateien sind? Eine Alternative wäre, die Dekomprimierung und Neukomprimierung zu vermeiden, indem die optimierten Layer-XML-Dateien auf irgendeine Weise in die msd eingefügt werden. Aber ich weiß nicht ob das möglich ist


Erweiterte Lidar-Filteroptionen

Lidar-Filterparameter können auf Vorgänge angewendet werden, die LIDAR-Daten verarbeiten, einschließlich GENERATE_ELEV_GRID, EXPORT_VECTOR, LIDAR_CLASSIFY und LIDAR_EXTRACT

Die verfügbaren LIDAR-Filterparameter umfassen:

  • LIDAR_ELEV_RANGE - gibt den Höhenbereich in Metern an, der in den Export eingeschlossen werden soll. Standardmäßig werden alle Höhen exportiert, aber wenn Sie die Werte auf 50m - 150m beschränken möchten, können Sie LIDAR_ELEV_RANGE="50,150" hinzufügen.
  • LIDAR_SCAN_ANGLE_RANGE - gibt den Bereich der Scanwinkel an, die in den Export in Grad eingeschlossen werden sollen. Standardmäßig werden alle Scanwinkel exportiert, aber wenn Sie den Export nur auf die Punkte mit Scanwinkeln zwischen 0 und 30 Grad beschränken möchten, können Sie LIDAR_SCAN_ANGLE_RANGE="0,30" hinzufügen.
  • LIDAR_FILTER - gibt eine durch Kommas getrennte Liste von zu exportierenden Lidar-Klassennummern an. Geben Sie ein Minuszeichen ein, um den Typ aus dem Filter zu entfernen, anstatt ihn hinzuzufügen. Der Filter beginnt mit nichts, wenn Sie einen LIDAR_FILTER-String angeben, aber Sie können ALL hinzufügen, um alles zu aktivieren, oder NONE, um den Filter zu löschen, und danach Dinge hinzufügen oder entfernen. Um beispielsweise einen Klassenfilter anzugeben, bei dem nur die Typen 2 und 3 aktiviert sind, verwenden Sie LIDAR_FILTER="NONE,2,3". Um einen mit allem außer den Klassen 2 und 3 zu erhalten, verwenden Sie LIDAR_FILTER="ALL,-2,-3". Wenn kein LIDAR_FILTER bereitgestellt wird, werden alle derzeit im freigegebenen globalen Lidar-Filter aktivierten Typen verwendet.
  • LIDAR_RETURN_FILTER - gibt eine durch Kommas getrennte Liste der zu exportierenden Lidar-Rückgabetypen an. Geben Sie ein Minuszeichen ein, um den Typ aus dem Filter zu entfernen, anstatt ihn hinzuzufügen. Der Filter beginnt mit den aktuellen Filtereinstellungen, aber Sie können ALLE hinzufügen, um alles zu aktivieren, oder NONE, um den Filter zu löschen, und danach Dinge hinzufügen oder entfernen. Um beispielsweise einen Rückgabefilter mit nur unbekannten und ersten Rückgaben anzugeben, verwenden Sie LIDAR_RETURN_FILTER="NONE,0,1". Um eine mit allem außer der ersten Rückgabe zu erhalten, verwenden Sie LIDAR_RETURN_FILTER="ALL,-1". Die Zahlenwerte haben folgende Bedeutungen:
    • 0 - Unbekannte Rücksendungen
    • 1 - Erste Rückkehr
    • 2 - Zweite Rückkehr
    • 3 - Letzte Rückkehr
    • 4 - Einzelrückfahrt
    • 5 - Erste von vielen Rückgaben
    • 6 - Zweite von vielen Rückgaben
    • 7 - Dritte von vielen Rücksendungen
    • 8 - Letzte von vielen Rückgaben

    Schau das Video: QGIS User0015 - PostGIS Setup