Více

Jak rozšířit rozsah rastru a přidat nulovou hodnotu do rozšiřující části?

Jak rozšířit rozsah rastru a přidat nulovou hodnotu do rozšiřující části?


Spustil jsem hydraulický model a dostal jsem výsledek hloubkového rastru sedimentu (hnědého). Chci shrnout rastr sedimentu s topografickým rastrem (černý), takže po aplikaci hloubky sedimentu budu mít výšku koryta.

Mým cílem je mít příčný profil řeky po aplikaci hloubky sedimentu na počáteční nadmořskou výšku koryta. Dříve jsem používal nástroj Stack Profile a pomocí linefile souboru podepsal umístění příčného profilu. Problém je v tom, že rozsah sedimentárního rastru není dostatečně velký, aby zvládl topografický rastr, takže když jsem z nich vytvořil křížový profil, oba rastry nebyly správně zarovnány.

Jaké kroky bych měl podniknout, pokud chci rozšířit rozsah rastru sedimentu a dát nulové hodnoty do expanzních buněk?

Máte nějakou představu o tom, co bych měl udělat, abych dostal křížové profily rastru sedimentů a rastr topografie na přesné místo (například: růžová čára)?


Pokud je to možnost. Znovu vytvořte rastr Sedimentu, ale předem definujte rozsah zpracování v prostředí svých nástrojů (nebo modelu) jako rozsah DEM. To by rozšířilo rozsah vašeho výstupu a překrylo jeho buňky tak, aby odpovídaly buňkám DEM. Pokud však váš model Hydrualic není založen na arcgis-desktop, můžete jej chtít převzorkovat pomocí nástroje pro převzorkování. Možná budete chtít také definovat rozsah zpracování v rozsahu vašeho demu. Všimněte si, že převzorkování mění vaše data, tj. Rastr sedimentů.


Nakonec jsem zjistil, jak na to! Mým skutečným problémem je, že rastr sedimentu obsahuje hodnoty „NoData“, takže nástroj Stack Profile nemůže hodnoty číst. Takže jednoduše sčítám topografický rastr s rastrem sedimentu pomocí Raster Calculator s použitím funkce Con (IsNull) na sediment raster => Con (Isnull ("sediment raster"), 0, "sediment raster").


Soils2026 a digitální mapování půdy - základ pro budoucnost informací o půdách ve Spojených státech

Soils2026 poskytne kompletní, konzistentní, správný, komplexní a aktuální inventář půd pro USA.

Digitální mapování půdy vytvoří rastrové produkty pro interpretaci fyzikálních, chemických a biologických vlastností půdy.

Produkty Soils2026 budou zahrnovat kontinuální předpovědi vlastností půdy a odhady nejistoty.

Pro budování kapacit mezi odborníky na DSM v USA byla vyvinuta školicí osnova a mentorský program.

Soils2026 přinese nejlepší dostupné údaje o vědě o půdě k posouzení dopadů na zdroje a vedení ochrany.


2 odpovědi 2

Ukázalo se, že problém spočíval v tom, že jsem nastavoval výplň na TextView v záhlaví skupiny, což pak narušovalo obraz. Zjistil jsem, že celá výchozí záhlaví skupiny a vlastní indikátor jsou pro práci extrémně těžkopádné, nemůžete řádek vůbec přizpůsobit, aniž byste narušili obraz, takže jsem místo toho místo toho použil vlastní zobrazení pro záhlaví skupiny.

Nastavte ExpandableListView's groupIndicator na @null:

Přidejte vlastní záhlaví skupiny, v mém případě ListViewGroupHeader.axml:

Nastavit vlastní rozložení v metodě GetGroupView vašeho adaptéru, klíčování off isExpanded vlastnost pro který obrázek zobrazit:


Jak mohu rozšířit svůj výřez v openGL, aby byl tištěný text správně oříznut?

Používám tento kód k nakreslení textu v openGL s GLUT:

Kód (počáteční část), který nastavuje můj původ (0,0) do levého horního rohu a udržuje správný koordinační systém založený na rozlišení obrazovky:

A všechno by bylo perfektní, kdyby nejen skutečnost, že když X a Y začínají v záporné koordinaci (vzhledem k tomu, že objekty s textem vytištěným jako tag, jsou částečně mimo pohled, pak se celý text nekreslí.) že mám nahoře objekt s textovou značkou a vstupuje do pohledu z levého horního rohu na x = -40, y = 40:

Text se nevytiskne, dokud nebude čerpán z přesně X => 0 koordinace. Také tento problém neexistuje, když text musí být oříznut na PRAVOU stranu - pak je správně vytištěn - to je místo, kde jsem si uvědomil, že to souvisí s počáteční pozicí textu.

Moje otázka zní - jak mohu správně ROZŠÍŘIT mapování výřezu / obrazovky na:

1) zachovat koordinace obrazovky z levého horního rohu (0,0) do pravého dolního rohu (výška, šířka) 2) s vnitřně rozšířenými hodnotami právě během tisku textu - takže text by se místo oříznutí ořízl?

I když jsem provedl svůj průzkum, nemohl jsem 2 dny přijít k žádnému řešení. Snažil jsem se hrát s glViewport a glOrtho, ale žádná ze změn a přístupů, které jsem zkoušel (jako například nastavení glViewport na -x, -y, x * 2, y * 2), by nedělal trik - ti se vždycky potýkají s mým koordinačním systémem obrazovky což je zásadní pro zachování rozlišení okna.

10.070 Jak nakreslím primitiva glBitmap () nebo glDrawPixels (), která mají počáteční glRasterPos () mimo levý nebo spodní okraj okna?

Když je poloha rastru nastavena mimo okno, je často mimo objem zobrazení a následně označena jako neplatná. Při neplatné pozici rastru nedojde k vykreslení primitiv glBitmap a glDrawPixels. Protože glBitmap / glDrawPixels vytvářejí pixely nahoře a napravo od polohy rastru, zdá se nemožné vykreslit tento typ primitivního oříznutí levým a / nebo spodním okrajem okna.

Zde je však často používaný trik: Nastavte pozici rastru na platnou hodnotu uvnitř objemu pohledu. Potom proveďte následující hovor:

To řekne OpenGL, aby vykreslil no-op bitmapu, ale přesunout aktuální pozici rastru o (xMove, yMove). Vaše aplikace dodá (xMove, yMove) hodnoty, které umístí pozici rastru mimo objem pohledu. Následujte toto volání pomocí glBitmap () nebo glDrawPixels () a proveďte požadované vykreslení.

Bohužel - nemohu tuto radu uplatnit - a jakmile ji použiji - text úplně chybí.


Abstraktní

Velká masožravci historicky celosvětově ubývají, často v důsledku konfliktů mezi lidmi a masožravci. Velká masožravci se však v celé Evropě zotavují a evropské scénáře řízení mohou poskytnout důležité poznatky o širokých otázkách týkajících se existence velkých masožravců. Poté, co švédský šedý vlk v polovině 19. století téměř vyhynul (v polovině 19. století) (Canis lupus) populace se nyní zotavila. Současné národní vedení vlků si klade za cíl podporovat distribuční posuny ze současných oblastí ve středním Švédsku, potenciálně také do dříve osvobozené oblasti chovu sobů. Předchozí znovuzavedení vlků zdůraznilo nutnost proaktivního řízení pro úspěch kolonizace. Identifikace pravděpodobných oblastí rozšíření dosahu by proto mohla být pro úspěšné vedení švédského vlka rozhodující. Charakterizovali jsme demografický a prostorový vývoj švédských vlků v letech 2001–2015 a k identifikaci potenciálních oblastí rozšíření rozsahu jsme použili přístup MaxEnt k modelům distribuce druhů. Populace švédských vlků se rozšířila z 10 na téměř 60 reprodukcí nebo teritoriálních párů a zvýšila se jak velikost, tak hustota rozsahu. Naše modely distribuce naznačují, že švédská správa vlků může čelit kompromisům mezi náklady na hostování vlků v hustě obydlených oblastech v jižním Švédsku s dobytkem a ovcemi a náklady na umožnění vlkům expandovat do oblastí chovu sobů se souvisejícími kulturními a ekonomickými důsledky. Prostorově explicitní údaje o ekonomických, sociálních a kulturních faktorech spojených s vlčím konfliktem a přijetím mohou být zásadní pro rozvoj optimálních strategií řízení tváří v tvář takovému kompromisu.


