1. #1
    Rédacteur
    Avatar de SQLpro
    Homme Profil pro
    Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Inscrit en
    mai 2002
    Messages
    16 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 16 856
    Points : 39 132
    Points
    39 132

    Par défaut ARTICLE : SQL et système d'information géographique (SIG)

    Cet article fait la synthèse de l'état de l'art en matière de SIG sous SQL dans les SGBDR

    Un système d’information géographique (SIG ou GIS en anglais pour geographical information system, aussi appelé SIRS pour système d’information à référence spatiale) est constitué de type de données et méthodes permettant d’établir des plans et des cartes pour traiter différents problèmes relatifs aux données spatiales et planaires. Les SIG sont aujourd'hui largement intégrés aux SGBDR et permettent des manipulations via des requêtes écrites en langage SQL.

    Contenu :

    0 - Introduction

    1 - Type SQL pour les objets spatiaux

    2 - Types des données spatiales

    3 - Représentation logique des données géométriques

    4 - Identificateur de référence spatiale (SRID)

    5 - Expression des valeurs

    6 - Méthodes
    6.1 - Constructeur de types
    6.2 - Transtypage des types géométriques
    6.3 - Méthodes communes
    6.4 - Méthodes testant les relations topologiques entre les objets
    6.5 - Méthodes DE-9IM et autour de...
    6.6 - Méthodes de calcul
    6.7 - Méthodes intergéométriques
    6.8 - Méthodes spécifiques


    7 - Et quoi encore ?

    CONCLUSION : comparaison PostGreSQL / PostGIS vs SQL Server 2008

    http://blog.developpez.com/sqlpro/p9...n-geographiqu/

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *

  2. #2
    Modérateur
    Avatar de elsuket
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    janvier 2005
    Messages
    5 735
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : janvier 2005
    Messages : 5 735
    Points : 11 704
    Points
    11 704

    Par défaut

    Ma souris en fume déjà

    Merci !

  3. #3
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    avril 2007
    Messages
    1 983
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : avril 2007
    Messages : 1 983
    Points : 3 073
    Points
    3 073

    Par défaut

    Merci beaucoup pour cet article.
    Je pensais justement aujourd'hui de cette nouveauté dans MS SQL 2008 en imaginant qu'elle pourrait me permettre de résoudre un problème auquel je suis confronté en ce moment.
    Désormais, j'ai une bonne idée des possibilités offertes par cette fonctionnalité.

  4. #4
    Rédacteur
    Avatar de SQLpro
    Homme Profil pro
    Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Inscrit en
    mai 2002
    Messages
    16 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 16 856
    Points : 39 132
    Points
    39 132

    Par défaut

    En particulier dans SQL Server et à travers son outil SQL Server Management Studio, vous avez un onglet supplémentaire pour montrer visuellement les résultat des requêtes SIG GEOMETRY (planaire) ou GEOGRAPHY c'est à dire avec les projections...
    1) équirectangulaire :
    http://www.developpez.net/forums/att...1&d=1288164801
    2) Mercator :
    http://www.developpez.net/forums/att...1&d=1288164834
    3) Robinson :
    http://www.developpez.net/forums/att...1&d=1288164854
    4) Bonne :
    http://www.developpez.net/forums/att...1&d=1288164878

    A +
    Images attachées Images attachées     
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    octobre 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2009
    Messages : 70
    Points : 86
    Points
    86

    Par défaut

    Pour ce qui est de postgres, il faudrait aussi parler des index de type gist qui permettent de faire des recherches très rapides sur les formes géométriques, par exemple trouver les lignes de la table dont les coordonnées géographiques sont contenues dans une box...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    CREATE TABLE test_geo AS SELECT BOX( POINT( x,y ), POINT( x,y ) ) AS coords FROM (SELECT random() x, random() y FROM generate_series( 1,1000000 ) s ) foo;
    VACUUM test_geo;
     
    EXPLAIN ANALYZE SELECT count(*) FROM test_geo WHERE coords && '((0.5,0.5),(0.51,0.51))'::BOX;
                                                        QUERY PLAN                                                    
    ------------------------------------------------------------------------------------------------------------------
     Aggregate  (cost=19865.60..19865.61 rows=1 width=0) (actual time=136.094..136.095 rows=1 loops=1)
       ->  Seq Scan on test_geo  (cost=0.00..19853.10 rows=5000 width=0) (actual time=0.393..136.064 rows=98 loops=1)
             Filter: (coords && '(0.51,0.51),(0.5,0.5)'::box)
     Total runtime: 136.134 ms
    (4 lignes)
    CREATE INDEX test_geo_coords ON test_geo USING gist( coords );
     
    EXPLAIN ANALYZE SELECT count(*) FROM test_geo WHERE coords && '((0.5,0.5),(0.51,0.51))'::BOX;
                                                                 QUERY PLAN                                                             
    ------------------------------------------------------------------------------------------------------------------------------------
     Aggregate  (cost=7242.06..7242.07 rows=1 width=0) (actual time=0.522..0.522 rows=1 loops=1)
       ->  Bitmap Heap Scan on test_geo  (cost=215.35..7229.55 rows=5000 width=0) (actual time=0.327..0.508 rows=98 loops=1)
             Recheck Cond: (coords && '(0.51,0.51),(0.5,0.5)'::box)
             ->  Bitmap Index Scan on test_geo_coords  (cost=0.00..214.10 rows=5000 width=0) (actual time=0.307..0.307 rows=98 loops=1)
                   Index Cond: (coords && '(0.51,0.51),(0.5,0.5)'::box)
     Total runtime: 0.564 ms

  6. #6
    Rédacteur
    Avatar de SQLpro
    Homme Profil pro
    Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Inscrit en
    mai 2002
    Messages
    16 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 16 856
    Points : 39 132
    Points
    39 132

    Par défaut

    Bien évidemment cela existe aussi sous SQL Server avec quelques raffinements. Voici la syntaxe (en dehors des paramètres généraux des index) de la création d'un index spatial pour une colonne GEOMETRY ou GEOGRAPHY dans SQL Server 2008 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Create Spatial Index 
    CREATE SPATIAL INDEX index_name 
      ON <object> ( spatial_column_name )
        {
           [ USING <geometry_grid_tessellation> ]
              WITH ( <bounding_box> 
                    [ [,] <tesselation_parameters> [ ,...n ] ] 
                    [ [,] <spatial_index_option> [ ,...n ] ] ) 
         | [ USING <geography_grid_tessellation> ] 
              [ WITH ( [ <tesselation_parameters> [ ,...n ] ]
                       [ [,] <spatial_index_option> [ ,...n ] ] ) ]
        } 
      [ ON { filegroup_name | "default" } ]
    ; 
     
    <object> ::=
        [ database_name. [ schema_name ] . | schema_name. ] 
                    table_name
     
    <geometry_grid_tessellation> ::=
    { GEOMETRY_GRID }
     
    <bounding_box> ::=
    BOUNDING_BOX = ( {
            xmin, ymin, xmax, ymax 
       | <named_bb_coordinate>, <named_bb_coordinate>, <named_bb_coordinate>, <named_bb_coordinate> 
      } )
     
    <named_bb_coordinate> ::= { XMIN = xmin | YMIN = ymin | XMAX = xmax | YMAX=ymax }
     
    <tesselation_parameters> ::=
    { 
        GRIDS = ( { <grid_density> [ ,...n ] | <density>, <density>, <density>, <density>  } ) 
      | CELLS_PER_OBJECT = n 
    }
     
    <grid_density> ::=
    {
         LEVEL_1 = <density> 
      |  LEVEL_2 = <density> 
      |  LEVEL_3 = <density> 
      |  LEVEL_4 = <density> 
    }
     
    <density> ::= { LOW | MEDIUM | HIGH }
     
    <geography_grid_tessellation> ::= 
    { GEOGRAPHY_GRID }
    Les essais que j'ai pu mené sont que SQL Server est plus pointu en indexation sur un bon nombre de requêtes sargeable que ne l'est PotsGreSQL/PostGis. Mais ces essais n'ayant pas été fait avec une volumétrie suffisante, je ne ferais pas de papier sur le sujet.

    Enfin, dans mon ouvrage, sur SQL (3e edition), je parle des techniques interne d'indexation notamment au niveau des tesselations et des courbes de Hilbert.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *

  7. #7
    Membre émérite

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : mars 2010
    Messages : 1 278
    Points : 2 795
    Points
    2 795

    Par défaut

    Il faut que je prenne quelques jours de congés pour bien lire cet article
    J'ai déjà vu des démos sur le sujet, mais je pas encore eu l'occasion de pratiquer moi-même. En tout cas merci pour cet article.

    A+
    Etienne ZINZINDOHOUE
    Billets-Articles

Discussions similaires

  1. ARTICLE : SQL et système d'information géographique (SIG)
    Par SQLpro dans le forum SIG : Système d'information Géographique
    Réponses: 0
    Dernier message: 26/10/2010, 16h57
  2. Réponses: 0
    Dernier message: 26/10/2010, 15h45
  3. ARTICLE : SQL et système d'information géographique (SIG)
    Par SQLpro dans le forum Développement
    Réponses: 0
    Dernier message: 26/10/2010, 15h45
  4. Réponses: 0
    Dernier message: 26/10/2010, 15h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo