Viac

Vytvorte krivky z polí bodov


Dovoľte mi popísať nastavenie údajov. Riadok bol poskytnutý ako pole párov súradníc, jeden pre každý vrchol. Toto pole má rôznu veľkosť, kdekoľvek od 2 do 200 párov súradníc na riadok. To, čo sa snažím obklopiť svoju myseľ, je najlepší spôsob, ako vytvoriť tieto riadky. Arcpy a ArcObjects sú životaschopné možnosti, ale ArcObjects je uprednostňovaný kvôli svojej rýchlosti (spravidla).

Vymyslel som niekoľko metód, ale z nejakého dôvodu nie sú k dispozícii:

1) Na vytvorenie kriviek by som mohol použiť triedu Polyline s arcpy a potom funkcie kopírovania, ale výsledná geometria by nemala žiadne pripisovanie potrebné na identifikáciu uvedených bodov.

2) Mohol by som použiť XY To Line, ale funguje to len s jedným párom bodov a vyžadujem niečo oveľa robustnejšie.

The dlhé a krátke spočíva v tom, že požadujem metódu, ktorá dokáže vytvoriť krivku z polí a udržiavať schému pre údaje, ktoré som vytvoril v tabuľke. Jeden nápad, ktorý mám, je vytvoriť uvedenú tabuľku a schému a potom nejakým spôsobom vytvoriť krivku a skopírovať jutvarvlastnosť do výstupnej tabuľky, prenos cez ID a akékoľvek ďalšie priradenie je potrebné. Ako môžem postupovať pri vytváraní vlastnosti tvaru krivky bez použitia prechodného súboru tvarov? Alebo ak vás napadne lepšia metóda, podeľte sa o to so mnou.

Aktualizácia Zdá sa, že tento kód funguje!

IFeatureClass fClass = gpUtil.OpenFeatureClassFromString (cesta); Kurzor IFeatureCursor = fClass.Insert (true); IFeatureBuffer buffer = fClass.CreateFeatureBuffer ();  string [] nodearray = a.Split (';'); foreach (reťazec i v nodearray) {query.WhereClause = "" PNT_ID  "= '" + i + "'"; Console.WriteLine (query.WhereClause.ToString ()); ICursor search = table.Search (dotaz, false); IRow row = search.NextRow (); float x = float.Parse (row.get_Value (2) .ToString ()); float y = float.Parse (row.get_Value (3) .ToString ()); int id = int.Parse (row.get_Value (1) .ToString ()); bod.X = x; bod.Y = y; point.ID = id; point.SpatialReference = sRef; pCollection.AddPoint (bod, odkaz chýba, odkaz chýba); } IGeometry5 polygeo = (IGeometry5) pCollection; buffer.set_Value (1, polygeo); buffer.set_Value (2, wayid); cursor.InsertFeature (buffer);

Zdá sa, že to mám. Vytvoril som anIPointtriedy a použil ho na vyplnenie súboruKolekcia IPointpredstavený ako aPolylineClass. Potom som odovzdal zbierku doIGeometry5a použil to akotvarpole pre riadok v mojej triede výstupných funkcií, kopírovanie ID pomocou vyrovnávacej pamäte.

Pri dvoch vstupoch som si pokrútil hlavu v niekoľkých kruhoch, ale zdá sa, že to funguje v poriadku.


Tu bojujem s podobnou schémou.

Musím identifikovať čiary a ich vrcholy a udržiavať medzi nimi vzťah Line with Vertex. Myslím, že riešim väčšiu požiadavku (nie som si istý), ale implementujeme to ako zobrazenia a rozšírenia o triedy funkcií (do značnej miery na zachovanie našich „segmentových“ tabuliek)

základná schéma je

Názov riadkovej tabuľky (PK)

Názov tabuľky bodov (PK)

LineSegmentTable LineName (FK) ID Objednávka FromPoint (FK) ToPoint (FK)

Geometria názvu LineView

Vo vašom prípade by mohla byť vhodnejšia tabuľka „vrcholov“. Používame tiež systém Oracle.


Geopriestorový Python

Tento príklad základného skriptovania v pythone ukazuje, ako vytvoriť čiaru medzi dvoma bodmi. ESRI má dobrý technický článok o tom, ako vytvoriť riadok pomocou pythonu, ale ten je trochu zložitejší. Aby bol tento skript v súlade s mojím cieľom čo najviac zjednodušiť veci, je to najzákladnejšia forma vytvárania riadkov. Kód je veľmi podobný môjmu poslednému príspevku o vytváraní bodu, pretože všetky zložité tvary v ArcGIS sú v skutočnosti iba body so spojovacími čiarami. Nový objekt v tomto skripte je Array. Aby to bolo jednoduché, môžete si predstaviť pole ako miesto na uloženie súradníc bodov predtým, ako nakreslíte čiaru, ktorá ich spája. Takže keď váš skript číta v súbore súradníc pre bod, uložíte ich do poľa. Potom, keď budete mať všetky body, ktoré tvoria čiaru v poli, skript povie geoprocesoru, aby vytvoril čiaru spájajúcu body. Tentokrát som pridal iba veľmi jednoduché komentáre, toto je bližšie k tomu, ako by vyzerali skripty, ktoré nájdete na internete. Tiež som vynechal akékoľvek spracovanie chýb, zameralo sa to na najzákladnejšie časti skriptu. Nebojte sa, že sa vráti aj nabudúce.

import sys, string, os, arcgisscripting
gp = arcgisscripting.create ()
gp.OverWriteOutput = True

# Nastavte výstupný priečinok a názov súboru

outFolder = r ”C: Temp ”
outFile = “SingleLine.shp ”

# Nastaviť pracovný priestor
gp.workspace = outFolder

# Priraďte hodnoty súradníc x a y počiatočným premenným

StartXcoord = -63,650997
StartYcoord = 44,679996

# Priradiť hodnoty súradníc x a y koncovým premenným
EndXcoord = -74,011221
EndYcoord = 40.663962

# Priraďte priestorovú referenciu
sr = gp.CreateSpatialReference (“C: Program Files ArcGIS Coordinate Systems Geographic Coordinate Systems World WGS 1984.prj ”, “#”, “#”, &# 8220#”, “#”, “#”)

# Vytvorte triedu Feature, do ktorej bude riadok pridaný
gp.CreateFeatureClass (outFolder, outFile, “POLYLINE ”, “#”, “#”, “#”, sr)

# Vytvorte vkladací kurzor a namierte na práve vytvorený súbor
cur = gp.InsertCursor (outFile)

# Presuňte kurzor tak, aby ukazoval na prvý prázdny riadok v súbore

# Vytvorte objekt Array na uloženie bodov pre čiaru
LineArray = gp.CreateObject (“Array ”)

# Vytvorte objekt Point, aby ste uložili súradnice pre body

pnt = gp.CreateObject (“Point ”)

# Nastavte súradnice x a amp y
pnt.x = StartXcoord
pnt.y = StartYcoord

# Pridajte bod do poľa

# Nastavte súradnice x a amp y
pnt.x = EndXcoord
pnt.y = EndYcoord

# Opäť pridajte bod do poľa

# Nastavte vlastnosť shape prvého riadka v súbore tvarov na hodnoty uložené v LineArray. Pretože sme pri použití CreateFeatureClass museli definovať typ súboru tvaroviek (krivka), vlastnosť tvaru súboru vie, že by mal vytvárať čiary medzi každým bodom v poli.


Propiedades

Vráti reprezentáciu geometrie JSON ako reťazec.

Vrátený reťazec je možné previesť do slovníka pomocou evalskej funkcie Pythonu.

Vráti známu binárnu (WKB) reprezentáciu pre geometriu OGC. Poskytuje prenosnú reprezentáciu hodnoty geometrie ako súvislý tok bajtov.

Vráti reprezentáciu známeho textu (WKT) pre geometriu OGC. Poskytuje prenosnú reprezentáciu hodnoty geometrie ako textový reťazec.

Oblasť mnohouholníkového prvku. Prázdne pre všetky ostatné typy funkcií.

Skutočný ťažisko, ak sa nachádza vo funkcii alebo na prvku inak, bod označenia sa vráti. Vráti bodový objekt.

Rozsah geometrie.

Prvý súradnicový bod geometrie.

Reťazec súradnicových párov konvexného trupu obdĺžnika oddelený priestorom.

Je pravda, že ak je počet dielov pre túto geometriu viac ako jeden.

Bod, v ktorom sa nachádza štítok. LabelPoint sa vždy nachádza vo funkcii alebo na nej.

Posledná súradnica funkcie.

Dĺžka lineárneho prvku. Nula pre bodové a viacbodové typy funkcií.

3D dĺžka lineárneho prvku. Nula pre bodové a viacbodové typy funkcií.

Počet častí geometrie pre prvok.

Celkový počet bodov za funkciu.

Ťažisko funkcie.

Typ geometrie: mnohouholník, lomená čiara, bod, viacbodový, viacnásobný súčet, kóta alebo anotácia.


Môžete pridať alebo odstrániť body z krivky v službe Google Drawings?

V službe Google Drawings môžete vytvoriť krivku, ktorá je čiarou s bodmi, v ktorých je možné čiaru „ohnúť“. Keď vytvoríte krivku s určitým počtom bodov, môžete krivku upraviť a zmeniť umiestnenie a orientáciu bodov.

Existuje spôsob, ako pridať alebo odstrániť body?

Alebo musíte vytvoriť nový riadok?

Na tejto stránke z roku 2010 bolo uvedené, že táto funkcia neexistuje. Nenašiel som nič novšie, čo by hovorilo tak či onak.


V zozname vlastností nájdete zoznam všetkých vlastností, ktoré môžu byť odovzdané do konštruktora.

Cache sa používa na ukladanie hodnôt vypočítaných z geometrií, ktoré je potrebné pri mutácii vymazať alebo prepočítať.

Rozsah geometrie.

Udáva, či má geometria hodnoty M.

Udáva, či má geometria hodnoty z (nadmorská výška).

Pole ciest alebo segmentov čiar, ktoré tvoria krivku.

Priestorová referencia geometrie.

Podrobnosti o nehnuteľnosti

Cache sa používa na ukladanie hodnôt vypočítaných z geometrií, ktoré je potrebné pri mutácii vymazať alebo prepočítať. Príkladom je rozsah mnohouholníka.

Názov triedy. Deklarovaný názov triedy je formátovaný ako esri.folder.className.

Rozsah geometrie. Pokiaľ ide o bod, rozsah je nulový.

Udáva, či má geometria hodnoty M.

Udáva, či má geometria hodnoty z (nadmorská výška).

Z-hodnoty definované v geografickom alebo metrickom súradnicovom systéme sú vyjadrené v metroch. V miestnych scénach, ktoré používajú projektovaný súradnicový systém, sa však predpokladá, že vertikálne jednotky sú rovnaké ako horizontálne jednotky určené službou.

Pole ciest alebo segmentov čiar, ktoré tvoria krivku. Každá cesta je dvojrozmerné pole čísel predstavujúce súradnice každého vrcholu v ceste v priestorovej referencii pohľadu. Každý vrchol je reprezentovaný ako pole dvoch, troch alebo štyroch čísel. Nasledujúca tabuľka zobrazuje rôzne štruktúry vrcholového poľa.


WeightedLocation trieda vizuálne vyjadruje vážené údaje, ako aj geografické informácie. Váha dát je normalizovaná v rozsahu 0-1.

Vizualizačný submodul interne spravuje všetky údaje pomocou inštancie WeightedLocation. Ak sa na údaje nepoužije žiadna váha, predvolene sa použije 1.

Normalizované hmotnosti pre každý typ vizualizácie sú nasledovné:

    : Hmotnosť na tepelnej mape predstavuje intenzitu nárazu každého bodu. Rozsah intenzity je 0,1-1. Intenzita bez hmotnosti je 1. : Ako polomer bodu sa používa hmotnosť na mape hustoty bodov. Rozsah polomeru je 1- . Polomer bez hmotnosti je vlastný polomer.

Existuje niekoľko spôsobov, ako vytvárať vážené údaje pre geografické informácie. Rovnako ako v nižšie uvedenom kóde môžete pomocou nového operátora vytvoriť novú inštanciu.

Alebo môžete použiť doslovné údaje ako v nižšie uvedenom kóde. Potom vizualizačný submodul interne skonvertuje na WeightedLocation.


Maskovanie pomocou Shapefiles

Dáta v mriežkovom modeli spravidla neobsahujú informácie o tom, do ktorej mriežky krajín patria. Také sociálne alebo politické informácie sú k dispozícii ako vektorové údaje, tj. Segmenty čiar, ktoré ohraničujú príslušné oblasti. Bežným formátom je „tvarový súbor ESRI“. V tomto článku je popísané, ako použiť tieto informácie o tvare pri analýze a vizualizácii údajov s NCL a mimo geografických informačných systémov (GIS), konkrétnejšie ako previesť tvarové súbory ESRI na NetCDF a ako s nimi správne pracovať.

Vitajte pri prvom článku blogu Vis @DKRZ!

Mnoho z vás sa pravdepodobne stretlo s problémom vizualizácie iba regionálnej časti väčšieho súboru údajov na ilustráciu situácie pre konkrétnu krajinu alebo región. Je to jednoduché pre regionálnu vizualizáciu obdĺžnikovej podmnožiny modelovej mriežky, ale ak by sa mali zobrazovať iba hodnoty údajov v nepravidelnom tvare (napríklad politické hranice), je to ešte náročnejšie. Tu, tvarové súbory vám môže pomôcť analyzovať a/alebo vizualizovať údaje vo vnútri hraníc nepravidelného tvaru.

V tomto blogovom článku uvádzame príklad vytvorenia mriežky masky na základe uzavretej lomenej čiary definovanej v súbore tvarov, aby bolo možné analyzovať a/alebo vizualizovať údaje v mriežke iba v nej.

Tvarové súbory môžu obsahovať geometrické údaje, ako sú štátne alebo štátne hranice, mestá, dopravné trasy, rieky, vodné plochy a súvisiace údaje, ako je počet obyvateľov, vegetácia atď. Geopriestorové informácie sú uložené vo forme geometrií, ako sú „body“, „krivky“ alebo „mnohouholníky“.

Tvarový súbor nie je vlastne iba jeden súbor, je to skôr skupina súborov obsahujúcich rôzne časti informácií. Medzi dôležité patria:

  • súbor .shp, ktorý obsahuje geometriu
  • súbor .shx, ktorý obsahuje pozičný index geometrie prvkov
  • súbor .dbf, ktorý obsahuje atribúty každého tvaru

Všimnite si toho, že väčšina aplikácií potrebuje na správnu funkciu kompletnú sadu súborov, aj keď načítavate iba súbor „.shp“.

Súbor shapefile použitý pre tento článok si môžete stiahnuť z
https://www.diva-gis.org/gdata
( -& gt Nemecko -& gt administratívne oblasti -& gt DEU_adm.zip)

Tu používame DEU_adm0.shp a DEU_adm1.shp.

1. Čo obsahuje súbor shapefile?

NCL poskytuje nástroj príkazového riadka ncl_filedump ktorý poskytuje súhrn obsahu súboru shapefile.

Tvarový súbor obsahuje niektoré premenné, ale v súčasnosti nepotrebujeme vedieť viac o jeho obsahu okrem skutočnosti, že premenné x a y sú súradnicami dĺžka/šírka nemeckej hranice.

2. Vytvorte súbor masky NetCDF z tvarového súboru

Na vytvorenie súboru masky na základe súboru shapefile potrebujeme druhý súbor s popisom mriežky pre výstupný súbor.

Predpokladajme, že chceme pre Nemecko vytvoriť mriežkovú masku, ktorá bude obsahovať „0“ pre bunky mriežky mimo Nemecka a „1“ pre tie, ktoré sú vo vnútri. Súbor výstupnej masky by mal mať rozlíšenie mriežky 0,1 x 0,1 stupňa a ohraničovať oblasť Nemecka.

Ak máte súbor mriežky 0,1 x 0,1 stupňa, je všetko v poriadku. Ak nie, môžete ľahko vygenerovať (globálny) program pomocou CDO (Climate Data Operators). Tu používame vstavanú topografickú mriežku a premapujeme ju na požadované výstupné rozlíšenie:

Pretože NCL dokáže čítať súbory shapefile a poskytuje niektoré funkcie súboru shapefile, nasledujúci skript je napísaný v príkazovom jazyku NCL. Aby ste mohli používať tieto funkcie shapefile, budete si musieť najskôr stiahnuť knižnicu z NCAR:

Na neskoršie použitie uložíme súbor do $ HOME/NCL/shapefiles/.

Toto je skript NCL, ktorý vytvára masku pre Nemecko na mriežke 0,1x0,1deg a uloží ju do súboru netCDF:

Ak chcete skontrolovať výsledok, môžete si zobraziť obsah súboru masky pomocou ncview alebo Panoply.

3. Maskujte svoje údaje pomocou súboru masky

Chceme použiť iba údaje z Nemecka, pričom hodnoty mimo Nemecka boli nastavené na chýbajúcu hodnotu. Pretože nemáme k dispozícii žiadne aktuálne údaje, berieme topografické údaje, ktoré už spoločnosť CDO ponúka.

a) Maskovanie na tej istej mriežke

Berieme súbor topo_0.1x0.1deg_global.nc zhora a jednoducho použite CDO s operátorom 'mul' na vynásobenie dátového súboru súborom masky (obe majú rovnakú mriežku).

b) Maskovanie do inej mriežky

