Viac

Vytvárate vrstvy vytvorené vo vlastnom skripte pythonu na pridanie do súboru mxd?

Vytvárate vrstvy vytvorené vo vlastnom skripte pythonu na pridanie do súboru mxd?


Snažím sa vytvoriť jednoduchý vyhľadávací nástroj, aby moji kolegovia mohli ľahko vyhľadávať v databáze. Moja prvá verzia je taká.

mxd = arcpy.mapping.MapDocument ("AKTUÁLNE") df = arcpy.mapping.ListDataFrames (mxd) [0] SearchTerm = arcpy.GetParameterAsText (0) Fuzzy = arcpy.GetParameterAsText (1) if NewFace = .MakeFeatureLayer_management (r "W:  Source.lyr", "Výsledky vyhľadávania (" + SearchTerm + ")", "PROC_NAME LIKE '%" + SearchTerm + "%'") iné: NewLayer = arcpy.MakeFeatureLayer_management (r "W :  Source.lyr "," Výsledky vyhľadávania (" + SearchTerm +") "," PROC_NAME = '" + SearchTerm +"' ")

Funguje to podľa očakávania, ak kód spustím cez okno pythonu (s parametrami napevno), ale keď ho spustím ako skript v paneli nástrojov, nič sa nestane. Myslím, že ArcMap automaticky nepridá vrstvu, ktorú vytvoríte v skripte, preto som pridal:

arcpy.mapping.AddLayer (df, NewLayer, "TOP")

To nedáva pridať vrstvu do môjho mxd a zobrazí mi chybové hlásenie:Chyba pri spustení :

Určite by to malo byť celkom jednoduché. Existuje lepší spôsob, ako to urobiť?


Táto situácia je vždy mätúca. V arcpy existujú dva typy „vrstiev“. Vrstva funkcií, ktorú vytvárate, nie je typom, ktorý môžete pridať na mapu. Druhá je vrstva generovaná z mapovacieho modulu. Toto je ten, ktorý chcete. NamiestoMakeFeatureLayer, skúste to:

NewLayer = arcpy.mapping.Layer (r "W:  Source.lyr")

Potom môžete vykonať svojearcpy.mapping.AddLayer (df, NewLayer, "TOP").


Nie je možné obnoviť vrstvu triedy TextVectorization - klasifikácia textu

Keď spustím príklad poskytnutý oficiálnou základnou klasifikáciou textu tensorflow, všetko beží dobre, kým sa model neuloží, ale keď načítam model, zobrazí sa táto chyba.

RuntimeError: Nie je možné obnoviť vrstvu triedy TextVectorization. Vrstvy triedy TextVectorization vyžadujú, aby bola trieda poskytnutá kódu načítania modelu, a to buď registráciou triedy pomocou @keras.utils.register_keras_serializable v triede def a zahrnutím tohto súboru do vášho programu, alebo odovzdaním triedy do súboru keras.utils .CustomObjectScope, ktorý zabalí toto volanie načítania.

Očakávané správanie: Model by sa mal úspešne načítať a spracovať nespracovaný vstup


Práca s odvodenými výstupmi

Posledný parameter zobrazený vyššie je odvodeným výstupným parametrom. Odvodený výstupný parameter má päť použití takto:

  • Výstup je rovnaký ako vstup, napríklad Vypočítať pole alebo príklad uvedený vyššie. Pole Vypočítať zmení hodnoty konkrétneho poľa vo vstupnej tabuľke - nevytvorí novú tabuľku ani nezmení schému vstupu. Ďalšie nástroje, ktorých výstup je rovnaký ako vstup, nájdete v paneli nástrojov Úpravy.
  • Nástroj upravuje schému vstupu, napríklad Pridať pole. Pridať pole pridá pole do vstupnej tabuľky - nevytvorí novú výstupnú tabuľku.
  • Nástroj vytvára výstup pomocou informácií v iných parametroch, ako je napríklad nástroj Vytvoriť triedu prvkov. Pomocou nástroja Vytvoriť triedu prvkov zadáte pracovný priestor a názov novej triedy prvkov a trieda funkcií sa vytvorí pre vás.
  • Nástroj vytvára skalárnu hodnotu na rozdiel od množiny údajov. Get Count napríklad vydáva dlhé (počet záznamov). Kedykoľvek nástroj vydá skalárnu hodnotu, výstup je odvodený.
  • Nástroj vytvorí údaje na známom mieste. Môžete mať napríklad skript, ktorý aktualizuje existujúcu tabuľku v známom pracovnom priestore. Užívateľ nemusí túto tabuľku poskytovať v dialógovom okne alebo v skriptoch.

