Dictionary styles <\/SPAN> bieten <\/SPAN>eine hochgradig anpassbare Möglichkeit, attributreiche Daten in Ihren Karten und Anwendungen zu visualisieren. Mit einer <\/SPAN><\/SPAN>look-up table<\/SPAN><\/SPAN><\/STRONG> einzelner Symbolteile, einem <\/SPAN><\/SPAN>dictionary script<\/SPAN><\/SPAN><\/STRONG>, das Attributwerte mit Symbolschlüsseln verbindet, und einer <\/SPAN><\/SPAN>configuration file<\/SPAN><\/SPAN><\/STRONG> zur Feinabstimmung können diese Stile zusammen mit dem Dictionary Renderer verwendet werden, um komplexe Symbole zu erstellen, die von mehreren Attributen in Ihren Daten gesteuert werden. <\/SPAN><\/SPAN><\/P>\nIch habe einen dictionary style für die <\/SPAN><\/SPAN>Alternative Fuel Stations layer<\/SPAN><\/SPAN><\/A> im Living<\/SPAN> Atlas erstellt, der auf einen Blick Informationen über jede Station liefert. <\/SPAN><\/SPAN> <\/SPAN><\/SPAN><\/P>\n
<\/span><\/SPAN><\/SPAN><\/P>\nIn diesem Blog teile ich einige meiner besten Tipps zur Erstellung Ihres eigenen benutzerdefinierten dictionary style, während wir uns den <\/SPAN>den ich erstellt habe<\/SPAN> genauer ansehen. Wenn Sie den Stil beim Lesen erkunden möchten, gibt es hier<\/SPAN> Links<\/SPAN> zu <\/SPAN><\/span>den style<\/SPAN><\/span> und web map wo eine Ebene bereits mit dem Stil konfiguriert wurde. <\/span>
\n
Tipp 1 6 Sammeln Sie Ressourcen zur Verwendung beim Erstellen Ihres Stils <\/span>
\n
Wann immer ich beginne, einen neuen dictionary style zu erstellen, habe ich meine Lieblingsressourcen griffbereit. Zuerst ist dieser Blog meines Kollegen Thad:Create custom dictionary styles for ArcGIS.<\/a> Der Blog teilt alle Werkzeuge und Schritte, die benötigt werden, um Ihren Stil von Anfang bis Ende zu erstellen. Meine bevorzugten Werkzeuge sind: <\/span>\n\n- DB Browser for SQLite, <\\/span>
\n- Visual Studio Code, <\\/li>\n
- ArcGIS Pro, und <\\/li>\n
- Ein Teil der Daten, um den Stil unterwegs zu testen.<\\/li>\n<\\/ul>\n
Der
Custom Dictionary Style Guide<\\/a> ist ein weiterer großartiger Ort, um mit detaillierten Schritt-für-Schritt-Anleitungen für die Erstellung Ihres eigenen benutzerdefinierten Stils zu beginnen. Ich habe auch gerne das dictionary renderer toolkit<\\/a> griffbereit. Das Toolkit ist voll von Ressourcen zum Verstehen, Erstellen und Beheben von Problemen bei dictionary styles sowie einigen Beispielstile, die es wert sind, erkundet zu werden.<\/SPAN> <\/SPAN><\/P>\n
Tipp <\/SPAN>2<\/SPAN> 93 Vergiss nicht die eingebauten Standard-Symbolschlfcssel <\/SPAN><\/SPAN><\/SPAN><\/H3>\nJeder einzelne Symbolteil hat einen eindeutigen Schlfcssel, der in der <\/SPAN>Look-up-Tabelle<\/SPAN><\/STRONG> definiert ist. Die beste Methode, diese Symbolteile zu erstellen und zu bearbeiten, ist in ArcGIS Pro. Ffcge zune4chst den Stil zu deinem Projektkatalog hinzu und doppelklicke dann auf den Alternative Fuel Stations-Stil, um die Tabelle zu f6ffnen. Hier findest du alle Symbolteile im Stil. <\/SPAN> <\/SPAN><\/P>\nKonzentrieren wir uns zune4chst auf die Fuel Type-Symbole. Es gibt 7 Fuel Type-Symbole und ein Standardsymbol (dazu kommen wir gleich), jeweils mit eigenem eindeutigen Schlfcssel. Mit Ausnahme des Standardschlfcssels folgen diese Schlfcssel dem Format 93fuel-94 gefolgt von der Kraftstofftyp-Abkfcrzung, die im Fuel_Type<\/FONT><\/STRONG> -Feld zu finden ist. <\/SPAN> <\/SPAN><\/P>\n
<\/span><\/P>\nDas <\/SPAN>dictionary script<\/SPAN><\/STRONG> ist ein Arcade-Skript, das Anweisungen enthe4lt, wie Attributwerte verwendet werden, um Symbolschlfcssel zu erstellen. Das dictionary script verwendet $feature.Fuel_Typ<\/STRONG>e<\/FONT>, um den Kraftstofftyp-Schlfcssel zu erzeugen. Dies ist der erste aufgeffchrte Schlfcssel, sodass bei der Auswertung eines Features der Typenschlfcssel als erstes zurfcckgegeben wird. <\/SPAN> <\/SPAN><\/P>\n
<\/span><\/P>\nAber was passiert, wenn <\/SPAN>Fuel_Type<\/STRONG><\/FONT> leer ist oder der volle Name 93Electric94 anstelle von 93ELEC94 verwendet wird? In diesen hypothetischen Fe4llen wfcrde das Skript 93fuel-94 und 93fuel-Electric94 zurfcckgeben, zwei Schlfcssel, die in der Look-up-Tabelle nicht existieren. Hier kommt das Standardsymbol ins Spiel!<\/SPAN> <\/SPAN>< \/P>\n< SPAN data - contrast = " none " > Dictionary - Renderer haben eingebaute Standard - Symbolschlüssel , die verwendet werden , wenn der erste im Skript zurückgegebene Schlüssel nicht in der Look-up-Tabelle existiert . Alles , was Sie tun müssen , ist ein Symbol mit folgendem Schlüssel hinzuzufügen : " Invalid_P " für Punkte , " Invalid_L " für Linien oder " Invalid_A " für Polygone . < \/ SPAN > < \/ P > \ n < H3 id = " toc-hId-1879142076 " > < SPAN data - contrast = " none " > < SPAN class = " TextRun SCXW144453211 BCX0 " data - contrast = " none " > < SPAN class = " NormalTextRun SCXW144453211 BCX0 " data - ccp-parastyle = " heading 2 " > Tipp < \/ SPAN > < SPAN class = " NormalTextRun SCXW144453211 BCX0 " data - ccp-parastyle = " heading 2 " > 3 < \/ SPAN > < SPAN class = " NormalTextRun SCXW144453211 BCX0 " data - ccp-parastyle = " heading 2 " > 3 Variiere Symbol-Eigenschaftswerte mit primitiven Overrides < \/ SPAN > < \/ SPAN > < SPAN class = " EOP SCXW144453211 BCX0 " data - ccp-props = " {&} "> & nbsp ; < \/ SPAN > < \/ SPAN > < \/ H3 > \ n < P > < SPAN data - contrast = " none " > < SPAN class = " EOP SCXW144453211 BCX0 " data - ccp-props = " {&} "> < SPAN class = " TextRun SCXW146592373 BCX0 " data - contrast = " none " > < SPAN class = " NormalTextRun SCXW146592373 BCX0 " > In diesem Stil wird die Umrandung des Symbols verwendet , um zwei verschiedene Informationen über die Tankstelle zu kommunizieren . Wenn die Umrandung eine durchgezogene Linie ist , wurden die Informationen verifiziert , aber wenn sie eine gestrichelte Linie ist , wurden die Informationen < EM > nicht < \/ EM > verifiziert . Die Farbe des Umrissstrichs zeigt den Betriebsstatus der Station an : < \/ SPAN > </ SPAN >< FONT color="#339966">< SPAN class= „ TextRun SCXW146592373 BCX0 „data - contrast=„ none „>verfügbar< /SPAn>,poColor. Die Syntax für eine primitive Override ist po:<primitive_name>|<property_name>|<value>. Für diesen Stil bedeutet das, dass beim Zeichnen des Verifizierungssymbols für jeden Teil des Symbols, der mit status-color markiert ist, die Farbe durch den Wert von poColor ersetzt wird:

