Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Tue 19 January 2016 17:42

jeansomers
Juste Inscrit !
Date d'inscription: 10 May 2012
Messages: 7

ArcPy 10.3 - Erreur en lançant LineDensity

Bonjour,

Voici le code dont je me suis inspiré: http://desktop.arcgis.com/fr/desktop/la … ensity.htm
Il est directement tiré de l'aide ESRI.

Pourtant, à chaque utilisation de ce code, j'obtiens une erreur. Je l'ai un peu adapté pour le faire correspondre à mes données:

Code:

import arcpy
from arcpy import env
from arcpy.sa import *

env.workspace = r"Z:\...\...\fdc\Grand_Ouest\33"

# Parameters
inPolylineFeatures = "_polyline.shp"
populationField = "NONE"
cellSize = 200
searchRadius = 500
areaUnitScaleFactor = "SQUARE_KILOMETERS"

# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")

# Execute LineDensity
outLineDensity = LineDensity(inPolylineFeatures,
                             populationField,
                             cellSize ,
                             searchRadius ,
                             areaUnitScaleFactor) 

# Save the output 
outLineDensity.save(r"Z:\...\...\test.gdb\linedensity")

Et voici l'erreur que j'obtiens:

Traceback (most recent call last):
  File "Z:/.../.../python/in_progress/linedensity_test.py", line 22, in <module>
    areaUnitScaleFactor)
  File "C:\Program Files (x86)\Desktop10.3\ArcPy\arcpy\sa\Functions.py", line 446, in LineDensity
    area_unit_scale_factor)
  File "C:\Program Files (x86)\Desktop10.3\ArcPy\arcpy\sa\Utils.py", line 53, in swapper
    result = wrapper(*args, **kwargs)
  File "C:\Program Files (x86)\Desktop10.3\ArcPy\arcpy\sa\Functions.py", line 439, in Wrapper
    area_unit_scale_factor)
  File "C:\Program Files (x86)\Desktop10.3\ArcPy\arcpy\geoprocessing\_base.py", line 504, in <lambda>
    return lambda *args: val(*gp_fixargs(args, True))
ExecuteError: ERROR 999999: Error executing function.
Failed to open raster dataset
Failed to execute (LineDensity).


L'erreur rapportée par le code est précise: le dernier argument de la fonction, le facteur d'échelle d'unité de surface, est celui qui est en erreur.

Et là s'ouvre une parenthèse que je n'ai pas réussi à refermer. La projection de la couche source est en RGF_1993_Lambert_93, la projection définie par ESRI pour le code EPSG 2154, l'unité est le mètre et le facteur d'échelle usuel pour cette unité est le kilomètre carré, comme défini dans les arguments.

Je précise que si l'on omet cet argument (ce qui devrait laisser le paramètre se définir par défaut), l'erreur est strictement la même.

La seule solution que je vois est de m'éloigner de ma donnée et de tester des configurations différentes pour tenter de saisir l'erreur.

Merci de partager vos commentaires, ils me permettront d'ouvrir des pistes pour la résolution de l'erreur.

Dernière modification par jeansomers (Tue 19 January 2016 17:47)

Hors ligne

 

#2 Wed 20 January 2016 10:36

Franck B
Membre
Lieu: PACA
Date d'inscription: 6 Sep 2005
Messages: 1382
Site web

Re: ArcPy 10.3 - Erreur en lançant LineDensity

Bonjour,

Je n'ai pas d'expérience sur l'usage de cette fonction. Mes pistes ne concernent que l'écriture du script Python...

Je ne suis pas certain que ce soit l'argument "areaUnitScaleFactor" qui pose problème.

Si tu essayes d'écrire la fonction sur une seule ligne :

Code:

# Execute LineDensity
outLineDensity = LineDensity(inPolylineFeatures, populationField, cellSize, searchRadius ,areaUnitScaleFactor)

Est-ce que le message d'erreur est identique ?

As-tu essayer d'écrire l'affectation de la variable "populationField " de cette façon :

Code:

populationField = None

Je trouve que la documentation n'est pas traduite de façon claire... :

Utilisez Aucun si aucun attribut ni aucune valeur spéciale ne sont utilisés et si chaque entité est comptée une seule fois.


Ce n'est surement pas Aucun la valeur de cet argument smile

Du coup, si tu lances le calcul avec :

Code:

populationField = "Shape"

Est-ce que cela fonctionne ?

A+

Franck

Hors ligne

 

#3 Wed 20 January 2016 15:15

