LocateAlong utilise en entrée un objet de type géométrie et une mesure, et renvoie l'ensemble de points trouvés à la mesure sous forme de multipoint.
Si LocateAlong reçoit un multipoint et une mesure en entrée et si le multipoint n'inclut pas cette mesure, LocateAlong renvoie POINT EMPTY (point vide).
Syntaxe
db2gse.LocateAlong(g db2gse.ST_Geometry, [measure] Double)
Type de retour
db2gse.ST_Geometry
Exemples
L'instruction CREATE TABLE ci-après crée la table LOCATEALONG_TEST qui comporte deux colonnes : la colonne GID qui identifie chaque ligne de la table de manière univoque et la colonne de type géométrie G1 qui stocke la géométrie exemple.
CREATE TABLE LOCATEALONG_TEST (gid integer, g1 db2gse.ST_Geometry)
Les instructions INSERT ci-après insèrent deux lignes de table. La première est une multiligne, et la seconde, un multipoint.
INSERT INTO db2gse.LOCATEALONG_TEST VALUES( 1, db2gse.ST_MLineFromText('multilinestring m ((10.29 19.23 5,23.82 20.29 6, 30.19 18.47 7, 45.98 20.74 8), (23.82 20.29 6,30.98 23.98 7,42.92 25.98 8))', db2gse.coordref()..srid(0))) INSERT INTO db2gse.LocateAlong_TEST VALUES( 2, db2gse.ST_MPointFromText('multipoint m (10.29 19.23 5,23.82 20.29 6, 30.19 18.47 7,45.98 20.74 8,23.82 20.29 6,30.98 23.98 7,42.92 25.98)', db2gse.coordref()..srid(0)))
Dans l'instruction SELECT ci-après et l'ensemble de résultats correspondant, la fonction LocateAlong est conçue pour détecter les points qui ont une mesure de 6,5. La première ligne de la table renvoie un multipoint contenant deux points. Par contre, la seconde renvoie un point vide. Pour les entités linéaires (géométries dotées d'une dimension supérieure à 0), LocateAlong peut interpoler le point ; par contre, dans le cas de multipoints, la mesure cible doit être exactement identique.
SELECT gid, CAST(db2gse.ST_AsText(db2gse.LocateAlong (g1,6.5)) AS varchar(96)) "Geometry" FROM LOCATEALONG_TEST GID Geometry ----------- -------------------------------------------------------------- 1 MULTIPOINT M ( 27.01000000 19.38000000 6.50000000, 27.40000000 22.14000000 6.50000000) 2 POINT EMPTY 2 record(s) selected.
Dans l'instruction SELECT ci-après et l'ensemble de résultats correspondant, la fonction LocateAlong renvoie des multipoints pour les deux lignes de la table. La mesure cible de valeur 7 est exactement identique aux mesures contenues dans les données source de la multiligne et du multipoint.
SELECT gid,CAST(db2gse.ST_AsText(db2gse.LocateAlong (g1,7)) AS varchar(96)) "Geometry" FROM LOCATEALONG_TEST GID Geometry ----------- -------------------------------------------------------------- 1 MULTIPOINT M ( 30.19000000 18.47000000 7.00000000, 30.98000000 23.98000000 7.00000000) 2 MULTIPOINT M ( 30.19000000 18.47000000 7.00000000, 30.98000000 23.98000000 7.00000000) 2 record(s) selected.