ArcGIS Pro upravuje rastrové hodnoty změnou konkrétního počtu pixelů do jiné jedinečné třídy hodnot (funkce rozšíření)

Mám mapu landuse, která se skládá z rastrových dat. Mám 10 tříd landuse (jedinečné hodnoty). Chci rozšířit jednu třídu o zadané množství pixelů. Už jsem se pokusil použít funkci Geoprocessing expand, ale s touto funkcí mohu přidat pouze zóny s celým číslem větším než 0. Takže mohu rozšířit pouze třídu hodnoty zóny přidáním 1 (nebo jakéhokoli jiného celého čísla) více pixelů pro každou existující zónu . Jelikož nemohu použít desítkové, nemohu svoji třídu rozšířit o určité množství pixelů. Víte o nějaké jiné funkci, která by vám pomohla s tímto problémem? Zkoušel jsem také editor pixelů, ale s tím musím označit každý pixel, který chci změnit. Existuje nějaká automatická funkce k použití?


Upravit: Toto pokrývá nejpravděpodobnější interpretaci, podle mého názoru, „nulového nebo prázdného“, jak je odvozeno z otázky, včetně jeho pseudokódu a mé vlastní rané zkušenosti s XSLT. Tj. „Co je ekvivalentem následující Javy?“

Více podrobností, např. Zřetelně identifikující null vs. prázdný, viz odpověď Johveyho níže a / nebo XSLT „housle“, které jsem z této odpovědi upravil, což zahrnuje možnost v komentáři Michaela Kaye a šestý možný výklad.

Chybějící další informace, předpokládám následující XML:

Ukázkový případ použití by vypadal takto:

Chcete-li otestovat, zda je hodnota určitého uzlu prázdná

Záleží na tom, co myslíte prázdným.

  • Neobsahuje žádné podřízené uzly: ne (node ​​())
  • Neobsahuje žádný textový obsah: ne (řetězec (.))
  • Neobsahuje žádný jiný text než mezery: not (normalize-space (.))
  • Neobsahuje nic kromě komentářů: not (node ​​() [not (self :: comment ())])

První dva se zabývají nulovou hodnotou a druhé dva se zabývají prázdným řetězcem.

V některých případech možná budete chtít vědět, kdy je hodnota konkrétně null, což je zvláště nutné při použití XML, který byl serializován z objektů .NET. Zatímco přijatá odpověď funguje, vrací stejný výsledek, i když je řetězec prázdný nebo prázdný, tj. '', Takže nemůžete rozlišovat.

Atribut tedy můžete jednoduše otestovat.

Někdy je nutné znát přesný stav a nemůžete jednoduše zkontrolovat, zda je vytvořena instance CategoryName, protože na rozdíl od říci Javascript

Vrátí true pro nulový prvek.

Jak mohu zkontrolovat, zda je hodnota prázdná nebo prázdná pomocí XSL?

Pokud je například categoryName prázdný?

Toto je pravděpodobně nejjednodušší výraz XPath (ten v přijaté odpovědi poskytuje test opaku a byl by delší, kdyby byl negován):

Vysvětlení:

Argument výše uvedené funkce not () je false () přesně v případě, že neexistuje žádný podřízený prvek categoryName ("null") kontextové položky, nebo podřízený prvek (single single) categoryName má hodnotu řetězce - prázdný řetězec.

