11. Module “MAP”/”SIG”

11.1. Architecture

Attention la base de données om_sig_* a changée dans la version 4.4.5 (voir intégration 4.4.0 vers 4.4.5).

  • OM_ROUTE_MAP
  • application::view_map()
  • application::get_inst__om_map()
  • core/om_map.class.php

11.1.1. tab_sig

URL : "".OM_ROUTE_MAP."&mode=tab_sig" ou "../app/index.php?module=map&mode=tab_sig"

les requêtes de mises à jour du geom ne sont plus initiée en form

les variables get sont les suivantes

obj : carte d'om_sig_map sur laquelle on travaille
idx : numéro d'enregistrement - peut être vide si on part d'une recherche
popup -> 0 : le menu est affiché; 1 : il ne l'est pas (tableau/options)
seli : géometrie selectionnée
min max -> sert à la prépartion du geojson
etendue -> tableau options
reqmo -> tableau options
premier, recherche, selectioncol, adv_id -> tableau options
valide -> tableau options
style -> tableau options
onglet -> tableau options
advs_id=
recherche  -> recherche simple  exemple : 02
retour     -> exemple : tab

appel librairie : « ../core/om_map.class.php »;

new om_map : obj + options
om_map = new om_map(obj, options);
om_map->recupOmSigMap();
om_map->recupOmSigflux();
om_map->computeFilters(options['idx']);
om_map->setParamsExternalBaseLayer();
om_map->prepareCanevas();

11.1.2. form_sig

URL : "".OM_ROUTE_MAP."&mode=form_sig" ou "../app/index.php?module=map&mode=form_sig"

les requêtes de mises à jour du geom ne sont plus initiée en form

variables get

obj, idx
popup -> tableau options
min max -> sert à la prépartion du geojson
etendue -> tableau options
reqmo -> tableau options
premier, recherche, selectioncol, adv_id -> tableau options
valide -> tableau options
style -> tableau options
onglet -> tableau options
validation (variable de validation spécifique form)

appel librairie : « ../core/om_map.class.php »;

New om_map : obj + options
om_map->recupOmSigMap
preparation du geojson
om_map->prepareForm( min, max, validation, geojson);

11.1.3. map_compute_geom

URL : "".OM_ROUTE_MAP."&mode=compute_geom" ou "../app/index.php?module=map&mode=compute_geom"

En utilisation du pannier, computegeom fait une union des geometries lorsque l on fait une validation (bouton v) après selection de multiples géométries

variables get

obj, idx
popup -> tableau options
min max -> sert à la prépartion du geojson
etendue -> tableau options
reqmo -> tableau options
premier, recherche, selectioncol, adv_id -> tableau options
valide -> tableau options
style -> tableau options
onglet -> tableau options

appel librairie : « ../core/om_map.class.php »;

om_map = new om_map(obj, options);
om_map->recupOmSigMap();
...
echo sep.om_map->getComputeGeom(c, geojson[i]);

11.1.4. map_get_filters

URL : "".OM_ROUTE_MAP."&mode=get_filters" ou "../app/index.php?module=map&mode=get_filters"

gestion du filtre qgis dans om_sig_map_flux

Exemple le père et tous ses fils

SELECT 'fpere_point:²pere² IN ( '||pere||' );fpere_perim:²pere² IN ( '||pere||' );ffils_point:²pere²
IN ( '||pere||' );ffils_point:²pere² IN ( '||pere||' );ffils_perim:²pere² IN ( '||pere||' )'
AS buffer FROM ( SELECT array_to_string(array_agg(pere), ' , ') AS pere FROM &DB_PREFIXEpere
WHERE pere IN (SELECT &idx::integer UNION &lst_idx) ) a

variables get

obj, idx
popup -> tableau options
min max -> sert à la prépartion du geojson
etendue -> tableau options
reqmo -> tableau options
premier, recherche, selectioncol, adv_id -> tableau options
valide -> tableau options
style -> tableau options
onglet -> tableau options