1.4.1 Predstavenie Pythonu pomocou okna Python v ArcGIS

Najlepším spôsobom, ako zaviesť Python, môže byť pozrieť sa na malý kúsok kódu. Zoberme si nástroj Buffer, ktorý ste nedávno spustili, z tably Geoprocessing a spustite ho v okne ArcGIS Python. Toto okno vám umožňuje písať jednoduchú sériu príkazov Pythonu bez písania úplných trvalých skriptov. Okno Python je úžasný spôsob, ako si urobiť chuť v jazyku Python.

Dnes urobíme nárazníky 15 míľ po mestách.

  1. V ArcGIS Pro otvorte novú prázdnu mapu.
  2. Pridajte množinu údajov us_cities.shp z údajov lekcie 1.
  3. Pod Analýza Na karte v rozbaľovacej ponuke kliknite na ikonu Okno Python tlačidlo (nie Notebook).

Do okna Pythonu zadajte nasledujúci text (Nezadávajte & gt & gt & gt. Tieto sú len zahrnuté, aby vám ukázali, kde v okne Pythonu začínajú nové riadky.)

Priblížte a potvrďte, že boli vytvorené vyrovnávacie pamäte.

Práve ste spustili svoj prvý kúsok Pythonu. Nemusíte rozumieť všetkému o kóde, ktorý ste napísali v tomto okne, ale tu je niekoľko dôležitých vecí, ktoré je potrebné poznamenať.

Prvý riadok skriptu - import arcpy - hovorí interpretu Pythonu (ktorý bol nainštalovaný pri inštalácii ArcGIS), že budete pracovať s niektorými špeciálnymi skriptovacími funkciami a nástrojmi, ktoré sú súčasťou ArcGIS. Bez tohto riadku kódu Python nevie nič o ArcGIS, takže ho zaradíte na začiatok celého kódu súvisiaceho s ArcGIS, ktorý píšete v tejto triede. Tento riadok technicky nepotrebujete, keď pracujete s oknom Pythonu v programe ArcMap, pretože arcpy je už importovaný, ale chcel som vám tento vzor ukázať čoskoro, budete ho používať vo všetkých skriptoch, ktoré píšete mimo okna Pythonu.

V druhom riadku skriptu je nástroj v skutočnosti spustený. Na spustenie nástroja v Pythone môžete napísať arcpy plus bodku a akýkoľvek názov nástroja. Tu si všimnite, že zadáte aj podčiarkovník a za ním názov súboru nástrojov, ktorý obsahuje nástroj Vyrovnávacia pamäť. Je to nevyhnutné, pretože niektoré nástroje v rôznych súboroch nástrojov majú v skutočnosti rovnaký názov (napríklad Clip, ktorý je nástrojom na orezávanie vektorov v súbore nástrojov Analysis alebo nástrojom na orezávanie rastrov v paneli nástrojov Data Management).

Po zadaní arcpy.Buffer_analysis ste zadali všetky parametre pre nástroj. Každý parameter bol oddelený čiarkou a celý zoznam parametrov bol uzavretý v zátvorkách. Zvyknite si na tento vzorec, pretože ho budete dodržiavať pri každom nástroji, ktorý v tomto kurze spustíte.

V tomto kóde sme tiež dodali niekoľko voliteľných parametrov, pričom sme ponechali prázdne úvodzovky, kde sme chceli vziať predvolené hodnoty, a skrátili sme zoznam parametrov na konečný voliteľný parameter, ktorý sme chceli nastaviť.

Ako poznáte syntax alebo štruktúru parametrov, ktoré chcete zadať? Napríklad pre vzdialenosť vyrovnávacej pamäte by ste mali zadať 15 míľ, 15 míľ, 15 míľ alebo 15 míľ? Najlepším spôsobom, ako odpovedať na tieto otázky, je vrátiť sa k téme pomoci referenčného pomocníka k nástroju Geoprocessing pre nástroj Vyrovnávacia pamäť. Všetky témy v tejto referenčnej sekcii majú sekcie Použitie a Ukážka kódu, ktoré vám pomôžu porozumieť štruktúre parametrov. Voliteľné parametre sú uzavreté v zátvorkách, zatiaľ čo požadované parametre nie sú. Na príklade v tejto téme vidíte, že vzdialenosť vyrovnávacej pamäte by mala byť zadaná ako „15 míľ“. Pretože v tomto texte alebo reťazci je medzera, musíte ho obklopiť jednoduchými úvodzovkami.

