Suite

Interpoler des rasters en mosaïque à partir de données ponctuelles à l'aide de l'objet LayerTime dans ArcPy ?

Interpoler des rasters en mosaïque à partir de données ponctuelles à l'aide de l'objet LayerTime dans ArcPy ?


En essayant d'exécuter le script python fourni par ArcGIS pour interpoler un groupe de rasters sur un fichier de classe d'entités ponctuelles temporel, j'obtiens l'erreur suivante :

Erreur d'exécution Traceback (appel le plus récent en dernier) : Fichier "", ligne 34, dans Fichier "c:program files (x86)arcgisdesktop10.2arcpyarcpymanagement.py", ligne 6043, dans MakeFeatureLayer raise e ExecuteError : ERREUR 000840 : la valeur n'est pas une couche d'entités.

Mon code est le suivant (la ligne 34 parle de créer une classe d'entités, et je ne peux pas pour la vie de moi comprendre à quoi cela fait référence):

import arcpy, datetime # Consultez l'extension ArcGIS Spatial Analyst pour utiliser l'outil d'interpolation IDW arcpy.CheckOutExtension("spatial") arcpy.env.workspace = "C:UsersChrisDesktopinterpolationInterpolation.gdb" # Obtenir les propriétés temporelles de la couche lyr = arcpy.mapping.Layer(r"C:UsersChrisDesktopinterpolationpoints.lyr") lyrTime = lyr.time # Calcule le nombre d'itérations en fonction de l'étendue de temps et de l'intervalle de temps startTime = lyrTime.startTime endTime = lyrTime.endTime timeExtent = endTime - startTime timeStepInterval = lyrTime.timeStepInterval iterations = timeExtent.days / timeStepInterval.interval # Obtient le champ de temps contenant les valeurs de temps associées # avec les données dans la couche time-enabled startTimeField = str(lyrTime.startTimeField) # Spécifiez la mosaïque en sortie à laquelle les rasters interpolés seront ajoutés outputMosaicDataset = r"C:UsersChrisDesktopinterpolationInterpolation.gdb
asta" i = 0 tandis que i <= itérations : # Formuler la requête de temps et d incrémenter l'heure de timeStepInterval currentTime = str(startTime + (i*timeStepInterval)) timeQuery = """ + startTimeField + """ + " = date '" + currentTime + "'" # Créer un en-mémoire couche d'entités contenant des points valides à chaque pas de temps tempFeatureLyr = "tempTimeLayer" + str(i) arcpy.MakeFeatureLayer_management(lyr, tempFeatureLyr, timeQuery) # Créer une surface raster interpolée en utilisant les points valides à chaque pas de temps outRaster = r"C: UsersChrisDesktopinterpolationInterpolation.gdboutput" + str(i) print outRaster arcpy.gp.Idw_sa(tempFeatureLyr, "avg_hrly", outRaster) # Ajouter la surface raster nouvellement créée à un ensemble de données Mosaic arcpy.AddRastersToMosaicDataset_management( outputMosaicDataset, "Raster Dataset", outRaster) i = i + 1 # Calculer les statistiques sur le Mosaic Dataset en sortie pour # classer vos données après l'ajout de nouveaux rasters arcpy.CalculateStatistics_management(outputMosaicDataset,"1","1","#" )

L'erreur (près du haut de ce message) pointe vers la ligne 34, qui se lit comme suit :

arcpy.MakeFeatureLayer_management(lyr, tempFeatureLyr, timeQuery)

J'ai vérifié lyr.isFeatureLayer et c'estVrai, timeQuery renvoie la prochaine tranche de temps dans un format de chaîne approprié que j'ai vérifié dans le générateur SQL, et tempFeatureLyr ='tempTimeLayer1'… mais il ne le crée pas. Comme dans, je ne vois pas la couche tempTimeLayer1 dans la table des matières, cependanttempTimeLayer0EST. Donc, il n'est pas créé, bien que son nom (tempTimeLayer1) soit prêt à être utilisé…

Voici le site sur lequel j'ai eu de l'aide, exemple 3 : LayerTime(arcpy.mapping)


L'erreur que vous affichez vient dec:program files (x86)arcgisdesktop10.2arcpyarcpymanagement.pyet il serait plus facile de s'attaquer à sa cause si nous connaissions la ligne précise de votre script - l'exécuter dans IDLE est ce que je trouve habituellement.

Il se peut que cela soit simplement dû au fait que vous ayez :

arcpy.env.workspace = "C:UsersChrisDesktopinterpolationInterpolation.gdb"

à la place de:

arcpy.env.workspace = r"C:UsersChrisDesktopinterpolationInterpolation.gdb"