appel librairie : « ../core/om_map.class.php »;

om_map = new om_map(obj, options);
om_map->recupOmSigMap();
om_map->recupOmSigflux();
...
om_map->computeFilters(idx_sel);

11.1.5. map_get_geojson_cart

URL : "".OM_ROUTE_MAP."&mode=get_geojson_cart" ou "../app/index.php?module=map&mode=get_geojson_cart"

Récupére les géométries du pannier

variables get

obj, idx
popup -> tableau options
min max -> sert à la prépartion du geojson
etendue -> tableau options
reqmo -> tableau options
premier, recherche, selectioncol, adv_id -> tableau options
valide -> tableau options
style -> tableau options
onglet -> tableau options

appel librairie : « ../core/om_map.class.php »;

om_map = new om_map(obj, options);
om_map->recupOmSigMap();
om_map->recupOmSigflux();

lst=om_map->getGeoJsonCart(cart, lst);
... affichage de la liste

11.1.6. map_get_geojson_markers

URL : "".OM_ROUTE_MAP."&mode=get_geojson_markers" ou "../app/index.php?module=map&mode=get_geojson_markers"

Renvoie en format json les marqueurs (ex bulles)

variables get

obj, idx
popup -> tableau options
min max -> sert à la prépartion du geojson
etendue -> tableau options
reqmo -> tableau options
premier, recherche, selectioncol, adv_id -> tableau options
valide -> tableau options
style -> tableau options
onglet -> tableau options

appel librairie : « ../core/om_map.class.php »;

om_map = new om_map(obj, options);
om_map->recupOmSigMap();
lst=om_map->getGeoJsonMarkers(options['idx']);
... affichage de la liste

11.1.7. map_redirection_onglet

URL : "".OM_ROUTE_MAP."&mode=redirection_onglet" ou "../app/index.php?module=map&mode=redirection_onglet"

Ce programme sert à faire afficher sous form : fenetre dans une fenetre courante

Il appelle utils.class.php

Il permet la redirection vers le formulaire de l’objet en visualisation (action=3) si l’objet existe et de faire un ajout sinon.

L’ajout ne fonctionne pas. En cas d’appui sur formulaire, le message apparait : « aucun enregistrement sélectionné »

11.1.8. export_sig

URL : "".OM_ROUTE_TAB."&mode=export_sig" ou "../app/index.php?module=tab&mode=export_sig"

ce programme permet de faire un affichage sur la base d’un tab ou d une recherche.

  • export suivant le moteur de recherche (equivalent de export csv)
  • image dans app/img + app/css (appel à l image)
  • modification de core/om_layout.php function display_table_global_action
  • pour l instant ou csv ou sig -> pas de possibilité de faire les 2.
  • bug en recherche si aucun enregistrement -> ouvre un nouvel onglet

11.1.9. reqmo

A venir.

La modification de programme permet de lancer un tab_sig depuis reqmo.

Le programme a donc évolué pour gérer cette possibilité mais elle n est pas encore effective (voir alain)

Par contre une modification est obligatoire dans core/om_layout.class.php pour proposer l’option “json”

11.1.10. Nouvelles images dans img/ et nouvelle css pour l’interface om_sig

Des nouvelles images pour l interface

map-nav.png
map-geoloc.png
map-form.png
map-edit-valid.png
map-edit-select.png
map-edit-record.png
map-edit-point.png
map-edit-modif.png
map-edit-get-cart.png
map-edit-erase.png
map-edit-draw-regular.png
map-edit-draw-polygon.png
map-edit-draw-line.png
map-edit.png
map-distance.png
map-area.png

des nouvelles images pour recherche csv ou sig (geojson)

sig.png
csv.png

Nouvelle css à mettre en layout_jqueryui_before.css

Probleme d’affichage à regler

11.2. La classe om_map.class.php

Nouveauté version om 4.4.0sig

Ce module est dans CORE

Une classe intermédiaire est à créer dans obj/om_map.class.php

Actuellement créée, elle a un problème de prise en compte du zoom au départ BUG