Používám a při výběru postavit.

Například:

V použití XSLT 2.0:

Zde je úplný příklad:

Když je tato transformace použita v následujícím dokumentu XML:

je požadovaný požadovaný výsledek:

Při použití v tomto dokumentu XML:

získá se správný výsledek:

Podobně použijte toto XSLT 1.0 proměna:

Dělejte si poznámky: Vůbec se nepoužívají žádné podmínky. Další informace o tom, jak je důležité se vyhnout podmíněným konstrukcím, se dozvíte v tomto pěkném kurzu Pluralsight:

Vím, že tato otázka je stará, ale mezi všemi odpověďmi mi chybí jedna, která je společným přístupem pro tento případ použití ve vývoji XSLT.

Představuji si, že chybějící kód z OP vypadá asi takto:

A že vstup vypadá nějak takto:

Tj. Předpokládám, že mohou existovat nulové, prázdné, jednoduché nebo více prvků categoryName. Vypořádat se se všemi těmito případy pomocí konstruktů xsl: choose -style, nebo jinými slovy imperativně, je rychle nepořádek (ještě více, pokud mohou být prvky na různých úrovních!). Typickým programovacím idiomem v XSLT je používání šablon (tedy T v XSLT), což je deklarativní programování, nikoli imperativní (neřeknete procesoru, co má dělat, pouze řeknete, jaký výstup chcete, pokud jsou splněny určité podmínky). V tomto případě použití to může vypadat nějak takto:

Funguje to (s jakoukoli verzí XSLT), protože první z nich má vyšší prioritu (má predikát). Druhá „shodná“ šablona zachycuje vše, co není platné. Třetí se pak postará o správné odeslání hodnoty categoryName.

Všimněte si, že v tomto scénáři není nutné konkrétně odpovídat kategoriím nebo kategoriím, protože procesor automaticky zpracuje všechny podřízené položky, pokud to neřekneme jinak (v tomto příkladu druhá a třetí šablona děti dále nezpracovávají, protože existuje no xsl: apply-templates in them).

Tento přístup je snadněji rozšiřitelný než imperativní přístup, protože se automaticky zabývá více kategoriemi a lze jej rozšířit pro další prvky nebo výjimky pouhým přidáním další odpovídající šablony. Programování bez větví if.

Poznámka: v XML neexistuje nic jako null. Existuje xsi: nil, ale to se používá jen zřídka, zvláště zřídka v netypových scénářích bez nějakého schématu.


33 odpovědí 33

Vidím, že se tato otázka stala populární, a proto zveřejňuji své skutečné řešení. Hlavní výhodou je, že pro použití animace nemusíte znát roztaženou výšku a jakmile se rozbalí, upraví výšku, pokud se obsah změní. Funguje to pro mě skvěle.

Jak uvádí @Jefferson v komentářích, můžete získat plynulejší animaci změnou doby trvání (a tedy i rychlosti) animace. Aktuálně byla nastavena na rychlost 1dp / ms

Dnes jsem narazil na stejný problém a myslím, že skutečné řešení této otázky je toto

Tuto vlastnost budete muset nastavit pro všechna nejvyšší rozvržení, která jsou do posunu zapojena. Pokud nyní nastavíte viditelnost jednoho rozložení na GONE, druhé vezme prostor, protože ho mizející uvolňuje. K dispozici bude výchozí animace, která je nějakým způsobem „vyblednutím“, ale myslím, že to můžete změnit - ale poslední, kterou jsem zatím netestoval.

Snažil jsem se udělat to, co považuji za velmi podobnou animaci, a našel jsem elegantní řešení. Tento kód předpokládá, že vždy přecházíte z 0-> h nebo h-> 0 (h je maximální výška). Tři parametry konstruktoru jsou view = pohled, který má být animován (v mém případě webový pohled), targetHeight = maximální výška pohledu a down = boolean, který určuje směr (true = rozšiřování, false = sbalení).