Jetzt markieren Sie die Symbolteile mit dem primitiven Namen. Diese Override wird auf die Kontur der verifizierten und unverifizierten Symbole in der Nachschlagetabelle angewendet. Wählen Sie aus der Nachschlagetabelle das Verified-Symbol aus und navigieren Sie zum Tab Layer Properties. Verwenden Sie hier das Dropdown-Menü Element, um zum Shape Fill-Symbol zu gelangen, und formatieren Sie dieses Symbol, um zu den Füll- und Kontureigenschaften zu gelangen. Klicken Sie im Struktur-Tab auf das kleine Tagsymbol neben der Kontur und geben Sie status-color als primitiven Namen an. Wiederholen Sie dies nun für das unverified-Symbol.

Mit den markierten Symbolelementen unterstützt der Stil jetzt alle 8 möglichen Umrisskombinationen von Verifizierungsstatus und Betriebsstatus unter Verwendung nur zweier einzelner Symbolteile.
Tipp 4 – Nutzen Sie Konfigurationseigenschaften
Wenn Sie mit dem Living Atlas-Layer Alternative Fuel Stations vertraut sind, denken Sie vielleicht, „Moment mal – es gibt kein ‚verified‘ Feld in diesen Daten!“ Sie haben mich erwischt. Ich verwende einen modifizierten Teilbestand, bei dem ich das ‚verified‘ Feld hinzugefügt habe, was für einen zukünftigen Blog nützlich sein wird. Dieser Stil funktioniert mit dem verified-Feld, aber vielleicht verwenden Sie den Living Atlas-Layer und haben dieses Feld nicht in Ihren Daten. Deshalb habe ich eine Konfigurationseigenschaft erstellt, die es Ihnen erlaubt, das Verifizierungsfeld einzubeziehen oder zu ignorieren.
Die Konfigurationsdatei ist ein JSON-Objekt, in dem Sie zusätzliche Konfigurationsoptionen definieren können, die beeinflussen, wie Symbole gezeichnet werden. Dieser Stil hat mehrere Konfigurationsoptionen, aber wir beginnen mit der use_Verified_Field-Konfiguration. Hier habe ich den Namen der Konfiguration, den Standardwert, mögliche Werte und eine kurze Beschreibung angegeben. Ich habe auch das Verified-Feld als Symbolfeld aufgenommen, das vom Dictionary-Skript verwendet wird. Das sieht man besonders gut in ArcGIS Pro:

Wenn die use_Verified_Field Konfiguration aktiviert ist, verwendet das Dictionary-Skript den Wert im verified-Feld, um einen Schlüssel für eine durchgezogene oder gestrichelte Linie zurückzugeben. Wenn sie deaktiviert ist, gibt das Dictionary-Skript für alle Features einen Schlüssel für die durchgezogene Linie zurück. Um den Wert einer Konfigurationseigenschaft im Dictionary-Skript zu nutzen, verwenden Sie die Syntax $config.name oder in diesem Fall $config.use_Verified_Field:

Jetzt kann jeder, der diesen Stil zur Symbolisierung eines Layers verwendet, steuern, ob das verified-Feld genutzt wird.
Tipp 5 – Kennen Sie den Unterschied zwischen einem Symbolfeld und einem Textfeld für Beschriftungen
Diese letzte Konfigurationseigenschaft bezog sich darauf, wie Symbolteile werden mit einem Symbologiefeld in den Daten berechnet, aber schauen wir uns jetzt eine Eigenschaft an, um Labels ein- und auszuschalten. In der Ebene enthalten EV charging stations Informationen über das Netzwerk, zu dem sie gehören, im EV_Network-Feld. Wenn eine Station nicht zu einem Netzwerk gehört, ist dieses Feld mit „Non-networked.“ gefüllt.
Fügen Sie zunächst ein neues Symbol für das Label zur Nachschlagetabelle hinzu und stellen Sie dann sicher, dass es sich im Tab „Layer Properties“ um ein Shape Text Symbol handelt. Um das EV network in den Daten zu verwenden, ersetzen Sie die Textzeichenfolge durch den Feldnamen in Klammern, in diesem Fall [EV_Network]:

In der Konfigurationsdatei habe ich die show_EV_Network-Eigenschaft erstellt, damit Sie die Labels ein- und ausschalten können. Ich habe auch das EV_Network-Feld als Symbolfeld angegeben. Warum kein Textfeld, fragen Sie? Textfelder funktionieren hervorragend, wenn Sie alle Features beschriften möchten. Wenn ich mich entschieden hätte, ein Textfeld zu verwenden, wäre jedes Feature mit seinem EV_Network-Wert beschriftet worden und EV stations, die nicht vernetzt sind, hätten ein „Non-networked“-Label erhalten. Ich habe entschieden, dass nur vernetzte EV stations beschriftet werden sollen, also habe ich das als Bedingung im dictionary script festgelegt:

Auf Textfelder kann vom dictionary script nicht zugegriffen werden, was bedeutet, dass sie nicht als Variablen in der Logik verwendet werden können. Da das Script den EV_Network Wert verwenden muss, um zu bestimmen, ob der Label-Schlüssel zurückgegeben wird, habe ich das EV_Network Feld als Symbolfeld in der Konfigurationsdatei aufgenommen.
Tipp 6 – Verwenden Sie eindeutige primitive Namen
Die letzte Konfigurationseigenschaft in diesem Stil ist die show_Connector_Type Eigenschaft, mit der Sie ein Banner anzeigen oder ausblenden können, das alle verfügbaren Connector types an einer EV charging station anzeigt. Die verfügbaren Anschlüsse sind in einem einzigen Feld in der Alternative Fuel Stations-Ebene aufgelistet. Während die Konfiguration eine einfache Ein/Aus-Eigenschaft wie die anderen ist, ist dieser Teil des dictionary script etwas komplizierter, da wir berücksichtigen müssen, welche Connector-Symbole verwendet werden, wie diese Symbole positioniert sind und wie breit das Banner sein muss, um so viele Symbole aufzunehmen:< / Span ></ Span ></ Span ></ Span >

Beginnen wir mit der Bannerbreite. Die Nachschlagetabelle enthält Symbolteile für Banner, die Platz für jeweils ein, zwei, drei oder vier Connector-Symbole bieten. Im dictionary script erstellen wir ein Array der verfügbaren Connector types und zählen die Anzahl der Objekte im Array, um zu bestimmen, welches Banner verwendet wird.
Dann das Connector-Symbol Schlüssel werden zurückgegeben. Das Skript verwendet eine for-Schleife, um durch jedes Objekt im Array zu iterieren und den Schlüssel für jeden entsprechenden Connector type Symbolteil zurückzugeben. Wenn wir hier stoppen würden, würden alle Connector-Symbole übereinander gezeichnet werden. Glücklicherweise können wir hier primitive overrides verwenden!
Der X offset override verschiebt markierte Symbolteile entlang der x-Achse. Mit jeder Iteration der for-Schleife werden 11 Punkte zum X offset hinzugefügt, sodass das folgende Symbol 11 Punkte rechts vom vorherigen Symbol liegt. In der look-up table wurde jedes Connector-Symbol mit einem primitiven Namen versehen, der der Syntax [connector type]_marker folgt (z.B. J1772_marker, CHAdeMO_marker usw.).
Wenn eine Station also zwei Connectoren hat, J1772 und CHAdeMO, würden die Schlüssel so aussehen:
• Banner key: background-2
• Connector type keys: con-J1772;po:J1772_marker|OffsetX|17;` und `con-CHAdeMO;po:CHAdeMO_marker|OffsetX|28;
Im Gegensatz zu unserem vorherigen Beispiel mit primitive overrides benötigt jeder Symbolteil einen eindeutigen primitiven Namen, da die Offset-Werte auf jeden Symbolteil angewendet werden müssen, damit sie sich nicht überlappen.
### Tipp 7 – Schlüssel in Zeichenreihenfolge zurückgeben
In der letzten Zeile dieses dictionary scripts geben wir die Zeichenkette der Schlüssel zurück, die dem Client mitteilt, welche einzelnen Symbolteile verwendet werden sollen, um das endgültige Symbol zu erstellen. Die Reihenfolge, in der die Schlüssel in der Zeichenkette erscheinen, bestimmt die Reihenfolge, in der die Symbolteile gezeichnet werden. Wenn Sie sich ein endgültiges Symbol ansehen, das mit diesem Stil gezeichnet wurde, können Sie sehen, dass die Connector-Typen über dem Banner gezeichnet werden und das Banner unter dem fuel type symbol und der Umrandung liegt, während der accessibility indicator obenauf gezeichnet wird:
In diesem dictionary werden bei aktivierten Konfigurationseigenschaften die Schlüssel in folgender Reihenfolge zurückgegeben: fuel type, network name, EV banner, EV connector types, verified key, fuel type und access. Der fuel type key wird zweimal zurückgegeben, da der eingebaute Standard-Schlüssel (Invalid_P) nur verwendet wird, wenn der zuerst zurückgegebene Schlüssel nicht in der look-up table enthalten ist. Das Hinzufügen des fuel type key ein zweites Mal stellt die richtige Zeichenreihenfolge sicher, aber eine andere Möglichkeit besteht darin, die Symbolteile anzupassen, um unnötige Füllsymbole zu entfernen, die Symbole "verbergen" könnten.
Und das war's – Sie haben jetzt alle meine Top-Tipps zum Erstellen Ihres eigenen benutzerdefinierten dictionary styles! Sie können diesen Stil weiter erkunden, indem Sie ihn hier herunterladen oder beginnen Sie mit dem Erstellen Ihres eigenen benutzerdefinierten Stils. Lassen Sie mich unten in den Kommentaren wissen, welche Ideen Sie für die Erstellung benutzerdefinierter dictionary styles haben!