3.1. Plugin “connecteur SIG”

Les connecteurs SIG permettent de faire le lien entre openads et différents SIG.

3.1.1. Description de la configuration des connecteurs

La configuration du plugin est définie dans dyn/sig.inc.php.

Exemple :

$conf["sig-default"] = array (
    "sig_treatment_mod" => "mono",
    "2" => array(
        'connector' => 'generic',
        'path' => '../obj/',
    ),
);

Liste des paramètres obligatoires :

  • option_sig doit être positionnée à la valeur « sig_externe »
  • connector défini le type de connecteur (Dans cet exemple, le connecteur geoads_generic.class.php contenu dans le dossier « obj » sera instancié.)
  • path défini le chemin du connecteur
  • sig_treatment_mod permet de définir le mode de synchronisation des contraintes :
    • « mono » : permet d’affecter les contraintes d’un SIG à chaque collectivité de l’application via le code insee fourni lors de l’appel au web service. Chaque commune n’accés qu’aux contraintes afféctées lors de la synchronisation.
    • « multi » : permet d’affecter toutes les contraintes du SIG à la collectivité correspondant à la communauté de commune. Ces contraintes seront disponible pour toutes les communes de la communauté.

La clé « sig-default » doit être ajoutée au script database.inc.php. La clé du tabeau de configuration du SIG correspond à l’identifiant de la collectivité pour laquelle le connecteur est disponible (si collectivité multi, les collectivités mono auront accès au connecteur SIG) D’autres paramètres spécifiques aux connecteurs pourront être ajoutés au tableau de paramétrage.

3.1.2. Description du script

Le script obj/geoads.class.php permet d’instancier les connecteurs spécifiques.

Liste des classes implémentées dans le script :

  • geoads
  • geoads_base
  • geoads_bdd_exception
  • geoads_configuration_exception
  • geoads_connector_4XX_exception
  • geoads_connector_5XX_exception
  • geoads_connector_exception
  • geoads_connector_method_not_implemented_exception
  • geoads_exception
  • geoads_parameter_exception

3.1.2.1. geoads

La classe “geoads” est une classe d’abstraction, spécifique à openADS, permettant de gérer les requêtes vers divers webservices SIG et ainsi proposer aux utilisateurs des informations géographiques. Cette classe est instanciée et utilisée par d’autres scripts pour gérer notamment la vérification de parcelles et ce peu importe le SIG utilisé. Son objectif est d’instancier les classes spécifiques aux SIG aussi appelées connecteurs correspondant au paramétrage de la collectivité.

Ces connecteurs héritent de la classe “geoads_base” qui leur sert de modèle.

Enfin la classe “geoads_exception” permet de gérer les erreurs. Plusieurs classes en héritent afin de spécifier le type d’exception.

3.1.2.2. geoads_base

Classe parente de tous les connecteurs SIG

Important

Les classes des connecteurs SIG doivent étendre de geoads_base.

3.1.2.3. geoads_exception

Classe gérant les erreurs (une exception est levée pour chacune).

3.1.2.4. geoads_bdd_exception

Classe d’exceptions utilisée lors d’une erreur de base de données.

3.1.2.5. geoads_configuration_exception

Classe d’exceptions utilisée lors d’une erreur dans le paramétrage du connecteur.

3.1.2.6. geoads_parameter_exception

Classe d’exceptions utilisée lors de la vérification des paramètres passés au méthode de l’abstracteur.

3.1.2.7. geoads_connector_4XX_exception

Classe de gestion des exceptions retournée lors d’un code http 4XX.

Important

Cette exception correspond à un problème inhérent à openADS.

3.1.2.8. geoads_connector_5XX_exception

Classe de gestion des exceptions retournée lors d’un code http 5XX.

Important

Cette exception correspond à un problème inhérent au SIG.

3.1.2.9. geoads_connector_exception

Classe de gestion des exceptions génériques remontées par le connecteur.

3.1.2.10. geoads_connector_method_not_implemented_exception

Classe de gestion des exceptions sur les methodes du connecteur qui ne sont pas implémentées.

3.1.3. Méthodes à implémenter

3.1.3.1. Attributs

3.1.3.1.1. $messageSender

$messageSender : null

Handler d’envoi de messages REST ou SOAP.

3.1.3.1.2. $sig_parameters

$sig_parameters : array

Paramètres de connexion au sig

3.1.3.1.3. $collectivite_parameters

$collectivite_parameters : array

Paramètres de la collectivite

3.1.3.2. Méthodes

3.1.3.2.1. __construct()

__construct(array  $collectivite)

Le constructeur instancie le connecteur SIG selon la configuration

3.1.3.2.1.1. Parameters

array $collectivite Configuration du connecteur.

3.1.3.2.2. init_message_sender()

init_message_sender()

Permet d’initialiser la classe d’envoi de message

3.1.3.2.3. verif_parcelle()

verif_parcelle(  $parcelles)

GET- Vérification d’existence de parcelles et récupération de leurs adresses.