11.2.1. Les variables globales

Elles sont définies ci dessous

var f;
    projections
    var defBaseProjection;
    var defDisplayProjection;

    paramètres
    var     obj;
    var     idx;
    var     sql_lst_idx;
    var     idx_sel;
    var     popup;
    var     seli;
    var etendue;
    var reqmo;
    var premier;
    var recherche;
    var selectioncol;
    var tricol;
    var advs_id;
    var valide;
    var style;
    var onglet;
    var type_utilisation = '';

    gestion de l'affichage
    var affichageZones= array();

    gestion de l'enregistrement
    var recordMultiComp; true: enregistrement de l'ensemble des champs géométriques ;
        false: enregistrement un par un des champs géométriques (par défaut)
    var recordMode; 1 (par défaut): via form_sig; 2 retour des valeurs dans des
        champs fournis dans le tableau recordFields
    var recordFields = array(); listes des champs retour (même index que comp)

    om_sig_map
    var sm_titre;
    var sm_source_flux;
    var sm_zoom;
    var sm_fond_sat;
    var sm_fond_osm;
    var sm_fond_bing;
    var sm_layer_info;
    var sm_fond_default;
    var sm_projection_externe;
    var sm_retour;
    var om_sig_map;
    var sm_url;
    var sm_om_sql;
    var sm_om_sql_idx;
    var sm_restrict_extent;
    var sm_sld_marqueur;
    var sm_sld_data;
    var sm_point_centrage;

    champs geom
    var cg_obj_class = array();
    var cg_maj = array();
    var cg_table = array();
    var cg_champ_idx = array();
    var cg_champ = array();
    var cg_geometrie = array();
    var cg_lib_geometrie = array();

    champs flux
    var fl_om_sig_map_flux = array();
    var fl_m_ol_map = array();
    var fl_m_visibility = array();
    var fl_m_panier = array();
    var fl_m_pa_nom = array();
    var fl_m_pa_layer = array();
    var fl_m_pa_attribut = array();
    var fl_m_pa_encaps = array();
    var fl_m_pa_sql = array();
    var fl_m_pa_type_geometrie = array();
    var fl_m_sql_filter = array();
    var fl_m_filter = array();
    var fl_m_baselayer = array();
    var fl_m_singletile = array();
    var fl_m_maxzoomlevel = array();
    var fl_w_libelle = array();
    var fl_w_attribution = array();
    var fl_w_id = array();
    var fl_w_chemin = array();
    var fl_w_couches = array();
    var fl_w_cache_type = array();
    var fl_w_cache_gfi_chemin = array();
    var fl_w_cache_gfi_couches = array();

    champs pour fonds de carte externes (OSM, Bing, Google)
    var pebl_http_google;
    var pebl_cle_bing;
    var pebl_cle_google;
    var pebl_zoom_osm_maj;
    var pebl_zoom_osm;
    var pebl_zoom_sat_maj;
    var pebl_zoom_sa;
    var pebl_zoom_bing_maj;
    var pebl_zoom_bing;

    paramètres de style pour la couche marqueur
    var img_maj="../img/punaise_sig.png";
    var img_maj_hover="../img/punaise_hover.png";
    var img_consult="../img/punaise_point.png";
    var img_consult_hover="../img/punaise_point_hover.png";
    var img_w=14;
    var img_h=32;
    var img_click="1.3";multiplicateur hauteur et largeur image cliquee

    gestion des paniers
    var cart_type = array(
        "point" => false,
        "line" => false,
        "polygon" => false
    );
    tableau de la barre du menu d'édition menu (id html, false)
    var edit_toolbar= array(
        "#map-edit-nav" => false,
        "#map-edit-draw-point" => false,
        "#map-edit-draw-line" => false,
        "#map-edit-draw-polygon" => false,
        "#map-edit-draw-regular" => false,
        "#map-edit-draw-regular-nb" => false,
        "#map-edit-draw-modify" => false,
        "#map-edit-draw-select" => false,
        "#map-edit-draw-erase" => false,
        "#map-edit-cart" => false,
        "#map-edit-get-cart" => false,
        "#map-edit-draw-record" => false,
        "#map-edit-draw-delete" => false,
        "#map-edit-draw-close" => false
        );

