Více

CHYBA 000732 od ArcPy?

CHYBA 000732 od ArcPy?


Jaký je problém, protože mám složku „test_script“ existující v C: ale arcpy detekuje jako zkrácenou (tj. Est_script) a signalizuje chybu.


Python léčí tjako záložku, takže opravdu děláteC {TAB} odhadmusíte utéct s\nebo použijte surový řetězec pomocírnapřr'C: test_script '


Zkuste zadat cestu jako a rawstring, například v tomto úryvku:

arcpy.CreateFeatureclass_management (r "C:  test_script  Fish.gdb",…

V zásadě stačí připravit r.


Iterace bodovou vrstvou k vytvoření a zesílení rastrů vzdáleností

Píši program Arcpy pro zpracování dat ve vrstvě několika set bodů (‘ptsLyr ’, from file ‘ptsFile ’), z nichž každý má své vlastní ID (‘RecordID ’) a související hodnota, ‘radius ’, kterou chci použít k vytvoření vyrovnávací paměti vzdálenosti kolem tohoto bodu jako proxy pro obchodní oblast v místě bodu, hodnota rastru bude 1, zatímco na okraji poloměr a za ním bude 0, s lineárním poklesem od středu k okraji. Nakonec chci shrnout všechny jednotlivé vyrovnávací paměti, abych získal vzdálenostně váženou míru toho, kolik bodů přispívá do každé buňky v rastru. Kvůli počtu bodů nechci vytvářet stovky jednotlivých rastrových souborů.

Jako příklad uvažujme buňku, která se nachází mezi dvěma body A a B tak, že je to 4000 m od A a 2000 m od B, které mají poloměry 8 000 ma 10 000 m. Příspěvek k buňce z bodu A bude (8000-4000)/8000 = 0,5, protože buňka je 1/2 bodu mezi bodem A a jejím obvodem. Příspěvek z bodu B bude (10 000-2 000)/10 000 = 0,8, protože je 1/5 cesty od středu B ’ k jeho obvodu. Pokud je buňka 6000 m od jiného bodu, C, který má poloměr 3000 m, C nebude přispívat k výpočtu, protože jakákoli hodnota mimo 3000 m od C bude 0. V buňce pak bude kumulativní ‘ &# 8217 hodnota překrývajících se vyrovnávacích pamětí je 0,5 + 0,8 = 1,3.

Body musím iterovat jednotlivě, protože funkce vzdálenosti EucDistance () vypočítá vzdálenost od každé buňky k nejbližší bod, což není to, co chci. Také podle všeho musím při zpracování zpracovávat novou vrstvu z každého bodu, protože EucDistance () nezdá se, že by respektoval výběry jednotlivých bodů provedené SelectLayerByAttribute_management (). EucDistance () nastaví hodnoty mimo poloměr na ‘No Data ’, ale mohu je snadno dostatečně překlasifikovat na nulu, jakmile budu mít konečný součtový rastr.

Souřadnice mapy jsou promítnuty (zóna NAD83 UTM 17N) a všechny hodnoty jsou v metrech.

V tuto chvíli mám základy fungující, ale stále se objevují chyby související s: rastrovými vrstvami/rastrovou matematikou. Mám podezření, že problémy mají něco společného s mým nastavením prostředí, rastrovými objekty vs vrstvami, soubory vs geodatabázemi a/nebo (ne) zaměnitelností rastrů.

Pokud udělám rastrovou matematiku ve formátu ‘dist1 = radius – distR ’, jak je uvedeno výše, zobrazí se chyba

Na druhou stranu, pokud výslovně označím rastrové objekty pomocí formátu

Může někdo vysvětlit, v čem je problém, a hlavně mi pomoci dokončit tento kód, aby fungoval správně?

V návaznosti na návrh Luka ’s jsem to nyní vyzkoušel s žádným ze souborů v gdb, pouze s dočasnými soubory a výstupním rastrem v jednom, nebo se všemi soubory v jednom (bez mezer v cestě) /názvy souborů). Všechny soubory jsou ve stejné projekci se stejnými rozsahy. Zkoušel jsem to také s ‘Přidat výsledky operací geoprocesu na displej ’ jak zapnuto, tak vypnuto.

Vlastně mi to fungovalo minulou noc, ale během provozu se to zhroutilo a musel jsem něco změnit buď v samotném programu, nebo někde v mé konfiguraci ArcGIS. Takto by měl výstup vypadat víceméně:

Nyní však kdykoli zadám část ‘else ’ příkazu ‘if ’ (upraveno níže):

rastr sumRas je nahrazen žádnými daty, což mi zjevně brání akumulovat součet. Nemám tušení, proč se to děje a proč to nemohu ’t opravit.

Jedna odpověď

Můžete zkusit nastavit výstupní pracovní prostor pomocí arcpy.env.workspace jako složku, nikoli jako soubor GDB.

Ujistěte se, že zadáte složku bez mezer v cestě, protože ArcGIS použije svůj výchozí formát GRID pro dočasné rastry, které v cestě nemohou obsahovat mezery.