Bienvenue sur PostGIS.fr

Bienvenue sur PostGIS.fr , le site de la communauté des utilisateurs francophones de PostGIS.

PostGIS ajoute le support d'objets géographique à la base de données PostgreSQL. En effet, PostGIS "spatialise" le serverur PostgreSQL, ce qui permet de l'utiliser comme une base de données SIG.

Maintenu à jour, en fonction de nos disponibilités et des diverses sorties des outils que nous testons, nous vous proposons l'ensemble de nos travaux publiés en langue française.

source: trunk/workshop-foss4g/projection.rst @ 27

Revision 27, 7.8 KB checked in by djay, 13 years ago (diff)

Traduction partie 15

RevLine 
[1]1.. _projection:
2
[27]3Partie 15 : Projections des données
4===================================
[1]5
[27]6La Terre n'est pas plâte et il n'y a pas de moyen simple de la poser à plat sur une carte en papier (ou l'écran d'un ordinateur), donc les gens en sont  arriver à fournir des solutions ingénieuses, chacunes avec des bons et des mauvais cotés. Certaines projections préservent les aires, donc tout les objets ont des tailles relatives aux autres, d'autre projections conservent les angles (conformes) comme la projection Mercator, certaines projections tentent de minimiser la distorsion des différents paramÚtres. Le point commun entre toutes les projections est qu'elles transforment le monde (sphérique) en un systÚme plat de coordonnées cartésiennes, et le choix de la projection dépend de ce que vous souhaitez faire avec vos données.
[1]7
[27]8Nous avonsdéjà recontrer des projections, lorsque nous avons charger les données` de la ville de Ney York <loading_data>`.Rappelez-vous qu'elles utilisaient le SRID 26918. Parfois, malgrÚs tout, vous aurez besoin de transformer et de reprojeter vos données d'un systÚme de projection à l'autre, en utilisant la fonction  :command:`ST_Transform(geometry, srid)`. Pour manipuler les identifiant de systÚmes de références spatiales à partir d'une géométrie, PostGIS fournit les fonctions :command:`ST_SRID(geometry)` et :command:`ST_SetSRID(geometry, srid)`.
[1]9
[27]10Nous pouvons vérifier le SRID de nos données avec la commande :command:`ST_SRID` :
[1]11
12.. code-block:: sql
13
14  SELECT ST_SRID(the_geom) FROM nyc_streets LIMIT 1;
15 
16::
17
18  26918
19 
[27]20Et quelle est la définition du "26918" ? Comme nous l'avons vu lors de la partie ":ref:`chargement des données  <loading_data>`", la définition se trouve dans la table ``spatial_ref_sys``. En fait, **deux** définitions sont présentes. La définition au fromat :term:`WKT` dans la colonne ``srtext`` et il y a aussu une seconde définition correspondant au
[1]21.. code-block:: sql
22
23   SELECT * FROM spatial_ref_sys WHERE srid = 26918;
24   
[27]25En fait, pour les calculs internes de re-projection, c'est le contenu de la colonne ``proj4text`` qui est utilisé. Pour notre projection 26918, voici la définition au format proj.4 :
[1]26
27.. code-block:: sql
28
29  SELECT proj4text FROM spatial_ref_sys WHERE srid = 26918;
30 
31::
32
33  +proj=utm +zone=18 +ellps=GRS80 +datum=NAD83 +units=m +no_defs
34 
[27]35En pratique, à les deux colonnes ``srtext`` et ``proj4text`` sont importantes : la colonne ``srtext`` est utilisée par les applications externes comme `GeoServer <http://geoserver.org>`_, uDig <udig.refractions.net>`_, `FME <http://www.safe.com/>`_  et les autres alors que la colonne ``proj4text`` est principalement utilisée en interne.
[1]36
[27]37Comparaison de données
38----------------------
[1]39
[27]40Combiné, une coordonnée et un SRID définissent une position sur le globe. Sans le SRID, une coordonnée est juste une notion abstraite. Un systÚme de coordonnées "cartésiennes" est définit comme un systÚme de coordonnées "plat" sur la surface de la Terre. Puisque les fonctions de PostGIS utilisent cette surface plane, les opérations de comparaison nécessitent que l'ensemble des objets géométriques soient représenté dans le même systÚme, ayant le même SRID.
[1]41
[27]42Si vous utilisé des géométries avec différents SRID vous obtiendrez une erreur du genre :
[1]43
44.. code-block:: sql
45
46  SELECT ST_Equals(
47           ST_GeomFromText('POINT(0 0)', 4326),
48           ST_GeomFromText('POINT(0 0)', 26918)
49           );
50
51::
52
53  ERROR:  Operation on two geometries with different SRIDs
54  CONTEXT:  SQL function "st_equals" statement 1
55 
56
57.. note::
58
[27]59   Faites attention de pas utiliser la transformation à la volée à l'aide de :command:`ST_Transform` trpop souvent. Les indexes spatiaux sont construits en utilisant le SRID inclu dans les géométries. Si la comparaison est faite avec un SRID différent, les indexes spatiaux ne seront pas (la plupart du temps) utilisés. Il est reconnu qu'il vaut mieux choisir **un SRID** pour toutes les tables de votre base de données. N'utilisez la fonction de tranformation que lorsque vous lisez ou écrivez les données depuis une applications externe.
[1]60
61
[27]62Transformer les données
63-----------------------
[1]64
[27]65Si vous retournez à la définition au format proj4 du SRID 26918, vous pouvez voir que notre projectioin actuelle est de type UTM zone 18 (Universal Transvers Mercator), avec comme unité de mesure le mÚtre.
[1]66
67::
68
69   +proj=utm +zone=18 +ellps=GRS80 +datum=NAD83 +units=m +no_defs
70
[27]71Essayons de convertir certaines données de notre systÚme de projection dans un systÚme de coordonnées géographiques, aussi connu comme "longitude/latitude".
[1]72
[27]73Pour convertir les données d'un SRID à l'autre, nous devons dans un premier temps vérifier que nos géométries ont un SRID valide. une fois que nous avons vérifié ceci, nous devons ensuite trouver le SRID dans le lequel nous souhaitons re-projeter. En d'autre terme, quel est le SRID des coordonnées géographiques ?
[1]74
[27]75Le SRID le plus connu pour les coordonnées géographiques est le 4326, qui correspond au couple "longitude/latitude sur la sphéroïde WGS84". Vous pouvez voir sa définition sur le site spatialreference.org.
[1]76
77  http://spatialreference.org/ref/epsg/4326/
78 
[27]79Vous pouvez aussi récupérer les définitions dans la table  ``spatial_ref_sys`` :
[1]80
81.. code-block:: sql
82
83  SELECT srtext FROM spatial_ref_sys WHERE srid = 4326;
84 
85::
86
87  GEOGCS["WGS 84",
88    DATUM["WGS_1984",
89      SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],
90      AUTHORITY["EPSG","6326"]],
91    PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],
92    UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],
93    AUTHORITY["EPSG","4326"]]
94
[27]95Essayons de convertir les cordonnées de la station 'Broad St' :
[1]96
97.. code-block:: sql
98
99  SELECT ST_AsText(ST_Transform(the_geom,4326))
100  FROM nyc_subway_stations
101  WHERE name = 'Broad St';
102 
103::
104
105  POINT(-74.0106714688735 40.7071048155841)
106
[27]107Si vous chargez les données ou crééez une nouvelle géométrie sans spécifier un SRID, la valeur du SRID prendra alors la valeur -1. Rapellez-vous que dans les :ref:`geometries`, lorsque nous avons créé nos tables géométriques nous n'avions pas spécifié un SRID. Si nous interrogeons la base, nous devons nous attendre à ce que toutes les tables préfixées par ``nyc_`` aient le SRID 26918, alors que la table ``geometries`` aura la valeur -1 par défaut.
[1]108
[27]109Pour visualiser la table d'assignation des SRID, interroger la table ``geometry_columns`` de la base de données.
[1]110
111.. code-block:: sql
112
113  SELECT f_table_name AS name, srid
114  FROM geometry_columns;
115 
116::
117
118          name         | srid 
119  ---------------------+-------
120   nyc_census_blocks   | 26918
121   nyc_neighborhoods   | 26918
122   nyc_streets         | 26918
123   nyc_subway_stations | 26918
124   geometries          |    -1
125
126 
[27]127Neanmoins, si vous connaissez quel est le SRID de vos données, vous pouvez l'affecter par la suite, en utilisant la fonction :command:`ST_SetSRID` sur les géométries. Ensuite vous pourrez les tranformer dans d'autres systÚmes de projections.
[1]128
129.. code-block:: sql
130
131   SELECT ST_AsText(
132    ST_Transform(
133      ST_SetSRID(geom,26918),
134    4326)
135   )
136   FROM geometries;
137
[27]138Liste des fonctions
139-------------------
[1]140
[27]141`ST_AsText <http://postgis.org/docs/ST_AsText.html>`_: retourne la représentation au format Well-Known Text (WKT) sans la métadonnée SRID.
[1]142
[27]143`ST_SetSRID(geometry, srid) <http://postgis.org/docs/ST_SetSRID.html>`_: affecte une valeur au SRID d'une géométrie.
[1]144
[27]145`ST_SRID(geometry) <http://postgis.org/docs/ST_SRID.html>`_: retourne l'indentifiant du systÚme de références spatialesd'un objet ST_Geometry comme définit dans la table spatial_ref_sys.
146
147`ST_Transform(geometry, srid) <http://postgis.org/docs/ST_Transform.html>`_: retourne une nouvelle géométrie aprÚs avoi re-projeté  les données dans le systÚme correspondant au SRID passé en paramÚtre.
Note: See TracBrowser for help on using the repository browser.