Ak je napríklad mriežka vašich vstupných údajov na mriežke 1 x 1 stupeň, budete musieť súbor masky najskôr premapovať aj na mriežku 1 x 1 stupňa. CDO je opäť možné použiť na premapovanie súboru masky na mriežku vášho dátového súboru.

Dátový súbor: topo_1x1deg_global.nc
Súbor masky: DEU_adm0_mask_array_0.1x0.1deg_global.nc

Premapujte masku na mriežku súboru vstupných údajov:

Vyberte menší subregión pre Nemecko:

4. Vizualizujte maskované údaje pomocou NCL

Spracované údaje je teraz možné vykresliť pomocou NCL, napr .:

5. Vyberte časť súboru shapefile s NCL

Na prečítanie súboru tvarov a výber údajov pre oblasť môžete použiť aj iba NCL. Nasledujúci príklad ukazuje, ako vybrať a vykresliť údaje pre federálny štát Schleswig-Holstein Nemecka pomocou súboru tvaru DEU_adm1.shp.

Teraz sa musíme bližšie pozrieť na obsah súboru shapefile pomocou ncl_filedump

V časti o dimenziách môžete okamžite vidieť, že existuje 16 funkcií, 125 segmentov a celkovo 207860 bodov. 16 funkcií sú federálne štáty, ktorých názvy sú uložené v premennej NAME_1.