Vzal jsem řešení @LenaYan, které mi nefungovalo správně (protože to transformovalo Pohled na pohled výšky 0 před sbalením a / nebo rozšířením) a provedl několik změn.

Nyní to funguje skvěletím, že vezmete Pohled předchozí výška a začněte s touto velikostí expandovat. Sbalení je stejné.

Níže uvedený kód můžete jednoduše zkopírovat a vložit:

Snadné!

Děkuji LenaYan za počáteční kód!

Alternativou je použití animace měřítka s následujícími faktory měřítka pro rozbalení:

@Tom Esterezova odpověď, ale aktualizovaná tak, aby správně používala view.measure () pro Android, getMeasuredHeight vrátí nesprávné hodnoty!

Dobře, právě jsem našel VELMI ošklivé řešení:

Pokud se nechcete úplně rozbalit nebo sbalit - zde je jednoduchá HeightAnimation -

Upravil jsem aktuálně přijímanou odpověď Toma Estereze, která fungovala, ale měla trhanou a nepříliš plynulou animaci. Moje řešení v zásadě nahrazuje Animaci ValueAnimatorem, který může být vybaven interpolátorem dle vašeho výběru k dosažení různých efektů, jako je překmit, odraz, zrychlení atd.

Toto řešení funguje skvěle s pohledy, které mají dynamickou výšku (tj. Pomocí WRAP_CONTENT), protože nejprve měří skutečnou požadovanou výšku a poté se animuje do této výšky.

Potom jednoduše zavoláte expand (myView) nebo sbalíte (myView).

Využití funkcí rozšíření Kotlin je testována a nejkratší odpověď

Stačí zavolat animateVisibility (rozbalit / sbalit) na libovolném zobrazení.

Přidáním vynikající odpovědi Toma Estereze a vynikající aktualizace Erika B jsem si myslel, že zveřejním svůj vlastní záběr a zkomprimuji metody expand a contract do jednoho. Tímto způsobem můžete například provést takovou akci.

. který volá níže uvedenou metodu a nechá ji zjistit, co má dělat po každém onClick ().

Pro plynulou animaci použijte Handler s metodou run. A užijte si animaci rozbalení / sbalení

Chtěl bych přidat něco k výše uvedené velmi užitečné odpovědi. Pokud neznáte výšku, se kterou skončíte, protože vaše zobrazení .getHeight () vrací 0, můžete výšku získat následujícím způsobem:

Kde DUMMY_HIGH_DIMENSIONS je šířka / výška (v pixelech), do které je váš pohled omezen. mít toto obrovské množství je rozumné, když je pohled zapouzdřen pomocí ScrollView.

Toto je úryvek, který jsem použil k změně velikosti šířky pohledu (LinearLayout) s animací.

Kód se má podle velikosti cíle rozšířit nebo zmenšit. Pokud chcete šířku fill_parent, budete muset předat rodičovskou .getMeasuredWidth jako cílovou šířku a zároveň nastavit příznak na true.

Doufám, že to některým z vás pomůže.

Ano, souhlasil jsem s výše uvedenými komentáři. A skutečně se to jeví jako správná (nebo alespoň nejjednodušší?) Věc, kterou je zadat (v XML) počáteční výšku rozvržení „0px“ - a pak můžete předat další argument pro „toHeight“ ( tj. „konečná výška“) konstruktoru vaší vlastní podtřídy Animation, např ve výše uvedeném příkladu by to vypadalo asi takto:

kombinovaná řešení od společností @Tom Esterez a @Geraldo Neto

Tady je moje řešení. Myslím, že je to jednodušší. Pouze rozšiřuje pohled, ale lze jej snadno rozšířit.

Myslím, že nejjednodušším řešením je nastavit android: animateLayoutChanges = "true" na váš LinearLayout a pak jen zobrazit / skrýt pohled nastavením jeho viditelnosti. Funguje to jako kouzlo, ale nemáte žádnou kontrolu nad délkou animace

