Viac

QGIS Pripojenie atribútov podľa umiestnenia nefunguje zo skriptu Python


Mám tvarový súbor s bodmi a tvarový súbor s mnohouholníkmi. Chcem zhrnúť hodnotu atribútu všetkých bodov, ktoré sa nachádzajú v určitom polygóne, a chcel by som to urobiť pre každý polygón v mojej množine údajov. Nástroj QGIS Join Attributes by Location mi pomáha dosiahnuť tento cieľ a pri používaní nástroja cez Processing Toolbox funguje perfektne. Chcel by som však tento nástroj zahrnúť do automatizovaného skriptu. Vyskúšal som veľa rôznych argumentov, ale môj kód (stále) nefunguje a výsledkom je množina údajov, kde má nový atribút mnohouholník hodnoty NULL.

Používam nasledujúci kód, ktorý by mal byť úplne rovnaký ako nástroj, ktorý je spustený, keď k nemu pristupujem zo súboru nástrojov na spracovanie (dokonca som sa pokúsil skopírovať a spustiť presne ten istý kód z okna História a protokol):

sum = processing.runalg ("qgis: joinattributesbylocation", "polygonlayer.shp", "pointlayer.shp", "['obsahuje']", 1, "sum", 1, žiadny)

Používam QGIS 2.8.2 Wien.


  • Pre QGIS 2.8.2 s Spracovanie plugin 2.9.0:

    processing.runalg ("qgis: joinattributesbylocation", vrstva1, vrstva2, u'obsahuje ', 1,' súčet ', 1, žiadny)
  • Pre QGIS 2.12.2 s Spracovanie plugin 2.12.2:

    processing.runalg ("qgis: joinattributesbylocation", vrstva1, vrstva2, u'obsahuje ', 0, 1,' súčet ', 1, žiadny)

    (všimnite si ďalší parameter pre „presnosť“)


Ako nájdem adresár skriptov a # 39s? [duplikát]

Na získanie umiestnenia adresára súboru skriptu používam os.getcwd (). Keď spustím skript z príkazového riadku, dá mi správnu cestu, zatiaľ čo keď ho spustím zo skriptu spusteného kódom v zobrazení Django, vypíše /.

Ako môžem získať cestu k skriptu zo skriptu spusteného v zobrazení Django?

AKTUALIZÁCIA:
Ak zhrnieme doterajšie odpovede - os.getcwd () a os.path.abspath () poskytujú aktuálny pracovný adresár, ktorý môže alebo nemusí byť adresárom, v ktorom sa nachádza skript. V mojom nastavení webového hostiteľa __file__ dáva iba názov súboru bez cesty.

Nie je v Pythone nejaký spôsob, ako (vždy) byť schopný prijať cestu, v ktorej sa nachádza skript?


Získajte umiestnenie objektu od rámu k rámu Blender 2.81 +

Mám skript, ktorý generuje cestu krivky a nastaví objekt tak, aby sledoval cestu, vidím, ako sa objekt pohybuje správne v pohybe animácie, a tiež sa posúva na správne miesto (aspoň vizuálne v prístave zobrazenia, súradnice, keď stlačíte n nezmeníte sa), keď použijem bpy.context.scene.frame_set (desirved_frame). Keď sa však pokúsim získať polohu a rotáciu tohto objektu v rámci, ktorý som nastavil, vráti iba pôvodné umiestnenie objektu v rámci 0. Nižšie je uvedený kód, ktorý som použil na generovanie údajov animácie a čo som urobil m sa snažím získať polohu.

Tiež som sa pokúsil nahradiť poslednú slučku za:

Obidve metódy iba vytlačia pôvodné umiestnenie objektu.

Pri čítaní tejto dokumentácie si nie som istý, ako by som použil príklady, ktoré ukazujú, na extrahovanie hodnoteného umiestnenia a rotácie z triedy, ktorú registrujú, alebo ako vôbec zavolať metódu execute.

Nižšie uvádzam niekoľko riešení a odpovedí, ktoré som bez úspechu prečítal a pokúsil sa o ne:

Naozaj si nie som istý, čo robím zle, pretože niektoré z otázok, na ktoré som sa pozrel, sú dosť podobné môjmu problému.


Pokúšam sa načítať aktuálne číslo rámca pre použitie v materiáli Cycles particle age

Snažím sa vytvoriť materiál cyklov, aby vzplanul častice, keď zahynie pri kolízii s inou časticou pomocou Blenderu 2.72a.

Podarilo sa mi prinútiť častice, aby zaútočili a zabili ďalšie častice pomocou Boidovej fyziky, ale prinútiť mŕtve častice robiť čokoľvek okrem toho, aby zmizli alebo tam sedeli, sa ukazuje ako pichľavý problém.

Pľujem niekoľko prístupov. Môj súčasný pokus je riadiť emisnú silu a transparentnosť na základe toho, ako predčasne je smrť častíc. Častica, ktorá zahynie pri kolízii, bude mať rýchlosť nula a vek menší ako je jej životnosť. Pretože však mŕtve častice hlásia pre svoj vek 0, nemôžete to použiť na zistenie, či častica len neprirodzene zomrela alebo či skončila pred sto snímkami. Môžem to obísť, ak dokážem načítať aktuálne číslo rámca pre scénu a dokonca mám fragment kódu: bpy.data.scenes ['CYCLES']. Frame_current Uložil som to ako skript a odkazoval na neho v skripte Uzol, ktorý som mohol pridať do svojho semena častíc, ale nemôžem získať prístup k získanej hodnote.

Uvažoval som o úprave skriptu tak, aby vyplnil globálnu premennú alebo atribút číslom rámca a potom k nemu získal prístup pomocou uzla Atribút.

Ako teda môžem uložiť aktuálne číslo rámca spôsobom prístupným pre editor materiálov? Zahrnul som odkaz na môj súbor zmesi. Správna odpoveď nemusí implementovať môj kód. Ak máte nápad, ktorý nemá nič spoločné s pythonom, stále ho chcem počuť.


Ola Hallengren & # 39s SQL zálohovanie do sieťového umiestnenia nefunguje

Za posledných pár rokov som nastavil riešenie údržby servera SQL Ola Hallengrena na niekoľkých serveroch SQL Express (2008 až 2012 R2). Nedávno som začal mať problémy s komponentom sieťového zálohovania, na všetkých nových. V minulosti som fungoval na niekoľkých serveroch, takže viem, že to môže fungovať, ale nemôžem zistiť, čo mu teraz bráni v práci. Ako zaujímavosť, nie som DBA a neviem nič o SQL, preto som tu.

Problém

Najmä na jednom serveri som zhruba pred rokom a pol nastavil plán údržby. Každú noc robil zálohy na iný lokálny server pomocou cesty UNC (a niekoľkých ďalších príkazov). Kód skriptu je nasledovný:

To chvíľu fungovalo dobre, ale zhruba pred mesiacom to skončilo. Nastavil som to na lokálne zálohovanie, potom som pridal reťazec, ktorý ho xkopoval na vzdialené miesto, a skript na vzdialenom serveri na vyčistenie starých záloh. Nie ideálne.

Skúsil som to spustiť v príkazovom riadku ako ja a účet super povolení. Túto chybu dostávam vo všetkých prípadoch:

Čo som urobil

Je zrejmé, že SQL si myslí, že sieťové umiestnenie neexistuje, a tak som vyskúšal, čo je v mojich silách, aby som skontroloval, či sú všetky sieťové bočné veci v poriadku. Vytiahol som novú kópiu skriptu a znovu vytvoril všetky objekty a úlohy. Skontroloval som, či fungujú ostatné skripty (kontroly integrity, aktualizácie štatistík atď.). Vytvoril som skript, ktorý používa rovnaké poverenia ako záložný skript na spustenie xcopy miestnych záloh na cieľový server, takže mám správne poverenia zdieľania / NTFS. Tento účet je doménový účet (AD) špeciálne vytvorený pre zálohy SQL. Môžem zálohovať lokálne (s týmto účtom), takže mám povolenie na databázu. K priečinku môžem prejsť ako záložný účet pomocou Prieskumníka Windows. Súbory môžem ručne skopírovať na vzdialené miesto pomocou programu Windows Prieskumník pomocou záložného účtu.

Rovnaký problém mám aj v niekoľkých ďalších sieťach, čo ma obrátilo k SF. Som v doménach 2008 R2 a 2012, všetky servery sú členmi domény bez akýchkoľvek relevantných chýb. Servery sú štandardné počítače 2008 R2 a 2012 R2. Mám pocit, že sa na strane SQL muselo niečo zmeniť, že nemôžem vyriešiť problém, aby sa to dialo v 3 rôznych sieťach a na niekoľkých serveroch. Použil som super základné príkazy - zanechal som overenie a vyčistenie úlohy - a dostal som rovnakú chybu. Príkladné príkazy na webe Oly som tiež použil ako test, s rovnakými výsledkami. Vyskúšal som to na úplne novom serveri SQL so základnou testovacou databázou, žiadna láska. Už niekoľko dní používam svoj čierny opasok v Google s veľmi sklamanými výsledkami (možno neviem, čo mám hľadať?).

Čo dúfam, že dostanem

Veľmi by som ocenil spôsob, ako otestovať pripojenia k sieťovým zdieľaniam vo vnútri príkazového riadku SQL, alebo nejaké prečítané materiály, ktoré by ma tam dostali. Nevadí mi čítanie, že som kompetentný správca systémov, ktorý sa v tejto otázke nachádza jednoducho mimo svojej hĺbky. Čítal som všetko na Olovej stránke a ukážkové príkazy aj tak prakticky používam doslovne (a fungovali niekoľko mesiacov !?). Budem na tom pracovať tento víkend a celý víkend a každá pomoc alebo smerovanie, ktoré by mi niekto mohol poskytnúť, by bolo nesmierne ocenené.


Aký je správny kód v Pythone pre stlačenie & ldquoI & rdquo a výber LocRotScale?

Už som urobil fiktívny test a zvyšok môjho kódu funguje. Jediná vec, ktorá zlyhá, je volanie bpy.ops.anim.keyframe_insert_menu (type = 'LocRotScale'), ktoré sa objaví, ak stlačíte I a urobíte to ručne. Chyba, ktorú dostávam, je:

Súbor "D: Blender 2.79 scripts modules bpy ops.py", riadok 189, v hovor ret = op_call (self.idname_py (), None, kw) TypeError: Konverzia py args na vlastnosti operátora: enum "location" sa nenašiel v ('Location', 'Rotation', 'Scaling', 'BUILTIN_KSI_LocRot', 'LocRotScale' , „BUILTIN_KSI_LocScale“, „BUILTIN_KSI_RotScale“, „BUILTIN_KSI_DeltaLocation“, „BUILTIN_KSI_DeltaRotation“, „BUILTIN_KSI_DeltaScal)

Myšlienka môjho skriptu je jednoduchá, v zozname je 8 súradníc, ktoré chcem prepracovať a každú súradnicu použiť na kocku.

  1. Frame_set aktuálny rámec na časovej osi, takže počiatočný rámec by bol na 0
  2. Vzal by som súradnicu [i] v zozname a použil by som ju na kocku
  3. Potom by som zadal miesto kocky pre animáciu
  4. aktualizovať current_frame zakaždým = + 4. Kľúčovými snímkami by boli snímky S0 0, 4, 8..

Všetky ostatné kroky fungujú, ak komentujem krok číslo 3, uvidel by som svoju kocku pohybujúcu sa z jedného miesta na druhé, len potrebujem vedieť, ako nakódovať každé miesto pre animáciu!


1 odpoveď 1

Niektoré zmeny API sú novšie ako iné

Metóda bmesh from object vyžaduje, aby argument 2 bol depsgraf, nie scéna, pretože IIRC bola pred, teda okolo, keď bola napísaná odpoveď.

Prečítajte si novšie dokumenty, avšak pre tieto veci dôrazne odporúčame použiť funkciu automatického dokončovania konzoly

všimne si, že depsgraph nerobí reťazec doc, zjavne je to argument.

Skúška vyčistenie. Vykonali sme minimálne zmeny, aby sa spustili ako obslužná rutina post zmeny rámca. Použili sme 256 vertikálnych & quot; kruh & quot; ako testovací objekt, (čo mu dáva požiadavku, aby mal aspoň toľko vertov ako je počet uhlov.)

Skript hodí chybu indexu pre sieť s príliš malým počtom vertov.

Metóda je napojená na obsluhu zmeny rámca, takže pri zmene rámca urobí & quotits thing & quot.

_Príklad presunutia niekoľkých kociek s hraním animácie, na vyvolanie (spracovanie) udalosti zmeny rámca aktualizáciou siete s kódom obslužnej rutiny.


Prvá pexeso s PyQt a OOP

