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 Thu 08 June 2017 12:03

Pev
Juste Inscrit !
Date d'inscription: 29 May 2016
Messages: 5

[ArcGIS 10.2.2] Geocoder et RuntimeError

Bonjour,

Pour un de nos clients, nous mettons en place un système de Geocodage de masse d'adresse (de 10 à 1 million d'adresses). Nous travaillons sur un ArcGIS Desktop 10.2.2 x32bits.

Pour ce faire, nous utilisons un script Python s'appuyant sur arcpy. Le traitement est le suivant :
- Récupération d'adresse depuis un JSON
- Enregistrement des adresses dans une table d'une nouvelle File Geodatabase
- Utilisation de le la fonction arcpy.GeocodeAddresses_geocoding()

Sachant que l'Address Locator n'est pas dans le même système de projection que les coordonnées attendues en sortie, nous procédons à une affectation du système de projection de sortie (arcpy.env.outputCoordinateSystem) avant d'effectuer le géocodage.

Actuellement, le traitement fonctionne pour un lot de 200 adresses. Néanmoins, de manière variable, le traitement est brutallement stoppé, au dela des 200 adresses, par une erreur de Runtime C++ (de 3 à 6 popups) bloquant ainsi tout le traitement.

Le code est le suivant :

Code:

[...]

# Address Locator : RGF_93
# Sortie attendue : WGS84
arcpy.env.outputCoordinateSystem = arcpy.SpatialReference(4326)

# Geocodage des adresses
arcpy.GeocodeAddresses_geocoding(
    in_table=gdb_fc_address,
    address_locator=path_address_locator,
    in_address_fields="SingleLine ATTR_ADDRESS VISIBLE NONE",
    out_feature_class=gdb_fc_address_geoc,
    out_relationship_type="STATIC"
)

[...]

Nous avons déjà tenté les solutions suivantes :
- Ne pas reprojeter les coordonnées
- Reprojeter manuellement les données après le geocoder (Project_management)
Mais les résultats sont les mêmes. Nous avons également veillé à ce que toutes les variables soient bien supprimée une fois utilisées.

Auriez-vous une idée de solution pour désengorger le geocoder ?
Ou une solution pour éviter les Runtime C++ Error ?

En vous remerciant très cordialement pour vos réponses,
Pev

Hors ligne

 

#2 Thu 08 June 2017 21:47

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

Re: [ArcGIS 10.2.2] Geocoder et RuntimeError

Bonjour,

Vous travaillez avec quel type de géocodeur (créé et utilisé dans une GDB, publié à l'aide d'ArcGIS Server,...) ?

Si vous travaillez avec  localisateur publié dans ArcGIS Serveur, il y a ce document : ArcGIS Server in Practice Series: Large Batch Geocoding

Si non, vous pouvez peut-être découper le JSON et faire le géocodage en plusieurs fois.
Il serait même peut-être possible de faire du traitement parallèle : A Beginners Guide to parallel processing with Geoprocessing Analysis Tools

A+

Franck

PS: Travaillez-vous avec le Géotraitement en arrière-plan (64 bits) ?
Ces traitements python 64 bits font des miracles en terme de performance pour moi smile

Hors ligne

 

#3 Tue 13 June 2017 10:16

Pev
Juste Inscrit !
Date d'inscription: 29 May 2016
Messages: 5

Re: [ArcGIS 10.2.2] Geocoder et RuntimeError

Bonjour Franck,

Nous travaillons avec un geocoder qui écrit dans une GDB et s'appuie sur un AdressLocator de fichiers *.loc et *.loc.xml.
Il me semblait que le Geocoder d'ESRI était déjà parrallélisé nativement ?
Nous n'utilisons pas les Géotraitements x64, mais il n'est pas impossible d'y recourir si besoin.

En revanche, avec une machine moins performantes (4GB au lieu de 12GB en dev), nous arrivons à géocoder 7 000 adresses sans difficultés.

@+
Pev

Hors ligne

 

Pied de page des forums

Powered by FluxBB