openADS fournit une liste de parcelles. Le SIG renvoie une collection, en mentionnant pour chaque parcelle si elle existe, et le cas échéant l’adresse qui y est rattachée.

3.1.3.2.3.1. Parameters

(array) $parcelles : Tableau de parcelles à interroger.

Exemple de structure du tableau d’entrée pour une seule parcelle :

array(
    array(
        'prefixe' => string,
        'quartier' => string,
        'section' => string,
        'parcelle' => string
    ),
)
3.1.3.2.3.2. Returns

(array) Tableau de résultats (un sous-tableau par parcelle)

array(
    array(
        "parcelle"=> "1312158980H0126",
        "existe"=> true,
        "adresse"=> array(
            "numero_voie"=> "666",
            "type_voie"=> "RUE",
            "nom_voie"=> "DE LA LIBERTE",
            "arrondissement"=> "11"
        ),
    ),
)

Si la parcelle n’existe pas :

array(
    array(
        "parcelle"=> "1312158980H0126",
        "existe"=> false,
    ),
)

3.1.3.2.4. calcul_emprise()

calcul_emprise(  $parcelles,   $dossier)

POST -Déclenche sur le SIG le calcul de l’emprise des parcelles d’un dossier.

openADS fournit une liste de parcelles et le numéro de dossier correspondant. Le SIG renvoie un statut, spécifiant si le calcul été effectué correctement ou non.

3.1.3.2.4.1. Parameters

(array) $parcelles : Tableau de parcelles. Exemple de structure du tableau d’entrée pour une seule parcelle :

array(
    array(
        'prefixe' => string,
        'quartier' => string,
        'section' => string,
        'parcelle' => string
    ),
)

(string) $dossier : Numéro du dossier. Ex. : PC1305515J0045P0.

3.1.3.2.4.2. Returns

(boolean) true si le calcul est OK, false sinon.

3.1.3.2.5. calcul_centroide()

calcul_centroide(  $dossier)

POST - Déclenche sur le SIG le calcul du centroïde d’un dossier.

openADS appelle la méthode centroide sur la ressource du dossier souhaité. Si le calcul du centroïde est conduit avec succès, le SIG renvoie un statut positif, accompagné des coordonnées du centroïde. Dans le cas contraire, le SIG renvoie un statut négatif.

3.1.3.2.5.1. Parameters

(string) $dossier : Numéro du dossier. Ex. : PC1305515J0045P0.

3.1.3.2.5.2. Returns

(array) Coordonnées du centroïde :

array(
    "statut_calcul_centroide" => true,
    "x" => "1888778.84",
    "y" => "3131268.88"
)

Ou false si le calcul a échoué.

3.1.3.2.6. recup_contrainte_dossier()

recup_contrainte_dossier(  $dossier)

GET - Récupération des contraintes applicables sur un dossier.

openADS appelle la méthode contrainte sur la ressource du dossier souhaité. Le SIG renvoie une collection de contraintes qui s’y appliquent.

3.1.3.2.6.1. Parameters

(string) $dossier : Numéro du dossier. Ex. : PC1305515J0045P0.

3.1.3.2.6.2. Returns

(array) Tableau de contraintes :

array(
    array(
        "contrainte" => "26",
        "groupe_contrainte" => "ZONES DU PLU",
        "sous_groupe_contrainte" => "protection",
        "libelle" => "Une seconde contrainte du PLU",
        "texte" => "Description de la contrainte du PLU",
    ),
)

Note

Le champ texte est optionnel.

3.1.3.2.7. recup_toutes_contraintes()

recup_toutes_contraintes(  $code_insee)

GET - Récupération de toutes les contraintes existantes pour une commune.

OpenADS appelle le SIG en précisant seulement le code INSEE de la commune. Il renvoie une collection de l’intégralité des contraintes existantes.

3.1.3.2.7.1. Returns

(array) Tableau de toutes les contraintes existantes.

array(
    array(
        "groupe_contrainte" => "ZONES DU PLU",
        "contrainte" => "26",
        "libelle" => "Une seconde contrainte du PLU",
        "sous_groupe_contrainte" => "protection",
        "texte" => "Description de la contrainte du PLU",
    )
)

Note

Le champ texte est optionnel.

3.1.3.2.8. redirection_web_emprise()

redirection_web_emprise(  $parcelles,   $dossier)

Redirection vers le SIG dans le contexte de dessin d’emprise pour un dossier.

3.1.3.2.8.1. Parameters

(array) $parcelles : Tableau de parcelles.

(string) $dossier : L’identifiant du dossier.

3.1.3.2.8.2. Returns

(string) L’url du SIG

3.1.3.2.9. redirection_web()

redirection_web(  $parcelles = null,   $dossier = null)

Redirection vers le SIG dans le contexte de visualisation du dossier.

Si les deux arguments sont nuls, c’est l’url par défaut du sig qui doit être retourné.

3.1.3.2.9.1. Parameters

(array) $parcelles : Tableau de parcelles.

(string) $dossier : L’identifiant du dossier.

3.1.3.2.9.2. Returns

(string) L’url du SIG