jeansomers
Juste Inscrit !
Date d'inscription: 10 May 2012
Messages: 7

Re: ArcPy 10.3 - Erreur en lançant LineDensity

Je vais répondre point par point.

Mais avant tout je vais faire cette constatation: ce script a marché, au moins pour un fichier d'un dossier parallèle. La seule chose que j'ai modifiée dans le script est le dossier "33" pour le dossier "44".
Le script est donc fonctionnel tel quel.

Pour reprendre les remarques que tu as faites:

o les arguments de la fonction peuvent s'écrire sur une seule ligne, dans les parenthèses de la fonction. Mais il est possible d'individualiser les arguments par un retour à la ligne, ce qui est particulièrement utile quand on retourne une erreur: elle est spécifique et ciblée. Il faut juste respecter l'indentation et que les arguments commencent tous à la verticale de la parenthèse ouverte.


o je confirme que "NONE" est la formule qui marche, avec ces guillemets et cette casse. Le but est justement de dire que je n'ai sélectionné aucun champ de population (champ qui contient la valeur qui multiplie les objets dans le décompte de la densité).

À ce stade, il me reste à reproduire le succès en adaptant mes données du "33" pour les faire correspondre a ce qui a pu marcher dans le "44".

Je te tiens au courant.

Hors ligne

 

#4 Wed 20 January 2016 16:02

jeansomers
Juste Inscrit !
Date d'inscription: 10 May 2012
Messages: 7

Re: ArcPy 10.3 - Erreur en lançant LineDensity

Je confirme que l'erreur se trouve autour de la définition du système de projection.

J'ai essayé le script sur un jeu de données sur lequel je n'avais pas redéfini le système de projection et ça a marché.
Quand j'ai restauré le jeu de donnée de départ à son état avant la redéfinition, il a fonctionné aussi.

L'erreur se situe donc non pas dans le script, réutilisable tel quel, mais dans la projection.
Pour être plus clair, j'ai récupéré au départ des données en Lambert 93 non standard pour ArcGIS. Pour être plus conforme à ESRI, j'ai inclus dans mon script une redéfinition de la projection aux standards 10.x. Et c'est là que commencent les ennuis.

Ma solution de contournement est de conserver les données en l'état en postulant que la marge d'erreur est suffisamment minime quand on travaille aussi avec des projections standards 10.x.

Hors ligne

 

#5 Fri 22 January 2016 06:54

Franck B
Membre
Lieu: PACA
Date d'inscription: 6 Sep 2005
Messages: 1382
Site web

Re: ArcPy 10.3 - Erreur en lançant LineDensity

Bonjour,

Pourrais-tu nous transmettre les deux systèmes de projection (avant, après) ?

Ensuite, il semble que cet outil puisse utiliser le paramètre d'environnement Système de coordonnées en sortie (paramètre d'environnement).

Est-il cohérent avec le paramètre areaUnitScaleFactor de la fonction ?

A+

Franck

PS : peut-être que tu pourrais nous communiquer aussi la partie du script où tu a codé la redéfinition de la projection...

Hors ligne

 

#6 Fri 22 January 2016 11:09

jeansomers
Juste Inscrit !
Date d'inscription: 10 May 2012
Messages: 7

Re: ArcPy 10.3 - Erreur en lançant LineDensity

Bonjour,

Concrètement, les deux systèmes de projections sont les mêmes: du Lambert 93.

La nuance, c'est que je pars d'un système de projection personnalisé non reconnu par ESRI (RGF93_Lambert_93), probablement une version ArcGIS 9.x de système de projection.

Et quand je redéfinis la projection vers RGF _1993_Lambert_93, là, mon script est en erreur.

Et en fait, je ne peux pas reprojeter, car les projections sont les mêmes et la projection originelle n'est pas reconnue. Donc je pense que la seule manipulation possible est la définition.

@+
Jean

PS: j'ai été plus rapide que mon ombre sur ce coup, j'ai déjà supprimé cette portion de code où je définissais la projection. Dès que j'ai un peu de temps, je la restaure.

Hors ligne

 

#7 Mon 25 January 2016 13:35

Franck B
Membre
Lieu: PACA
Date d'inscription: 6 Sep 2005
Messages: 1382
Site web

Re: ArcPy 10.3 - Erreur en lançant LineDensity

Bonjour,

Une petite question bête : pourquoi ne pas changer, une bonne fois pour toute, le système de projection des classes d'entités avant de lancer le script ?

A+

Franck

Hors ligne

 

Pied de page des forums

Powered by FluxBB