Možno ste si všimli, že okno Pythonu vám pomôže tým, že sa vám otvoria rôzne možnosti, ktoré môžete zadať pre každý parameter. Hovorí sa tomu automatické dokončovanie a môže to byť veľmi užitočné, ak sa pokúšate spustiť nástroj prvýkrát a neviete presne, ako zadať parametre. Tiež ste si mohli všimnúť, že sa vám pri zadávaní názvu funkcie objaví nejaký kód, ako napríklad (analýza Buffer () a Buffer3D () 3d). Na zvýraznenie alternatív môžete použiť svoje šípky nahor/nadol. Ak ste vybrali analýzu Buffer (), zobrazí sa vo vašom okne v jazyku Python.

Upozorňujeme, že ak použijete dokončenie kódu, váš kód bude niekedy vyzerať trochu inak - esri preorganizovalo, ako sú funkcie usporiadané v rámci arcpy, fungujú rovnako, len sú na trochu inom mieste. „Starý“ spôsob však stále funguje, takže v tejto triede, online fórach, dokumentácii esri atď. Môžete vidieť nezrovnalosti. V tomto prípade sa teda arcpy.Buffer_analysis (.) Zmenil na arcpy.analysis.Buffer (.), Čo odráža nástroj Buffer sa nachádza v súbore nástrojov na analýzu v Pro.

Existuje niekoľko rozdielov medzi písaním kódu v okne Pythonu a písaním kódu v inom programe, napríklad v programe Poznámkový blok alebo Spyder. V okne Python môžete na vrstvy v dokumente mapy odkazovať iba podľa ich názvu, a nie podľa cesty k súboru. Mohli sme teda napísať „us_cities“ namiesto niečoho ako „C: data us_cities.shp“. Tiež sme dokázali vytvoriť názov novej vrstvy „us_cities_buffered“ a po spustení kódu ho štandardne pridať na mapu. Ak budete svoj kód používať mimo okna Pythonu, uistite sa, že používate úplné cesty.

Keď píšete zložitejšie skripty, bude užitočné použiť integrované vývojové prostredie (IDE), čo znamená program špeciálne navrhnutý tak, aby vám pomohol písať a testovať kód v jazyku Python. Neskôr v tomto kurze preskúmame IDE Spyder.

Na začiatku tejto lekcie ste videli, ako je možné nástroje prepojiť a vyriešiť problém pomocou ModelBuilder. To isté sa dá urobiť v Pythone, ale na to, aby sme sa dostali k tomuto bodu, bude potrebovať trochu základov. Z tohto dôvodu strávime zvyšok lekcie 1 pokrytím niektorých základov Pythonu.

Čítania

Edícia ArcGIS Pro:

Nájdite si pár minút na prečítanie Zandbergenu 2.7 a 2.9-2.13, kde vysvetľuje okno Pythonu a niektoré veci, ktoré s ním môžete robiť.

Edícia ArcMap:

Nájdite si pár minút na prečítanie Zandbergenovej kapitoly 3, pomerne krátkej kapitoly, kde vysvetľuje okno Pythonu a niektoré veci, ktoré s ním môžete robiť. Rozdiely, ktoré je potrebné poznamenať v Pro:


Predpoklady

Zoznam materiálov:

    1. Sentinel-1 Toolbox
        a nainštalujte správnu verziu pre svoj operačný systém. Softvér sa nainštaluje ako SNAP (Sentinels Application Platform).
  1. Údaje (poskytnuté ukážkové obrázky). Svoje vlastné obrázky nájdete na serveri ASF ’s Vertex.
  2. Poznámka: Budete vyzvaní na zadanie prihlasovacieho mena a hesla pre aplikáciu Earthdata, alebo musíte byť už prihlásení do programu Earthdata, než sa začne sťahovanie.

    Presuňte tieto súbory do pracovného adresára pre obrázky Sentinel-1, aby ste zorganizovali pracovný postup spracovania, ale nerozbaľujte súbory.

    Požiadavky na systém:

    Vytvorenie interferogramu pomocou programu Sentinel-1 Toolbox je proces veľmi náročný na počítačové zdroje a niektoré kroky môžu trvať veľmi dlho. Tu je niekoľko rád, ktoré vám pomôžu urýchliť situáciu a zabrániť zamrznutiu programu.

    • Windows alebo Mac OS X
    • Vyžaduje najmenej 16 GB pamäte RAM
    • Solid State Drive, na rozdiel od pevného disku, urýchli spracovanie
    • Zatvorte ostatné aplikácie
    • Nepoužívajte počítač, pokiaľ sa spracováva produkt
    • Po vygenerovaní nového produktu odstráňte predchádzajúci produkt.

    Nástroje na konverziu

    Text CAD v programe ArcGIS Pro je možné previesť na triedu prvkov anotácií pomocou nástroja Konvertovať štítky na anotáciu.

    Pokrytie

    Pokrytia nie sú v programe ArcGIS Pro podporované.

    Geodatabáza

    Metadáta

    Nástroje na geoprocesing metadát nie sú v ArcGIS Pro k dispozícii, pracovné toky metadát však môžete automatizovať pomocou modulu arcpy.metadata.

    • Prekladač metadát Esri
    • Export metadát
    • Exportovať viacero metadát
    • Import metadát
    • Importér metadát
    • Vydavateľ metadát
    • Synchronizovať metadáta
    • Inovovať metadáta
    • Prekladač metadát MP USGS
    • Overiť metadáta
    • Overiť násobok metadát
    • Overenie schémy XML
    • Transformácia XSLT

    Raster


    Voliteľný krok: Mapu nemusíte preštylizovať, ale pri zobrazení pomôže.

    Aby boli naše štítky viditeľnejšie, musíme sa zbaviť časti hluku na mape, ktorý vytvárajú iné štítky. Tu je teda užitočný kód na odstránenie rôznych druhov štítkov (administratívne, geografické, cestné atď.).

    Pridajte tento kód (vložte ho do funkcie initMap ()):

    Vytvorí sa tak vlastná vrstva, ako napríklad cestovná mapa alebo satelitná mapa, na ktorú sa používateľ môže prepnúť, a umožní tak odstránenie štítkov. Toto je úhľadný trik, ktorý môžete mať vo svojej súprave nástrojov!


    Ako prepínať viditeľné / voliteľné / renderovateľné pre viac objektov?

    Pomerne dlho som hľadal rýchlejší spôsob, ako prepínať (alebo vypínať) viditeľné / voliteľné a renderovateľné objekty pre mnohé objekty, ako je to znázornené nižšie:

    Viem, že relatívne rýchly výber môžeme urobiť potiahnutím v Outliner, ale nie je to také rýchle, ale môžeme tiež vyskúšať H a Alt H, ako aj Ristrict Render, ale objekty musia byť najskôr vyberateľné.

    Ako to teda môžem urobiť rýchlejšie? Skript by bol v prípade potreby prijateľný.

    Aby som svoju otázku zjednodušil iným spôsobom: Existuje spôsob, akým by bolo možné zjednotiť všetky vylepšené položky uvedené v Outliner? Napríklad chcem, aby boli všetky objekty vyberateľné, čo mám robiť namiesto toho, aby som ich musel prepínať jeden po druhom? Intuitívne som sa pokúsil dvakrát stlačiť A v Outliner, potom stlačiť S, myslel som si, že to bude fungovať podobne, ako funguje A všade, mám na mysli akési „zjednotené“ prepínanie, zapínanie alebo vypínanie všetkých bez ohľadu na ich počiatočnú zvoliteľnosť. . Zdá sa však, že to nie je možné vykonať týmto spôsobom. Preto hľadám lepší spôsob, ako to urobiť.

    Jediný spôsob, ktorý si myslím, je najskôr ich všetky zoskupiť a potom prepnúť na typ zobrazenia obrysov SkupinyTeraz ich môžem prepnúť jediným kliknutím. Existujú však štyri problémy:


    Skript Python na monitorovanie služieb systemd (využitie CPU/pamäte)

    Toto je skript python (2.7.13 podľa sys.version), ktorý číta názvy systémových služieb zo súboru a zisťuje využitie CPU a pamäte. Vykoná to tak, že najskôr získa hlavný PID služby buď tak, že ho vyhľadá v adresári /var /run (väčšina služby majú súbor pid obsahujúci hlavný PID, existujú však rôzne spôsoby vytvárania - v podpriečinku alebo nie, s konkrétnym názvom a podobne, ale takmer všetky majú príponu .pid) alebo ak to zlyhá, len to zdrvuje. Prvý spôsob nie je rovnaký pre všetky služby, ale vynaložil som úsilie, aby som to urobil, pretože je to optimalizovanejší a rýchlejší spôsob zhromažďovania týchto informácií, pričom čítanie z externého grepu je problém. Po získaní PID získam všetky podradené procesy a vypočítam ich využitie CPU zo súborov /proc stat (to je to isté, čo robí psutil, mohol by som ho použiť na využitie CPU, ale keďže poznám spôsob a funguje to - funguje to je rýchlejšie implementované ručne, alebo je ..). Na využitie pamäte som túto časť preskočil a použil priamo psutil. Naozaj by som chcel zlepšiť formátovanie a čitateľnosť svojho kódu, ako aj jeho výkon. A mám niekoľko otázok, ako napríklad:

    Je vhodné vykonať všetky tieto kontroly súboru pid v súbore /var /run, aby ste ušetrili čas z externého grepovania?

    Sú všetky tie vnorené, ak sú tam, spolu s pokusom / okrem nich, dobrým štýlom, a ak nie, ako by som ich mohol nahradiť?

    Je zlý postup manuálne implementovať zhromažďovanie informácií o využití CPU a súčasne používať externú knižnicu na využitie pamäte?

    Akékoľvek návrhy týkajúce sa formátovania, štýlu, čitateľnosti, optimalizácie atď. Sú vítané. Skript beží relatívne rýchlo (

    0,8 s/10 služieb) na svojom počítači však mám disk SSD a za predpokladu, že by mohol bežať na počítači s pevným diskom alebo dokonca na pomalších procesoroch, mohol by byť čas vykonania oveľa vyšší, najmä ak ide o 100 služieb a nie o 10.


    Nástrojová izolácia

    Ako zarovnám údaje z Nadácie distribučného systému vody so schémou pre stopu izolácie?

    Ak chcete zarovnať údaje zo schémy Foundation Water Distribution System Foundation pre nástroj Isolation Trace, musíte použiť nástroj Zlúčiť a skombinovať súvisiace vrstvy funkcií do troch jednoduchých vrstiev. Vytvorte vrstvy Zostava, Služba a Hlavná vrstva zlúčením nasledujúcich tried funkcií:

    • Zostava — AirVacuumAirReleaseAssembly, BackflowAssembly, BlowOffAssembly a HydrantAssembly
    • Služba — AirVacuumService, BlowOffService, CommercialService, HydrantService, IndustrialService, IrrigationService, ResidentialService a SamplingService
    • Hlavný - hlavný distribúcia a hlavný prenos

    Prečo nemôžem umiestniť túto šablónu do priečinka ArcGIS Server alebo akéhokoľvek priečinka zaregistrovaného na serveri ArcGIS Server?

    1. Odstráňte starý súbor IsolationTrace.pyt.
    2. Znova spustite nástroj Generate Web Isolation Trace Toolbox a overte, či výstupný priečinok nie je nastavený na priečinok ArcGIS Server alebo iný priečinok zaregistrovaný na serveri ArcGIS Server.
    3. Pri použití nového súboru IsolationTrace.pyt postupujte podľa pokynov v sekcii Publikovať službu sledovania izolácie.

    Mal som Utility Isolation Trace, ale vidím, že riešenie je teraz v zrelej podpore. Musím nainštalovať celý výpadok vody, aby som mohol aktualizovať svoje staré nastavenie?

    Áno, nasadíte riešenie odstávky vody, ale nemusíte nastavovať a konfigurovať všetky súčasti. Riešenie bolo začlenené do šablóny Výpadok vody, aby sa zjednodušil tok informácií a rozšírili bežné možnosti ArcGIS. Ak chcete využiť vylepšenú logiku sledovania a miniaplikáciu pre existujúce riešenie, môžete tak urobiť.


    Pozri si video: 1 - Intro - ArcGIS Pro Scripting with Python and Arcpy