Changeset 62 for trunk/workshop-foss4g/projection.rst
- Timestamp:
- 17/03/2012 00:49:40 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/workshop-foss4g/projection.rst
r47 r62 4 4 =================================== 5 5 6 La Terre n'est pas plate et il n'y a pas de moyen simple de la poser à plat sur une carte en papier (ou l'écran d'un ordinateur). Certaines projections préservent les aires, donc tou tles 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.6 La Terre n'est pas plate et il n'y a pas de moyen simple de la poser à plat sur une carte en papier (ou l'écran d'un ordinateur). Certaines projections préservent les aires, donc tous 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. 7 7 8 Nous avons déjà re contrer des projections, lorsque nous avons charger les données de la ville de Ney York .Rappelez-vous qu'elles utilisaient le SRID 26918. Parfois, vous aurez malgré tout besoin de transformer et de reprojeter vos données d'un systÚme de projection à un 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)`.8 Nous avons déjà rencontré des projections, lorsque nous avons chargé les données de la ville de Ney York .Rappelez-vous qu'elles utilisaient le SRID 26918. Parfois, vous aurez malgré tout besoin de transformer et de reprojeter vos données d'un systÚme de projection à un autre, en utilisant la fonction :command:`ST_Transform(geometry, srid)`. Pour manipuler les identifiants de systÚme de référence spatiale à partir d'une géométrie, PostGIS fournit les fonctions :command:`ST_SRID(geometry)` et :command:`ST_SetSRID(geometry, srid)`. 9 9 10 10 Nous pouvons vérifier le SRID de nos données avec la commande :command:`ST_SRID` : … … 13 13 14 14 SELECT ST_SRID(the_geom) FROM nyc_streets LIMIT 1; 15 15 16 16 :: 17 17 18 18 26918 19 20 Et quelle est la définition du "26918" ? Comme nous l'avons vu lors de la partie ":ref:`chargement des données `", la définition se trouve dans la table ``spatial_ref_sys``. En fait, **deux** définitions sont présentes. La définition au format :term:`WKT` dans la colonne ``srtext``19 20 Et 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 format :term:`WKT` dans la colonne ``srtext`` 21 21 22 22 .. code-block:: sql 23 23 24 24 SELECT * FROM spatial_ref_sys WHERE srid = 26918; 25 25 26 26 En 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 : 27 27 … … 29 29 30 30 SELECT proj4text FROM spatial_ref_sys WHERE srid = 26918; 31 31 32 32 :: 33 33 34 +proj=utm +zone=18 +ellps=GRS80 +datum=NAD83 +units=m +no_defs 35 34 +proj=utm +zone=18 +ellps=GRS80 +datum=NAD83 +units=m +no_defs 35 36 36 En 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 autres, alors que la colonne ``proj4text`` est principalement utilisée par PostGIS en interne. 37 37 … … 54 54 ERROR: Operation on two geometries with different SRIDs 55 55 CONTEXT: SQL function "st_equals" statement 1 56 56 57 57 58 58 .. note:: 59 59 60 Faites attention de pas utiliser la transformation à la volée à l'aide de :command:`ST_Transform` trop souvent. Les index es spatiaux sont construits en utilisant le SRID inclu dans les géométries. Si la comparaison est faite avec un SRID différent, les indexesspatiaux 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 application externe.60 Faites attention de pas utiliser la transformation à la volée à l'aide de :command:`ST_Transform` trop souvent. Les index spatiaux sont construits en utilisant le SRID inclus dans les géométries. Si la comparaison est faite avec un SRID différent, les index 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 application externe. 61 61 62 62 … … 64 64 ----------------------- 65 65 66 Si vous retournez à la définition au format proj4 du SRID 26918, vous pouvez voir que notre projectio in actuelle est de type UTM zone 18 (Universal Transvers Mercator), avec le mÚtre comme unité de mesure.66 Si vous retournez à la définition au format proj4 du SRID 26918, vous pouvez voir que notre projection actuelle est de type UTM zone 18 (Universal Transvers Mercator), avec le mÚtre comme unité de mesure. 67 67 68 68 :: 69 69 70 +proj=utm +zone=18 +ellps=GRS80 +datum=NAD83 +units=m +no_defs 70 +proj=utm +zone=18 +ellps=GRS80 +datum=NAD83 +units=m +no_defs 71 71 72 72 Essayons de convertir certaines données de notre systÚme de projection dans un systÚme de coordonnées géographiques connu comme "longitude/latitude". 73 73 74 Pour 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é cela, nous devons ensuite trouver le SRID dans lelequel nous souhaitons re-projeter. En d'autre terme, quel est le SRID des coordonnées géographiques ?74 Pour 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é cela, nous devons ensuite trouver le SRID dans lequel nous souhaitons re-projeter. En d'autre terme, quel est le SRID des coordonnées géographiques ? 75 75 76 Le 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.76 Le 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 http://spatialreference.org. 77 77 78 78 http://spatialreference.org/ref/epsg/4326/ 79 79 80 80 Vous pouvez aussi récupérer les définitions dans la table ``spatial_ref_sys`` : 81 81 … … 83 83 84 84 SELECT srtext FROM spatial_ref_sys WHERE srid = 4326; 85 85 86 86 :: 87 87 … … 98 98 .. code-block:: sql 99 99 100 SELECT ST_AsText(ST_Transform(the_geom,4326)) 101 FROM nyc_subway_stations 100 SELECT ST_AsText(ST_Transform(the_geom,4326)) 101 FROM nyc_subway_stations 102 102 WHERE name = 'Broad St'; 103 103 104 104 :: 105 105 106 106 POINT(-74.0106714688735 40.7071048155841) 107 107 108 Si vous chargez les données ou créez une nouvelle géométrie sans spécifier de SRID, la valeur du SRID prendra alors la valeur -1. Rap ellez-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.108 Si vous chargez les données ou créez une nouvelle géométrie sans spécifier de SRID, la valeur du SRID prendra alors la valeur -1. Rappelez-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. 109 109 110 Pour visualiser la table d'assignation des SRID, interroge rla table ``geometry_columns`` de la base de données.110 Pour visualiser la table d'assignation des SRID, interrogez la table ``geometry_columns`` de la base de données. 111 111 112 112 .. code-block:: sql 113 113 114 SELECT f_table_name AS name, srid 114 SELECT f_table_name AS name, srid 115 115 FROM geometry_columns; 116 116 117 117 :: 118 118 119 name | srid 119 name | srid 120 120 ---------------------+------- 121 121 nyc_census_blocks | 26918 … … 125 125 geometries | -1 126 126 127 128 Néanmoins, si vous connaissez 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 tran former dans d'autres systÚmes de projections.127 128 Néanmoins, si vous connaissez 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 transformer dans d'autres systÚmes de projections. 129 129 130 130 .. code-block:: sql … … 144 144 `ST_SetSRID(geometry, srid) <http://postgis.org/docs/ST_SetSRID.html>`_: affecte une valeur au SRID d'une géométrie. 145 145 146 `ST_SRID(geometry) <http://postgis.org/docs/ST_SRID.html>`_: retourne l'i ndentifiant du systÚme de références spatialesd'un objet ST_Geometry comme définitdans la table spatial_ref_sys.146 `ST_SRID(geometry) <http://postgis.org/docs/ST_SRID.html>`_: retourne l'identifiant du systÚme de référence spatiale d'un objet ST_Geometry comme défini dans la table spatial_ref_sys. 147 147 148 `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. 148 `ST_Transform(geometry, srid) <http://postgis.org/docs/ST_Transform.html>`_: retourne une nouvelle géométrie aprÚs avoir re-projeté les données dans le systÚme correspondant au SRID passé en paramÚtre. 149
Note: See TracChangeset
for help on using the changeset viewer.