Woordenboekstijlen <\/SPAN> bieden <\/SPAN> een zeer aanpasbare manier om attribuutrijke gegevens te visualiseren in uw kaarten en applicaties. Met een <\/SPAN><\/SPAN>opzoektabel<\/SPAN><\/SPAN><\/STRONG> van individuele symboolonderdelen, een <\/SPAN><\/SPAN>dictionary script<\/SPAN><\/SPAN><\/STRONG> die attribuutwaarden koppelt aan symboolsleutels, en een <\/SPAN><\/SPAN>configuratiebestand<\/SPAN><\/SPAN><\/STRONG> voor fijn afstellen, kunnen deze stijlen samen met de Dictionary Renderer worden gebruikt om complexe symbolen te bouwen die worden aangestuurd door meerdere attributen in uw gegevens. <\/SPAN><\/SPAN><\/P>
Ik heb een dictionary style gemaakt voor de <\/SPAN><\/SPAN>Alternative Fuel Stations layer<\/SPAN><\/SPAN><\/A> in Living<\/SPAN> Atlas die informatie over elk station in één oogopslag biedt. <\/SPAN><\/SPAN> <\/SPAN><\/SPAN><\/P>
<\/span><\/SPAN><\/SPAN><\/P>
In deze blog deel ik enkele van mijn beste tips voor het maken van uw eigen aangepaste dictionary style terwijl we de <\/SPAN>stijl<\/SPAN> die ik heb gemaakt nader bekijken. Als u de stijl wilt verkennen terwijl u leest, hier<\/SPAN> zijn<\/SPAN> links<\/SPAN> naar <\/SPAN><\/SPAN>de stijl<\/SPAN><\/SPAN><\/A> en<\/SPAN> eeneen webmap<\/A> waar een laag al is geconfigureerd met de stijl. <\/SPAN><\/SPAN><\/SPAN><\/Span><\/P>
Tip 1 1 1 Verzamel bronnen om te gebruiken tijdens het bouwen van uw stijl <\/Span><\/Span><\/H3>
Telkens wanneer ik begin met het bouwen van een nieuwe dictionary style, ben ik voorbereid met mijn favoriete bronnen bij de hand. De eerste is deze blog van mijn collega Thad: <\/SPAN>Maak aangepaste dictionary styles voor ArcGIS.<\/Span> De blog deelt alle tools en stappen die nodig zijn om uw stijl van begin tot eind te bouwen. Mijn favoriete tools zijn:<\\span>
DB Browser voor SQLite,
Visual Studio Code,
ArcGIS Pro en
Een subset van de gegevens om de stijl onderweg te testen.< / span >< span
data -ccp-props = '{& quot134233117' false , '& quot134233118' false , '& quot201341983' 000 , '& quot335551550' 1 , '& quot335551620' 1 , '& quot335559739' 160 , '& quot335559740' 259 }'> </ span >
</ ul >
< span
data -contrast='none'>De < a href='https://github.com/Esri/arcgis-pro-sdk/wiki/ProGuide-Custom-Dictionary-Style' target='_self' rel='nofollow noopener noreferrer'>Custom Dictionary Style Guide< / a> is een andere geweldige plek om te beginnen met diepgaande stapsgewijze instructies voor het maken van uw eigen aangepaste stijl. Ik vind het ook prettig om de < a href='https://github.com/Esri/dictionary-renderer-toolkit/tree/master' target='_blank' rel='noopener nofollow noreferrer'>dictionary renderer toolkit< / a> bij de hand te hebben. De toolkit zit vol met bronnen voor het begrijpen, maken en oplossen van problemen met dictionary styles, evenals een paar voorbeeldstijlen die het waard zijn om te verkennen.<\/SPAN> <\/SPAN><\/P>\nTip <\/SPAN>2<\/SPAN> 6 Vergeet de ingebouwde standaard symboolsleutels niet <\/SPAN><\/SPAN><\/SPAN><\/H3>\nElk individueel symboolonderdeel heeft een unieke sleutel gedefinieerd in de<\/SPAN> look-up tabel<\/SPAN><\/STRONG>. De beste manier om deze symboolonderdelen te maken en te bewerken is in ArcGIS Pro. Voeg eerst de stijl toe aan je projectcatalogus en dubbelklik vervolgens op de Alternative Fuel Stations stijl om de tabel te openen. Hier vind je alle symboolonderdelen in de stijl. <\/SPAN> <\/SPAN><\/P>\nLaten we ons eerst richten op de Fuel Type symbolen. Er zijn 7 brandstoftypesymbolen en één standaard symbool (daar komen we zo op terug), elk met hun eigen unieke sleutel. Met uitzondering van de standaard sleutel volgen deze sleutels het formaat fuel- gevolgd door de afkorting van het brandstoftype gevonden in het Fuel_Type<\/FONT><\/STRONG> -veld. <\/SPAN> <\/SPAN><\/P>\n
<\/span><\/P>\nHet <\/SPAN>dictionary script<\/SPAN><\/STRONG> is een Arcade-script dat instructies bevat over hoe attribuutwaarden te gebruiken om symboolsleutels te bouwen. Het dictionary script gebruikt $feature.Fuel_Typ<\/STRONG>e<\/FONT> om de brandstoftypesleutel te produceren. Dit is de eerste sleutel die wordt vermeld, dus wanneer een feature wordt geëvalueerd, is de typesleutel de eerste die wordt geretourneerd. <\/SPAN> <\/SPAN><\/P>\n
<\/span><\/P>\nMaar wat gebeurt er als <\/SPAN>Fuel_Type<\/STRONG><\/FONT> leeg is of de volledige naam, 3Electric 4 wordt gebruikt in plaats van 3ELEC 4? In deze hypothetische gevallen zou het script 3fuel- 4 en 3fuel-Electric 4 retourneren, twee sleutels die niet bestaan in de look-up tabel. Hier komt het standaard symbool om de hoek kijken!<\/SPAN> <\/SPAN><\/P>\nDictionary renderers hebben ingebouwde standaard symboolsleutels die worden gebruikt wanneer de eerste sleutel die in het script wordt geretourneerd niet bestaat in de look-up tabel. Het enige wat je hoeft te doen is een symbool toe te voegen met de volgende sleutel: 3Invalid_P 4 voor punten, 3Invalid_L 4 voor lijnen, of 3Invalid_A 4 voor polygonen. <\/SPAN><\/P>\nTip <\/SPAN>3<\/SPAN> 6 Varieer symbooleigenschappen met primitive overrides<\/SPAN><\/SPAN> <\/SPAN><\/SPAN><\/H3>\nIn deze stijl wordt de omtrek van het symbool gebruikt om twee verschillende stukken informatie over het tankstation te communiceren. Als de omtrek een doorgetrokken lijn is, is de informatie geverifieerd, maar als het een stippellijn is, is de informatie niet<\/EM> geverifieerd. <\/SPAN>De kleur van de omlijning geeft de operationele status van het station aan:<\/SPAN> < \/span >beschikbaar< /span >< /span >< /STRONG >< /FONT >< span class = "TextRun SCXW146592373 BCX0" data - contrast = "none">, gepland< /STRONG >< /FONT >, < /span >< /span >< FONT color="#FF0000">< span class = "TextRun SCXW146592373 BCX0" data - contrast = "none">tijdelijk niet beschikbaar< /span >< /span >< /STRONG >< /FONT > < span class = "TextRun SCXW146592373 BCX0" data - contrast = "none">,< /span >< /span > < span class = "TextRun SCXW146592373 BCX0" data - contrast = "none"> of < span class = van het station specificeert de kleur die wordt gebruikt in de override, poColor. De syntaxis voor een primitieve override is po:<primitive_name>|<property_name>|<value>. Voor deze stijl betekent dit dat wanneer het verificatiesymbool wordt getekend, voor elk deel van het symbool dat is getagd met status-color, de Kleur wordt vervangen door de waarde van poColor:

Nu om de symboolonderdelen te taggen met de primitieve naam. Deze override wordt toegepast op de lijn van de geverifieerde en niet-geverifieerde symbolen in de look-up tabel. Selecteer in de look-up tabel het Verified symbool en navigeer naar het tabblad Laag Eigenschappen. Gebruik hier het element dropdown-menu om door te klikken naar het Shape Fill symbool, formatteer dat symbool vervolgens om bij de vul- en lijn eigenschappen te komen. Klik in het structuur tabblad op het kleine tagsymbool naast de lijn en specificeer status-color als primitieve naam. Herhaal dit nu voor het niet-geverifieerde symbool.

Met de gespecificeerde symboolelementen ondersteunt de stijl nu alle 8 mogelijke contour combinaties van verificatiestatussen en bedrijfsstatussen met slechts twee individuele symboolonderdelen.
Tip 4 – Profiteer van configuratie-eigenschappen
Als je bekend bent met de Alternative Fuel Stations Living Atlas-laag, denk je misschien, "wacht even - er is geen 'verified' veld in die gegevens!" Je hebt me betrapt. Ik gebruik een subset die ik heb aangepast, waarbij ik het 'verified' veld heb toegevoegd, wat handig zal zijn voor een toekomstige blog. Deze stijl werkt met het verified veld, maar misschien gebruik je de Living Atlas-laag en heb je dat veld niet in je gegevens. Daarom heb ik een configuratie-eigenschap gemaakt waarmee je het verificatieveld kunt opnemen of negeren.
Het configuratiebestand is een JSON-object waarin je extra configuratieopties kunt definiëren die bepalen hoe symbolen worden getekend. Deze stijl heeft meerdere configuratieopties, maar we beginnen met de use_Verified_Field configuratie. Hier specificeerde ik de naam van de configuratie, de standaardwaarde, mogelijke waarden en een korte beschrijving. Ik heb ook het Verified veld opgenomen als een symboolveld dat wordt gebruikt door het dictionary-script. Dit zie je echt tot leven komen in ArcGIS Pro:

Wanneer de use_Verified_Field configuratie aan staat, zal het dictionary-script de waarde in het verified veld gebruiken om een sleutel terug te geven voor een doorgetrokken of gestreepte lijn. Wanneer deze uit staat, geeft het dictionary-script een sleutel terug voor de doorgetrokken lijn voor alle features. Om de waarde te gebruiken van een configuratie-eigenschap in het dictionary-script, gebruik je de syntaxis $config.name of in dit geval, $config.use_Verified_Field:

Nu kan iedereen die deze stijl gebruikt om een laag te symboliseren bepalen of het verified veld wordt gebruikt.
Tip 5 – Weet wanneer je een symboolveld of tekstveld moet gebruiken voor labelsEV_Network veld. Als een station niet tot een netwerk behoort, wordt dat veld gevuld met "Non-networked."
Voeg eerst een nieuw symbool toe voor het label aan de opzoektafel en zorg er dan voor dat het een shape text symbool is in het tabblad laag eigenschappen. Om het EV network in de gegevens te gebruiken, vervang je de tekststring door de veldnaam tussen haakjes, in dit geval, [EV_Network]:

In het configuratiebestand heb ik de show_EV_Network eigenschap gemaakt zodat je de labels aan en uit kunt zetten. Ik heb ook het EV_Network veld als een symboolveld gespecificeerd. Waarom geen tekstveld vraag je? Tekstvelden werken geweldig als je alle objecten wilt labelen. Als ik had gekozen voor een tekstveld, zou elk object gelabeld zijn met hun EV_Network waarde en EV stations die niet verbonden zijn zouden een "Non-networked" label hebben. Ik besloot dat ik alleen verbonden EV stations wilde labelen, dus maakte dat een voorwaarde in het dictionary script:

Tekstvelden kunnen niet worden benaderd door het dictionary script, wat betekent dat ze niet kunnen worden gebruikt als variabelen in de logica. Aangezien het script de EV_Network waarde moet gebruiken om te bepalen of het label sleutel moet worden teruggegeven, heb ik het EV_Network veld als symboolveld opgenomen in het configuratiebestand.
Tip 6 – Gebruik unieke primitieve namen
De laatste configuratie-eigenschap in deze stijl is de show_Connector_Type eigenschap waarmee je een banner kunt tonen of verbergen die alle beschikbare connector types bij een EV charging station weergeeft. De beschikbare connectors staan vermeld in één veld in de Alternative Fuel Stations laag. Hoewel de configuratie een eenvoudige aan/uit eigenschap is zoals de anderen, is dit deel van het dictionary script iets ingewikkelder omdat we moeten overwegen welke connector symbolen worden gebruikt, hoe die symbolen gepositioneerd zijn en hoe breed de banner moet zijn om zoveel symbolen te kunnen bevatten:

Laten we beginnen met de bannerbreedte. De opzoektafel bevat symboolonderdelen voor banners die 1, 2, 3 of 4 connector symbolen kunnen bevatten. In het dictionary script maken we een array van de beschikbare connector types en tellen we het aantal objecten in de array om te bepalen welke banner te gebruiken.
Dan het connector symbool sleutels worden geretourneerd. Het script gebruikt een for-lus om door elk object in de array te itereren, waarbij de sleutel wordt geretourneerd voor elk overeenkomstig connector type symbooldeel. Als we hier zouden stoppen, zouden alle connector symbolen over elkaar heen worden getekend. Gelukkig kunnen we hier primitive overrides gebruiken!
De X offset override verschuift getagde symbooldelen langs de x-as. Bij elke iteratie van de for-lus worden 11 punten toegevoegd aan de X offset, zodat het volgende symbool 11 punten rechts van het vorige symbool komt te staan. In de look-up tabel is elk connector symbool getagd met een primitieve naam die de syntaxis volgt [connector type]_marker (bijv. J1772_marker, CHAdeMO_marker, enz.).
Dus als een station twee connectors heeft, J1772 en CHAdeMO, zouden de sleutels er als volgt uitzien:
3 Banner sleutel: background-2
3 Connector type sleutels: con-J1772;po:J1772_marker|OffsetX|17;` en `con-CHAdeMO;po:CHAdeMO_marker|OffsetX|28;
In tegenstelling tot ons vorige voorbeeld met primitive overrides, moet elk symbooldeel een unieke primitieve naam hebben omdat de offsetwaarden moeten worden toegepast op elk symbool zodat ze niet overlappen.
### Tip 7 013 Retourneer sleutels in tekenvolgorde
In de laatste regel van dit dictionary script retourneren we de string van sleutels, die de client vertelt welke individuele symbooldelen te gebruiken om het uiteindelijke symbool te maken. De volgorde waarin de sleutels in de string verschijnen bepaalt de volgorde waarin symbooldelen worden getekend. Wanneer je naar een uiteindelijk symbool kijkt dat met deze stijl is getekend, zie je dat de connectortypes bovenop het banner worden getekend, en het banner onder het brandstoftype symbool en de omtrek wordt getekend, terwijl de toegankelijkheidsindicator bovenop wordt getekend:
In dit dictionary worden wanneer alle configuratie-eigenschappen aan staan, de sleutels in de volgende volgorde geretourneerd: brandstoftype, netwerknaam, EV-banner, EV-connector types, geverifieerde sleutel, brandstoftype en toegang. De brandstoftype sleutel wordt twee keer geretourneerd omdat de ingebouwde standaard sleutel (Invalid_P) alleen wordt gebruikt wanneer de eerste geretourneerde sleutel een sleutel oplevert die niet in de look-up tabel staat. Het toevoegen van de brandstoftype sleutel een tweede keer zorgt voor de juiste tekenvolgorde, maar een andere optie is het aanpassen van de symbooldelen om onnodige vulsymbolen te verwijderen die symbolen kunnen "begraven".
En dat is het - je hebt nu al mijn beste tips voor het maken van je eigen aangepaste dictionary stijl! Je kunt deze stijl verder verkennen door het te downloaden hier of begin met het bouwen van je eigen aangepaste stijl. Laat me in de reacties hieronder weten welke ideeën je hebt voor het maken van aangepaste dictionary stijlen!