"The explosive growth of the GeoWeb and geographic information has made GIS powerful media for the general public to communicate, but perhaps more importantly, GIS have also become media for constructive dialogs and interactions about social issues." - Sui & Goodchild
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
geoinf14:postgis1 [2014/12/01 15:30] oertz [Premiers pas en GQL] |
geoinf14:postgis1 [2018/05/16 10:05] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Spatial Query Language :: Part1 ====== | ====== Spatial Query Language :: Part1 ====== | ||
- | Création d'une //géotable// : | + | Créer une //géotable// : |
<code> | <code> | ||
CREATE TABLE test (id serial PRIMARY KEY, genre text); | CREATE TABLE test (id serial PRIMARY KEY, genre text); | ||
- | SELECT AddGeometryColumn( 'test1', 'the_geom', -1, 'GEOMETRY', 2 ); | + | SELECT AddGeometryColumn( 'test', 'the_geom', -1, 'GEOMETRY', 2 ); |
</code> | </code> | ||
- | Alimentation avec quelques géométries //en dur// : | + | Alimenter la table avec quelques géométries //en dur// et pas vraiment "spatiales" (SRS = -1 !!): |
<code> | <code> | ||
INSERT INTO test VALUES ( 3, 'batiment1', ST_GeometryFromText( 'POLYGON((10 10,40 20,35 8,12 4,10 10))', -1 ) ); | INSERT INTO test VALUES ( 3, 'batiment1', ST_GeometryFromText( 'POLYGON((10 10,40 20,35 8,12 4,10 10))', -1 ) ); | ||
Line 20: | Line 20: | ||
INSERT INTO test VALUES ( 9, 'bordureRoute2', ST_GeometryFromText( 'LINESTRING(1 92,50 92)', -1 ) ); | INSERT INTO test VALUES ( 9, 'bordureRoute2', ST_GeometryFromText( 'LINESTRING(1 92,50 92)', -1 ) ); | ||
</code> | </code> | ||
- | ===== Premiers pas en GQL ===== | + | ===== Premiers pas ===== |
(-> cf. documentation [[http://postgis.refractions.net/documentation/manual-1.5/reference.html|PostGIS Reference]]) | (-> cf. documentation [[http://postgis.refractions.net/documentation/manual-1.5/reference.html|PostGIS Reference]]) | ||
- | - Quelles sont les aires des objets ? -> ST_Area2d<code>...</code> | + | - Quelles sont les aires des objets ? -> ST_Area2d<code>cf. 2</code> |
- | - Quel sont les types géométriques des objets ? -> Geometrytype<code>...</code> | + | - Quel sont les types géométriques des objets ? -> Geometrytype<code> |
- | - Quel est l'objet géométrique le plus proche du pieton 2 ? -> ST_Distance<code>...</code> | + | SELECT *, ST_Area(the_geom) FROM test WHERE ST_Geometrytype(the_geom) = 'ST_Polygon' |
- | - Qui est dans le bâtiment 2 ? -> ST_Within<code>...</code> | + | </code> |
+ | - Quel est l'objet géométrique le plus proche du pieton 2 ? -> ST_Distance<code> | ||
+ | SELECT genre, ST_Distance(the_geom, (SELECT the_geom FROM test WHERE id = 2)) as dist FROM test | ||
+ | WHERE id <> 2 ORDER BY dist LIMIT 1 | ||
+ | |||
+ | OU | ||
+ | |||
+ | SELECT t1.* FROM test t1, test t2 WHERE t2.genre LIKE 'pieton2' | ||
+ | AND ST_Distance(t1.the_geom,t2.the_geom) = ( | ||
+ | SELECT min(ST_Distance(t1.the_geom, t2.the_geom)) FROM test t1, test t2 | ||
+ | WHERE t1.genre LIKE 'pieton2' AND t2.genre <> 'pieton2' | ||
+ | ) | ||
+ | </code> | ||
+ | - Qui est dans le bâtiment 2 ? -> ST_Within<code> | ||
+ | SELECT * FROM test WHERE genre like 'pieton%' | ||
+ | AND ST_WithIn(test.the_geom, (SELECT the_geom FROM test WHERE genre LIKE 'batiment2')); | ||
+ | </code> | ||
//(source: [[http://www.davidgis.fr|Jean David Techer]])// | //(source: [[http://www.davidgis.fr|Jean David Techer]])// |