Suite

ERREUR 000732 d'ArcPy ?


Quel est le problème puisque j'ai un dossier "test_script" existant dans C: mais arcpy le détecte comme tronqué (c'est-à-dire est_script) et signale une erreur.


Python traite comme onglet donc vous faites vraimentC{TAB}esttu dois t'évader avec\ou utilisez une chaîne brute en utilisantrpar exempler'C: est_script'


Essayez d'entrer votre chemin en tant que chaîne, comme dans cet extrait :

arcpy.CreateFeatureclass_management(r"C:	est_scriptFish.gdb",…

Fondamentalement, ajoutez simplement un r.


Itération à travers la couche de points pour créer des rasters de distance de somme

J'écris un programme Arcpy pour traiter des données dans une couche de plusieurs centaines de points (‘ptsLyr’, à partir du fichier ‘ptsFile’), dont chacun a son propre ID (‘RecordID’) et un associé valeur, ‘radius’, que je souhaite utiliser pour créer une zone tampon de distance autour de ce point en tant que proxy pour une zone commerciale à l'emplacement du point, la valeur du raster sera 1, tandis qu'au bord de la rayon et au-delà, il sera de 0, avec une diminution linéaire du centre au bord. En fin de compte, je souhaite additionner tous les tampons individuels pour obtenir une mesure pondérée en fonction de la distance du nombre de points contribuant à chaque cellule du raster. En raison du nombre de points, je ne souhaite pas créer des centaines de fichiers raster individuels.

A titre d'exemple, considérons une cellule située entre deux points, A et B, telle qu'elle se trouve à 4000 m de A et à 2000 m de B, qui ont respectivement des rayons de 8000 m et 10000 m. La contribution à la cellule du point A sera (8000-4000)/8000 = 0,5, car la cellule est à mi-chemin entre le point A et son périmètre. La contribution du point B sera (10000-2000)/10000 = 0,8, puisqu'il se trouve à 1/5 de la distance entre le centre de B’s et son périmètre. Si la cellule est à 6000 m d'un autre point, C, qui a un rayon de 3000 m, C ne contribuera pas au calcul car toute valeur à l'extérieur de 3000 m de C sera 0. À la cellule, alors, le ‘cumulatif&# La valeur 8217 des tampons qui se chevauchent est de 0,5 + 0,8 = 1,3.

Je dois parcourir les points individuellement car la fonction de distance EucDistance() calcule la distance de chaque cellule à la le plus proche point, ce qui n'est pas ce que je veux. De plus, je dois apparemment créer un nouveau calque à partir de chaque point au fur et à mesure que je le traite, car EucDistance () ne semble pas respecter les sélections de points individuels effectuées par SelectLayerByAttribute_management (). EucDistance () définira les valeurs en dehors du rayon sur ‘No Data’ mais je peux assez facilement les reclasser à zéro une fois que j'ai le raster final additionné.

Les coordonnées cartographiques sont projetées (NAD83 UTM Zone 17N) et toutes les valeurs sont en mètres.

Pour le moment, les bases fonctionnent, mais j'obtiens des erreurs associées à l'un ou l'autre : les couches raster/les mathématiques raster. Je soupçonne que les problèmes ont quelque chose à voir avec mes paramètres d'environnement, les objets raster par rapport aux couches, les fichiers par rapport aux géodatabases et/ou la (im)mutabilité des rasters.

Si je fais le calcul raster au format ‘dist1 = rayon – distR’, comme ci-dessus, j'obtiens l'erreur

En revanche, si je désigne explicitement des objets raster en utilisant le format

Quelqu'un peut-il m'expliquer quel est le problème et, surtout, m'aider à compléter ce code pour qu'il fonctionne correctement ?

Suite à la suggestion de Luke, à ce stade, je l'ai maintenant essayé avec aucun des fichiers dans un gdb, uniquement les fichiers temporaires et le raster de sortie dans un, ou tous les fichiers dans un (pas d'espace dans le chemin /noms de fichiers). Tous les fichiers sont dans la même projection avec les mêmes étendues. Je l'ai également essayé avec ‘Ajouter les résultats des opérations de géotraitement à l'affichage’ à la fois activé et désactivé.

En fait, je l'ai fait fonctionner l'autre nuit, mais il s'est écrasé pendant le fonctionnement et j'ai dû changer quelque chose dans le programme lui-même ou dans ma configuration ArcGIS quelque part. Voici plus ou moins à quoi la sortie est censée ressembler :

Maintenant, cependant, chaque fois que j'entre la partie ‘else’ de l'instruction ‘if’ (modifiée comme ci-dessous):

le raster sumRas est remplacé par aucune donnée, ce qui m'empêche évidemment d'accumuler une somme. Je ne sais pas pourquoi cela se produit et pourquoi je ne peux pas le réparer.

Une réponse

Vous pouvez essayer de définir l'espace de travail de sortie avec arcpy.env.workspace pour qu'il soit un dossier et non un fichier GDB.

Assurez-vous de spécifier un dossier sans espaces dans le chemin car ArcGIS utilisera son format GRID par défaut pour les rasters temporaires qui ne peuvent pas avoir d'espaces dans le chemin.