11.2.2. Les methodes

Les méthodes sont les suivantes

methode d’initialisation de l objet map:

construct(obj + options)
    initialisation des propriétés de l objet om_sig

    Récupération du paramétrage de l'objet dans les tables om_sig_map
et om_sig_map_comp. Préalable à toute utilisation de la classe
    function recupOmSigMap()
    requete om_sig_map + om_sig_extend

Génère un tableau (idx, sql_lst_idx) correspondant aux données idx/Reqmo/Recherche
le tableau est afficher par la classe om_table
    function getSelectRestrict(idx, seli)

    Génère un tableau GeoJson correspondant aux données idx/Reqmo/Recherche
    function getGeoJsonDatas(idx, seli)

    Génère un tableau GeoJson correspondant au panier cart (n de flux)
avec la liste des enregistrement lst
    function getGeoJsonCart(cart, lst)

    Génère un tableau GeoJson correspondant aux données idx/Reqmo/Recherche
    function getGeoJsonMarkers(idx)

    calcul des filtres pour les flux de type WMS (fl_m_filter)
    function computeFilters(idx)

    Récupération du paramétrage des flux associés à l'objet dans les tables om_sig_map_flux
    et om_sig_map_flux
function recupOmSigflux()
    requete dur om_sig_flux
    initialise le paramétrage de flux voir -> "champs flux"

    Initialisation des propriétés relatives aux fonds de carte externe,
    ajout des librairies associées si nécessaire
    function setParamsExternalBaseLayer()
    include de var_sig.inc
    initialise les "champs pour fonds de carte externes (OSM, Bing, Google)"

    Ecrit les propriétés de l'instance dans la page html pour JavaScript
    function prepareJS( )
    suite d'echo des variables