Keď poznáte príslušný index federálneho štátu, jeho polygóny môžete prečítať pomocou štandardných funkcií NCL. S funkciou gc_inout NCL tiež ponúka možnosť skontrolovať, či sa body údajov nachádzajú v polygóne alebo nie. Pokiaľ sú do nového poľa uložené iba tieto body, údaje je možné potom veľmi jednoducho nakresliť.
Nasledujúci príklad skriptu vytvorí graf základnej mapy, na ktorý sa prekryjú vrstevnicový graf a lomené čiary pre federálny štát Schleswig-Holstein (index 14).


Eigenschaften

Vráti reprezentáciu geometrie Esri JSON ako reťazec.

Vrátený reťazec je možné previesť do slovníka pomocou funkcie Python json.loads.

Vráti známu binárnu (WKB) reprezentáciu pre geometriu OGC. Poskytuje prenosnú reprezentáciu hodnoty geometrie ako súvislý tok bajtov.

Vráti reprezentáciu známeho textu (WKT) pre geometriu OGC. Poskytuje prenosnú reprezentáciu hodnoty geometrie ako textový reťazec.

Všetky skutočné krivky v geometrii sa v reťazci WKT zhustia na približné krivky.

Oblasť mnohouholníkového prvku. Prázdne pre všetky ostatné typy funkcií.

Skutočný ťažisko, ak je v rámci alebo na prvku inak, bod označenia sa vráti. Vráti bodový objekt.

Rozsah geometrie.

Prvý súradnicový bod geometrie.

Reťazec súradnicových párov konvexného obdĺžnika trupom oddeleného.

Je pravda, že ak je počet dielov pre túto geometriu viac ako jeden.

Bod, v ktorom sa nachádza štítok. LabelPoint sa vždy nachádza vo funkcii alebo na nej.

Posledná súradnica funkcie.

Dĺžka lineárneho prvku. Nula pre bodové a viacbodové typy funkcií.