Jste na správné cestě. Ujistěte se, že máte v1 nastavenu nulovou výšku rozvržení těsně před spuštěním animace. Chcete zahájit nastavení tak, aby vypadalo jako první snímek animace před spuštěním animace.

Toto bylo moje řešení, můj ImageView rostl ze 100% na 200% a vrátil se do své původní velikosti pomocí dvou animačních souborů uvnitř res / anim / složky

anim_grow.xml

anim_shrink.xml

Odeslat ImageView mé metodě setAnimationGrowShrink ()

Toto je správné pracovní řešení, otestoval jsem ho:

Pohled v je pohled, který se má animovat, PARENT_VIEW je pohled kontejneru obsahující pohled.

Můžete použít Transition nebo Animator, který změní viditelnost sekce, která se má rozbalit / sbalit, nebo ConstraintSet s různými rozloženími.

Nejjednodušší je použít motionLayout se 2 různými rozloženími a sadami omezení pro změnu z jednoho rozložení na druhé po kliknutí na tlačítko. Mezi rozvržením můžete přepínat pomocí

S Přechod api

Ten jsem vytvořil v gif pomocí Transitions api, které mění rotationX.

vytvořit soubor XML, který cílí na tlačítko pro rozbalení

A nastavte viditelnost položek tak, aby se sbalily nebo rozbalily

A začněte přechod s

Vytvořil jsem ukázky animací a přechodů včetně té na gifu, můžete si je prohlédnout venku.


PODĚKOVÁNÍ

Tento přehled podpořil projekt pobřežní Oregonské námořní experimentální stanice (COMES) č. ASF501, Living Marine Resource Cooperative Science Center (LMRCSC) a NOAA Educational Partnership Program with Minority Serving Institution Graduate Research and Training Scholarship Program. Děkujeme Kathryn Ronnenberg za vytvoření postav použitých v celém rukopisu. Jsme také vděční dvěma recenzentům, kteří poskytli důvtipné komentáře, které pomohly vylepšit rukopis.


Abstraktní

V posledních desetiletích došlo v severním Středomoří k významným transformacím krajiny, včetně urbanizace, intenzifikace zemědělství a opouštění půdy, což zase zvyšuje riziko šíření požáru. Použili jsme průzkumy s opakovaným počítáním provedené na 369 místech ve Francii a Španělsku, abychom společně modelovali účinky environmentálních proměnných na početnost, obsazenost a detekci želvy Hermannovy, dlouhověkého a ohroženého druhu, pomocí nového přístupu bez nuly. Také jsme použili velkou datovou sadu dat pouze pro přítomnost shromážděných v Provence k modelování vlivů prostředí na pravděpodobnost výskytu pomocí modelů maximální entropie. Ve Francii i ve Španělsku hostily stránky, které za posledních 50 let zažily požáry, o 31% méně lidí než nespálené stránky. V Provensálsku snížila vyšší frekvence požárů pravděpodobnost výskytu tohoto druhu, z 50%, když za posledních 50 let došlo k požáru 0–1, na 7% v oblastech, které shořely nejméně třikrát. Ukázali jsme také, že hojnost vyžadovala dlouhou dobu zotavení (více než 25 let) po požárech. V Provensálsku byla nejvyšší pravděpodobnost výskytu tohoto druhu zjištěna v nepravidelné krajině a křovinaté a / nebo bylinné vegetaci. Nejnižší výskyt druhů byl zjištěn na rozsáhlých umělých plochách, vinicích a orných půdách. Tyto výsledky naznačují vysoké riziko vyhynutí populace v budoucnu, pokud se tyto typy stanovišť budou nadále rozšiřovat v rovinách a pobřežních oblastech na úkor křovin. Vyšší frekvence požárů předpovězená scénáři změny klimatu ve Středomoří také pravděpodobně zvýší riziko vyhynutí u některých populací.


Podívejte se na video: Autodesk Inventor - Jak přidat další měřítko do výchozího seznamu na výkrese