Preparation et affichage du canevas

    Paramétrage des zones du canevas
    function setCanevas(zone, val) {
            this->affichageZones[zone]=val;

    Préparation du canevas html: pilote les autres fonctions prepareCanevas...
    function prepareCanevas( )
    initialisation du tableau this->affichageZones

    Préparation du canevas html: menu avec regroupement (au moins une valeur  à 1)
    function prepareCanevasMenu() {

Affichage du canevas MODIFIE JLB
    function prepareCanevasTitre()
function prepareCanevasEdit()
function prepareCanevasTools() -> fonction vidée par jlb
function prepareCanevasInfos() -> fonction vidée par jlb
function prepareCanevasPrint() -> fonction enlevée par jlb
function prepareCanevasLayers() -> reprend les 2 fonctions enlevées par jlb
function prepareCanevasNavigation() -> modif jlb
function prepareCanevasGetfeatures() -> modif jlb

    Calcul la géométrie validé dans l'interface -> appel par map_compute_geom
    function getComputeGeom(seli, geojson)

    Préparation du canevas html: pilote les autres fonctions prepareCanevas...
-> appel par form_sig.php
    function prepareForm( min, max, validation, geojson)p_init()

voir core/obj et core/sql

11.3. Le java script

les fonctions sont dans js/sig.js

Nouvelles fonctions

affectation d'un mode d'action :
    Géolocalisation, Information,
    Navigation, Edition, Formulaire,
    Mesure surface, Mesure distance
    function map_set_mode_action(mode)

function popupIt pour utilisation dans sig
    function map_popupIt(objsf, link, width, height, callback, callbackParams) {

implémentation simplifiée de l'utilisation de popupIt dans la fonction SIG
function map_popup(url

vide les div du div map-getfeatures
function map_clear_getfeatures()

ouverture du div map-getfeatures
function map_close_getfeatures()

affichage dans la zone info
function map_affiche_info(message)

affichage dans la zone titre
function map_affiche_titre()

Traitement du select d'un élement de la couche des marqueurs
function map_on_select_feature_marker(event)

Traitement du unselect d'un élement de la couche des marqueurs
function map_on_unselect_feature_marker(event)

Traitement du select d'un élement de la couche des datas
function map_on_select_feature_data(event)

Traitement du unselect d'un élement de la couche des datas
function map_on_unselect_feature_data(event)

récupère la valeur d'un attribut (traitement GetFeatureInfo)
function traiteGetFeatureInfoRecAttribut(attributes,name)

récupère la valeur d'un attribut et formate la restitution (traitement GetFeatureInfo)
function traiteGetFeatureInfoRecAttributFormat(attributes,name,title, formatage)

traitement pour chaque GetFeatureInfo
function traiteGetFeatureInfo(i,rText,res)

Traitement du clic sur la carte
function map_clic(e)

copie les données geoson correspondant à l'idx sélectionné dans les
couches d'édition correspondantes
function map_copyDataToEditLayers()

Traitement clic Edit Draw Point
function map_clicEditDrawPoint()

Traitement clic Edit Draw Line
function map_clicEditDrawLine()

Traitement clic Edit Draw Polygon
function map_clicEditDrawPolygon()

//traitement du onChange sur le nombre de côté du polygone régulier
function map_EditDrawRegularChange()

Traitement clic Edit Draw Polygon
function map_clicEditDrawRegular()

Traitement clic Edit modify
function map_clicEditDrawModify()

Traitement clic Edit select
function map_clicEditSelect()

Traitement clic Edit navigate
function map_clicEditNavigate()

Traitement clic Edit Erase
function map_clicEditErase()

test si une valeur est un entier
function map_is_int(value)

désactive tous les controles d'édition sauf sauf
function map_deactivate_all_edit_control(sauf)

affiche/cache les éléments de la barre d'outils d'édition
function map_RefreshEditBar()

 calcule et valide les champs géométriques dont les composants sont sélectionnés
function map_computeGeom(sel, enreg)

traitement du clic sur le bouton de récupération du panier
function map_clicEditGetCart()

Selection d'un panier
function map_select_cart(n)

Selection d'un champ d'édition
function map_select_edit_champ(n)

Traitement géolocalisation
function map_clicGeolocate()

traitement bouton Edit
function map_clicEdit()

traitement bouton Edit Close
function map_clicEditClose()

Traitement de l'application des SLD pour les données geojson
function map_successGetSld_geojson_datas(req)

Chargement des données aux formats geojson
function map_load_geojson_datas(bRefreshFilters)

Traitement de l'application des SLD pour les marqueurs geojson
function map_successGetSld_geojson_markers(req)

Chargement des marqueurs aux formats geojson
function map_load_geojson_markers()

fonction d'identification des tuiles pour les flux de type SMT
function map_flux_SMT(bounds)

Initialisation des flux (om_sig_map_flux)
function map_load_flux(i)

Chargement des flux de type base
function map_load_bases_layers()
    fonction qui charge les fonds osm, bing, sat ou un numéro de flux

vide une des listes du selecteur (div map-layers)
(dest: baselayers, overlays, datas, markers)
function map_empty_layer_list(dest)

Chargement des flux de type overlays
function map_load_overlays()

Chargement des flux de type cart
function map_load_carts()

Affichage de la couche de base sélectionnée
function map_display_base_layer()

Ajoute du control openlayers de géolocalisation
function map_addGeolocateControl()

Ajoute le controle openLayers de sélection
function map_add_SelectControl()

Traitement des controles de mesure
function map_handleMeasurements(event)

Ajoute des controles de mesure
function map_add_MeasureControls()

Ajoute les contrôles openLayers à la carte
function map_add_controls()

Initialisation de la carte
function map_init()

affichage en onglet (jlb)

affiche_aide
affiche_layers
affiche_tools
affiche_baselayers
affiche_getfeatures

A voir

pb d affichage info si utilisation boite a outil : navigation ou geoloc ou
mesure distance ou mesure aire.