3D dĺžka lineárneho prvku. Nula pre bodové a viacbodové typy funkcií.

Počet častí geometrie pre prvok.

Celkový počet bodov za funkciu.

Priestorová referencia geometrie.

Ťažisko funkcie.

Typ geometrie: mnohouholník, lomená čiara, bod, viacbodový, viacnásobný súčet, kóta alebo anotácia.


Pridajte mapové polygóny

MapPolygon je tvar, ktorý pozostáva z najmenej troch súradníc, inak ho nemožno vykresliť. Podobne ako v prípade MapPolyline sú súradnice prepojené. Polygóny môžu byť užitočné na zvýraznenie oblasti na mape.

Poznámka: Na poradí súradníc záleží.

Pozrite sa na príklad nižšie, ako je možné vytvoriť mnohouholník. Súradnice sú prepojené na základe ich poradia v zozname. Výsledný tvar je možné vyplniť farbou pomocou novej inštancie MapPolygonStyle:

MapPolygon sa skladá z troch prvkov:

  • Zoznam troch alebo viacerých geografických súradníc, ktoré definujú, kam umiestniť polygón na mapu.
  • GeoPolygon, ktorý obsahuje tento zoznam súradníc.
  • MapPolygonStyle na definovanie spôsobu vizualizácie polygónu. Uistite sa, že ste nastavili aspoň farbu, inak zostane MapPolygon neviditeľný.

Pretože je polygón definovaný tromi alebo viacerými bodmi, musíte vytvoriť zoznam polí, ktorý musí obsahovať najmenej tri GeoCoordinates. V opačnom prípade bude udelená výnimka. Použitím triedy MapPolygonStyle je možné definovať atribúty, ako je poradie kreslenia alebo farba. Môže to byť farba výplne, ako je uvedené vyššie, alebo farba ťahu (a voliteľne šírka ťahu) na určenie obrysu - alebo oboje: Týmto spôsobom môžete vytvoriť vyplnené a nevyplnené polygóny mapy. Pozrite si príklad snímky obrazovky.

Nastavenie poradia žrebovania môže byť užitočné pre definovanie toho, ktorá položka mapy by mala byť vykreslená najvyššie. Vyššie hodnoty budú nakreslené k nižším hodnotám. Značky mapy budú vždy nakreslené nad čokoľvek iné, čo je na mape vykreslené, zatiaľ čo krivky mapy sú vždy nakreslené pod vysunutými budovami, štítkami a inými polygónmi mapy a kruhmi mapy. Najbežnejším prípadom použitia kriviek mapy je vykreslenie trasy na mape, pričom sa očakáva, že značky na mapách budú označovať polohu, takže by nemali byť skryté.

  • Poradie kreslenia mapových kriviek je účinné iba vo vzťahu k iným krivkám mapy.
  • Poradie losovania pre polygóny mapy a kruhy máp je účinné iba vo vzťahu k iným polygónom mapy a kruhom mapy.

Upozorňujeme, že chronologické poradie, v akom sú položky mapy pridané na mapu, áno nie ovplyvniť, ktorá položka sa vykreslí ako prvá. Predvolená hodnota poradia kreslenia pre položky mapy, ako sú MapPolyline, MapPolygon a MapCircle, je 0. Poradie kreslenia pre ďalšie prvky mapy, ako sú ulice alebo rieky, závisí od aktuálneho štýlu mapy, ktorý používate - je možné ho prispôsobiť pre vlastnú mapu štýly definované v súbore YAML, ďalšie informácie nájdete v časti o vlastných štýloch máp.

Mapové polygóny je možné použiť na vytváranie komplexných vyplnených alebo nevyplnených tvarov. Samopretínajúci sa mnohouholník však môže viesť k nežiaducim výsledkom, pretože súradnice sú spojené v poradí v zozname. Ako alternatívu môžete pridať viac mnohouholníkov - alebo uistite sa, že pridáte súradnice tak, ako sú uvedené v obryse požadovaného tvaru.

Upozorňujeme, že na rozdiel od mapovej krivky je obrys mnohouholníka mapy automaticky spojený medzi poslednou súradnicou a prvou súradnicou v zozname.

Keď vytvoríte jeden alebo viac polygónov mapy, môžete ich pridať na scénu mapy pomocou:

Ak je k scéne s mapou už pripojený mnohouholník mapy, akýkoľvek ďalší pokus o opätovné pridanie bude ignorovaný.

Snímka obrazovky: Zobrazenie mnohouholníka.

Všimnite si toho, že zobrazenie mapy umožňuje iba jednu scénu a všetky položky mapy sú umiestnené priamo na nej. Ak chcete zoskupiť položky mapy, môžete ich usporiadať pomocou poľa a jednotlivo ich pridať alebo odstrániť.

MapPolygon je možné z mapy ihneď odstrániť zavolaním:

Poznámka: Položky MapPolygon sú vyberateľné a je možné uložiť metadáta, ktoré je možné získať pri preberaní položky. Príklad nájdete v nižšie uvedenej časti o značkách na mape.

Aktualizujte štýl mnohouholníka

Ako ste videli vyššie, farbu výplne a ďalšie vlastnosti, ako napríklad šírku ťahu obrysu, môžete zadať pomocou inštancie MapPolygonStyle. Je možné dynamicky meniť už použité vlastnosti. Na to nemusíte vytvárať novú inštanciu MapPolygonStyle.

Namiesto toho môžete znovu použiť aktuálny štýl po pridaní polygónu mapy na scénu mapy, upraviť niektoré jeho vlastnosti a zavolať metódu updateStyle () na inštancii polygónu mapy - stačí ako parameter odovzdať inštanciu aktualizovaného štýlu. Vzhľad na mape sa okamžite zmení. Týmto spôsobom môžete napríklad vytvárať animované polygóny mapy.


Pridajte značky na mape

Na presné označenie miesta na mape môžete použiť značky na mape. Značky mapy budú vždy nakreslené nad čokoľvek iné, čo je na mape vykreslené.

Nasledujúca metóda pridá na mapu značku mapy:

V tomto prípade načítame súbor PNG ("here_car.png") zo zdrojov a vytvoríme z neho MapImage. Tento MapImage potom môže byť nastavený na inštanciu MapMarker.

Sada HERE SDK pre Android podporuje zdroje PNG s priehľadnosťou alebo bez priehľadnosti (alfa kanál) - ako aj všetky ostatné bežné zdroje bitových máp, ktoré Android natívne podporuje. Vektorová grafika ešte nie je podporovaná - dokonca ani pri prevode z formátu SVG na reprezentáciu XML v aplikácii Android Studio.

Aby sme videli obrázok, musíme pridať MapMarker na scénu mapy. Upozorňujeme, že MapImage sa zobrazí v strede na poskytnutých geo súradniciach.

Snímka obrazovky: Zobrazenie náhodne umiestnených obrázkov mapy. Červený kruh mapy navrchu označuje polohu značky.

GeoCoordinates môžete aktualizovať aj po pridaní značky na mapu: Po zavolaní mapyMarker.setCoordinates () sa okamžite zobrazí na novom mieste.

Upozorňujeme, že chronologické poradie, v ktorom sú značky mapy pridané na mapu, určuje, ktorá značka sa vykreslí ako prvá. To je možné upraviť nastavením explicitného vyžrebovať poradie.

Ukotvené značky bodov záujmu

V predvolenom nastavení je každý obrázok sústredený na poskytnuté miesto a pri niektorých typoch značiek to možno budete chcieť zmeniť. Príkladom je značka POI, ktorá zvyčajne ukazuje na polohu svojou spodnou strednou polohou.

Preto musí byť miesto, kde je obrázok vykreslený, posunuté. Predvolený stred je (0,5, 0,5). Ak by mal pravý dolný roh zobrazenia ukazovať na nastavené umiestnenie GeoCoordinates, potom musí byť kotviaci bod nastavený na (1, 1).

Kotviace body poskytujú pohodlný spôsob zadania umiestnenia, kde sa má značka vykresliť: Ľavý horný roh sa rovná kotevnému bodu (0, 0), zatiaľ čo pravý dolný roh sa rovná kotviacemu bodu (1, 1). Bez ohľadu na to, aký veľký je pohľad, bod, ktorý je polovicou šírky alebo výšky, bude vždy 0,5 - to je podobné konceptu normalizovaných súradníc ultrafialových štruktúr.

Ilustrácia: Normalizované kotviace body môžu špecifikovať akékoľvek umiestnenie v rámci značky mapy alebo mimo nej.

Ak chcete posunúť BZ tak, aby ukazoval na miesto, môžete ponechať predvolené stredné umiestnenie (0,5), ale musíte posunúť obrázok nahor o 1. 1 je rovnako dlhá ako výška obrázku. Upozorňujeme, že môžete zadať aj hodnoty väčšie ako 1 alebo menšie ako 0, aby ste mohli obrázok posunúť na akékoľvek možné miesto. 2 by predstavovalo dvojnásobok výšky obrázku a podobne.

Ak chcete na mapu pridať ukotvenú značku BZ, pozrite si nasledujúci príklad:

Vo vyššie uvedenom príklade je do projektu pridaný vlastný obrázok bodu záujmu s názvom „poi.png“ v rôznych rozlíšeniach. Platforma Android zvolí vhodné rozlíšenie obrazu na základe hustoty zobrazenia zariadenia. Pozrite sa na sprievodnú ukážkovú aplikáciu, ako to možno urobiť.

Snímka obrazovky: Zobrazenie náhodne umiestnených značiek máp. Červený kruh mapy označuje ukotvené miesto značky.

Na rozdiel od kriviek si každý MapImage zachová svoju veľkosť - bez ohľadu na to, ako veľmi je mapa priblížená alebo zmenšená.

Vyberte značky na mape

Potom, čo ste na mapu pridali značky mapy, môžete pomocou poslucháča gest klepnutím zistiť, či používateľ klepol na značku na mape:

Hneď ako sa zistí gesto klepnutia, môžeme pomocou súradníc zobrazenia klepnutého miesta na obrazovke požiadať o zobrazenie mapy akékoľvek značky mapy v okolí tohto miesta. Vo väčšine prípadov je postačujúce zadať polomer dvoch pixelov. Potom PickMapItemsCallback poskytuje prístup k nájdeným položkám mapy, ako napríklad MapPolygon alebo MapMarker.

Balíček HERE SDK podľa konvencie používa posluchače na opakujúce sa udalosti, ako sú udalosti gestami. Jednotlivé udalosti, ktoré je potrebné zvládnuť iba raz, vyžadujú spätné volanie.

Pri vyberaní položiek rovnakého typu môžete inštancie porovnávať volaním prepísanej metódy equals ().

Pridávanie metadát

V mnohých prípadoch môžu používatelia chcieť komunikovať so zobrazenými značkami - napríklad klepnutím na výsledok vyhľadávania zobrazíte ďalšie podrobnosti o reštaurácii. Za týmto účelom môže MapMarker uchovávať inštanciu triedy Metadata, takže je možné k nej pripojiť rôzne typy údajov - dokonca sú podporované aj vlastné typy.

Metadáta môžu obsahovať niekoľko párov kľúč/hodnota. Ďalej vytvoríme nový kľúč s názvom „key_poi“ a ako hodnotu obsahujúcu informácie o type markera nastavíme reťazec:

Iste, môžete nastaviť všetky potrebné informácie. V okamihu, keď si chceme prečítať obsah inštancie Metadata, jednoducho požiadame o údaje uložené pre kľúč, ktorým je v našom prípade „key_poi“:

Inštancia MapMarker v predvolenom nastavení neobsahuje metadáta a mapMarker.getMetadata () môže vrátiť hodnotu null. Údaje, ku ktorým má prístup kľúč, môžu byť tiež nulové, ak objekt Metadata také informácie neobsahuje.

Ak áno, vyhľadáme reťazec uložený pre náš kľúč „key_poi“ a zavoláme pomocnú metódu, ktorá používateľovi predloží obsiahnutý reťazec. Ako kľúč si môžete vybrať ľubovoľný reťazec na základe svojich preferencií, ale použiť jedinečný kľúč, inak prepíšete obsah uložený pre inú údajovú položku. Ak chcete zobraziť zdrojový kód celého príkladu, skontrolujte Príkladná aplikácia MapMarker.

Do metadát môžete tiež uložiť vlastné objekty pomocou rozhrania CustomMetadataValue. Príklad možno nájsť v sekcii Hľadanie, kde je dátový objekt výsledku vyhľadávania uložený ako celok.


Pozri si video: Excel 19 - spojnicový graf (Septembra 2021).