Takže som na tomto webe úplne prvýkrát. Tento veľmi základný kód v jazyku Python som napísal pomocou programu PyQt5, aby som vytvoril pamäťovú hru. Pretože nie som veľmi oboznámený s OOP (ale snažím sa byť!), Dúfam, že ma niekto nasmeruje na miesto, kde by som mohol vylepšiť svoju hru.

Celkovo to funguje, ale chýba mi pekná šablóna (v tejto fáze sa chystám niečo vylepšiť). To, čo ma momentálne viac zaujíma, je pochopiť, či by sa môj kód dal nejako lepšie usporiadať (napr. Jeho rozdelením do rôznych tried / podtried namiesto mnohých prítomných metód).

  1. používateľ si vyberie priečinok s obrázkami (JPG)
  2. vytvorí sa mriežka so všetkými obrázkami, ale každý obrázok je pokrytý obrázkom „back.jpg“ (mal by zostať v rovnakom priečinku ako kód)
  3. hra sa začína

V podstate všetko robím pomocou obrázkov v Qgridlayout, ktoré sú umiestnené v tlačidlách s poslucháčmi udalostí. Keď sa vydá signál „onclick“, analyzuje sa atribút self.status a podľa toho sa hra reštartuje alebo pokračuje.

Posledná vec: karty (obrázky) sa momentálne nemiešajú, stále musím implementovať túto funkciu (inak by hra bola úplne nudná.).


Presne to - fyzické umiestnenie objektu. Jeho zmena neovplyvní nič iné, pokiaľ to externý systém nepoužije alebo neaktualizuje. Napríklad vo veľkých podnikoch je možné podobné atribúty vyplniť a synchronizovať s databázou na sledovanie aktív pomocou systému IdM, ako je MS ILM / FIM.

Umiestnenie tlačiarní je v poriadku pre každého, ak je vykonané správne. V systéme Windows 7 sa zobrazenie „nájsť tlačiareň“ automaticky filtruje na vaše fyzické umiestnenie. Toto je časť manuálneho nastavenia, časť IP podsiete.

Rovnako ako väčšina atribútov AD vyplnených používateľmi / správcami sa používa na čokoľvek, na čo ich chcete použiť. Spravidla by to bolo pre fyzické umiestnenie objektu, ako zdôrazňuje Chris McKeown, ale môžete ho použiť na čokoľvek, čo chcete, a môže to mať určitú hodnotu, ak ste malá spoločnosť so všetkým v rovnakom fyzické umiestnenie, vzhľadom na to, že v predvolenom nastavení sa umiestnenie zobrazuje výraznejšie ako CustomAttribute8 a podobne.

Videl som prostredie AD trochu pred tým, ako ho sysadmin použil na mierne rafinované urážanie používateľov miestami ako v oblakoch, stratami v preprave, podaním v Kolíne nad Rýnom atď. (Myslím, že hlava používateľa je.), Takže možné použitia sú skutočne obmedzené iba vašou kreativitou (a možno aj úrovňou zlomyseľnosti).


Prečo sa tieto miesta havárie nenašli cez ELT?

14. januára 2019, o 9.10 indonézskeho času, sa našli CVR havarovaného lietadla Lion Air JT-610. Ďalšie dôležité zariadenie sa našlo už skôr.

V Indonézii narazili do vody tri moderné lietadlá:

Adam Air, registrácia PK-KKW, Boeing 737-400, let KI514, 1. januára 2007, narazil do Majeneckého mora kvôli poruche s Interný referenčný systém (IRS), spočíval v 2 000 m pod morskou hladinou.

Spoločnosť Air Asia, registrácia PK-AXC, Airbus A320-216, let QZ8501, sa zrútila 28. decembra 2015 do Karimunjawského mora kvôli poruche s kormidlo-obmedzovač pohybu.

Spoločnosť Lion Air, registrácia PK-LQP, Boeing 737 Max-8, let JT-610, sa zrútila 28. novembra 2018 do Jávskeho mora. Príčina havárie je stále predmetom vyšetrovania.

Tieto tri miesta zrážky nenašiel systém elektronického prístroja, ale rybári.

Potom moja otázka znie: prečo sa moderné lietadlo nenašlo cez svoj ELT?


Pozri si video: Use Python and QGIS pyQGIS to Automate GIS Tasks and Workflows (Septembra 2021).