- Timestamp:
- 26/09/2011 10:17:36 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/workshop-foss4g/projection.rst
r1 r27 1 1 .. _projection: 2 2 3 Section 15: Projecting Data 4 =========================== 3 Partie 15 : Projections des données 4 =================================== 5 5 6 The earth is not flat, and there is no simple way of putting it down on a flat paper map (or computer screen), so people have come up with all sorts of ingenious solutions, each with pros and cons. Some projections preserve area, so all objects have a relative size to each other; other projections preserve angles (conformal) like the Mercator projection; some projections try to find a good intermediate mix with only little distortion on several parameters. Common to all projections is that they transform the (spherical) world onto a flat cartesian coordinate system, and which projection to choose depends on how you will be using the data.6 La 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. 7 7 8 We've already encountered projections when we :ref:`loaded our nyc data <loading_data>`. (Recall that pesky SRID 26918). Sometimes, however, you need to transform and re-project between spatial reference systems. PostGIS includes built-in support for changing the projection of data, using the :command:`ST_Transform(geometry, srid)` function. For managing the spatial reference identifiers on geometries, PostGIS provides the :command:`ST_SRID(geometry)` and :command:`ST_SetSRID(geometry, srid)` functions.8 Nous 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)`. 9 9 10 We can confirm the SRID of our data with the :command:`ST_SRID` command:10 Nous pouvons vérifier le SRID de nos données avec la commande :command:`ST_SRID` : 11 11 12 12 .. code-block:: sql … … 18 18 26918 19 19 20 And what is definition of "26918"? As we saw in ":ref:`loading data section <loading_data>`", the definition is contained in the ``spatial_ref_sys`` table. In fact, **two** definitions are there. The "well-known text" (:term:`WKT`) definition is in the ``srtext`` column, and there is a second definition in "proj.4" format in the ``proj4text`` column. 21 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 fromat :term:`WKT` dans la colonne ``srtext`` et il y a aussu une seconde définition correspondant au 22 21 .. code-block:: sql 23 22 24 23 SELECT * FROM spatial_ref_sys WHERE srid = 26918; 25 24 26 In fact, for the internal PostGIS re-projection calculations, it is the contents of the ``proj4text`` column that are used. For our 26918 projection, here is the proj.4 text:25 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 26 28 27 .. code-block:: sql … … 34 33 +proj=utm +zone=18 +ellps=GRS80 +datum=NAD83 +units=m +no_defs 35 34 36 In practice, both the ``srtext`` and the ``proj4text`` columns are important: the ``srtext`` column is used by external programs like `GeoServer <http://geoserver.org>`_, `uDig <udig.refractions.net>`_, and `FME <http://www.safe.com/>`_ and others; the ``proj4text`` column is used internally.35 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 les autres alors que la colonne ``proj4text`` est principalement utilisée en interne. 37 36 38 Compar ing Data39 -------------- 37 Comparaison de données 38 ---------------------- 40 39 41 Taken together, a coordinate and an SRID define a location on the globe. Without an SRID, a coordinate is just an abstract notion. A âCartesianâ coordinate plane is defined as a âflatâ coordinate system placed on the surface of Earth. Because PostGIS functions work on such a plane, comparison operations require that both geometries be represented in the same SRID.40 Combiné, 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. 42 41 43 If you feed in geometries with differing SRIDs you will just get an error:42 Si vous utilisé des géométries avec différents SRID vous obtiendrez une erreur du genre : 44 43 45 44 .. code-block:: sql … … 58 57 .. note:: 59 58 60 Be careful of getting too happy with using :command:`ST_Transform` for on-the-fly conversion. Spatial indexes are built using SRID of the stored geometries. If comparison are done in a different SRID, spatial indexes are (often) not used. It is best practice to choose **one SRID** for all the tables in your database. Only use the transformation function when you are reading or writing data to external applications.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. 61 60 62 61 63 Transform ing Data64 ----------------- 62 Transformer les données 63 ----------------------- 65 64 66 If we return to our proj4 definition for SRID 26918, we can see that our working projection is UTM (Universal Transverse Mercator) of zone 18, with meters as the unit of measurement.65 Si 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. 67 66 68 67 :: … … 70 69 +proj=utm +zone=18 +ellps=GRS80 +datum=NAD83 +units=m +no_defs 71 70 72 Let's convert some data from our working projection to geographic coordinates -- also known as "longitude/latitude". 71 Essayons 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". 73 72 74 To convert data from one SRID to another, you must first verify that your geometry has a valid SRID. Since we have already confirmed a valid SRID, we next need the SRID of the projection to transform into. In other words, what is the SRID of geographic coordinates?73 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é 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 ? 75 74 76 The most common SRID for geographic coordinates is 4326, which corresponds to "longitude/latitude on the WGS84 spheroid". You can see the definition at the spatialreference.org site: 75 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. 77 76 78 77 http://spatialreference.org/ref/epsg/4326/ 79 78 80 You can also pull the definitions from the ``spatial_ref_sys`` table:79 Vous pouvez aussi récupérer les définitions dans la table ``spatial_ref_sys`` : 81 80 82 81 .. code-block:: sql … … 94 93 AUTHORITY["EPSG","4326"]] 95 94 96 Let's convert the coordinates of the 'Broad St' subway station into geographics:95 Essayons de convertir les cordonnées de la station 'Broad St' : 97 96 98 97 .. code-block:: sql … … 106 105 POINT(-74.0106714688735 40.7071048155841) 107 106 108 If you load data or create a new geometry without specifying an SRID, the SRID value will be -1. Recall in :ref:`geometries`, that when we created our ``geoemetries`` table we didn't specify an SRID. If we query our database, we should expect all the ``nyc_`` tables to have an SRID of 26918, while the ``geometries`` table defaulted to an SRID of -1.107 Si 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. 109 108 110 To view a table's SRID assignment, query the database's ``geometry_columns`` table.109 Pour visualiser la table d'assignation des SRID, interroger la table ``geometry_columns`` de la base de données. 111 110 112 111 .. code-block:: sql … … 126 125 127 126 128 However, if you know what the SRID of the coordinates is supposed to be, you can set it post-facto, using :command:`ST_SetSRID` on the geometry. Then you will be able to transform the geometry into other systems.127 Neanmoins, 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. 129 128 130 129 .. code-block:: sql … … 137 136 FROM geometries; 138 137 139 Function List 140 ------------- 141 `ST_AsText <http://postgis.org/docs/ST_AsText.html>`_: Returns the Well-Known Text (WKT) representation of the geometry/geography without SRID metadata. 138 Liste des fonctions 139 ------------------- 142 140 143 `ST_ SetSRID(geometry, srid) <http://postgis.org/docs/ST_SetSRID.html>`_: Sets the SRID on a geometry to a particular integer value.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. 144 142 145 `ST_S RID(geometry) <http://postgis.org/docs/ST_SRID.html>`_: Returns the spatial reference identifier for the ST_Geometry as defined in spatial_ref_sys table.143 `ST_SetSRID(geometry, srid) <http://postgis.org/docs/ST_SetSRID.html>`_: affecte une valeur au SRID d'une géométrie. 146 144 147 `ST_Transform(geometry, srid) <http://postgis.org/docs/ST_Transform.html>`_: Returns a new geometry with its coordinates transformed to the SRID referenced by the integer parameter. 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 TracChangeset
for help on using the changeset viewer.