<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
(re) Bonjour,<br>
<br>
Merci pour votre retour rapide, mais, comme je l'indiquais dans le
mail précédent, j'ai bien vérifié que mes lignes soient bien des
linestring en utilisant la requête suivante :<br>
"select st_geometrytype(shape) type_geom, count (*) from
web.trs_itineraire group by type_geom" ==== > Réponse : 1 ligne
: type geom = "ST_LineString", count = 292<br>
Lors de mon tout premier essai, j'avais 3 multilinestring que j'ai
identifiées et reprise pour les transformer en linestring.<br>
<br>
Elles ne sont pourtant pas "simple" :<br>
"select st_issimple(shape) geom_simple, count (*) from
web.trs_itineraire group by geom_simple ==== > Réponse : 2 ligne
: geom_simple : "f", count 244 /// geom_simple : "t", count : 48<br>
<br>
Je viens de relire mon mail et je vois que je n'ai jamais écrit le
message d'erreur :<br>
<font color="#999999"><br>
ERREUR: GEOSOffsetCurve: TopologyException: assigned depths do
not match at 547354.26116135239 6344318.7079305416<br>
********** Erreur **********<br>
ERREUR: GEOSOffsetCurve: TopologyException: assigned depths do not
match at 547354.26116135239 6344318.7079305416<br>
État SQL :XX000</font><br>
<br>
J'ai ce message pour ma requête comme pour la votre (si je l'ai bien
adapté) :<br>
<br>
SELECT ST_OffsetCurve(theGeom, 25, 'quad_segs=4 join=round') AS
theOffset<br>
FROM (<br>
SELECT (ST_Dump(shape)).geom AS theGeom<br>
FROM web.trs_itineraire<br>
where code = '06-20B'<br>
) AS subQuery;<br>
<br>
l'itineraire pris en exemple a ce dessin : <br>
<br>
<img src="cid:part1.00020105.05080908@cg82.fr" alt=""><br>
<br>
Il y a donc 3 aller retour sur les excroissance que l'on peut voir
et donc autant de point utilisé plusieurs fois que ces branche en
comporte.<br>
<br>
Pour ce qui est des index, il y en a bien sur code, code + nom et
nom. Pour ce qui est des injections SQL , nous essayons de respecter
les préconisation en la matière (bien qu'on ne soit jamais à
l'abris)...<br>
<br>
Merci encore pour votre aide. En espérant que mon problème est une
solution.<br>
<br>
Guillaume.<br>
<br>
<br>
<div class="moz-cite-prefix">Le 28/01/2015 16:02, Rémi Cura a
écrit :<br>
</div>
<blockquote
cite="mid:CAJvUf_u-+0H_hAmpLmdyfD6tK0ecpRbHdYBagEyrs_aTcpESYQ@mail.gmail.com"
type="cite">
<div dir="ltr">
<div>
<div>
<div>
<div>/* For the list archive : problem is probably using
ST_OffsetCurve with multilinestring instead of
linestring.*/<br>
<br>
Bonjour,<br>
<br>
</div>
St_OffsetCurve ne fonctionne qu'avec des géométries
simples.<br>
Pour PostGIS (et le standard),<b> les géométries simples
sont des géométries qui ne sont pas composées</b>.<br>
</div>
En clair, vous avez probablement des lignes de type
multilinestring (composition de plusieurs polylignes).<br>
</div>
La solution est immédiate si vous souhaitez simplement faire
de la visualisation (non testée):<br>
<br>
-------------------------------------<br>
SELECT objectid, nom, code<br>
, ST_OffsetCurve(dmp.geom, 25, 'quad_segs=4 join=round')
as offseted_linestring<br>
FROM web.trs_itineraire , st_Dump(shape) as dmp<br>
WHERE code = '06-20B'<br>
-------------------------------------<br>
<br>
</div>
<div>Attention,<br>
</div>
<div>cette requête duplique les lignes (si votre multi-polyligne
comporte par exemple 3 polylignes, dans le résultat final vous
allez avoir 3 rows, identiques si ce n'est la géométrie qui
change).<br>
</div>
<div>On peut facilement éviter ce comportement si vous le
souhaitez en regroupant à nouveau les polylignes qui ont été
décalées :<br>
<br>
---------------------------------------<br>
SELECT objectid, nom, code, ST_Collect(offseted_linestring) as
offseted_multilinestring<br>
FROM <br>
<div style="margin-left:40px">(SELECT objectid, nom, code ,
dmp.path<br>
, ST_OffsetCurve(dmp.geom, 25, 'quad_segs=4 join=round')
as offseted_linestring<br>
FROM web.trs_itineraire , st_Dump(shape) as dmp<br>
WHERE code = '06-20B'<br>
</div>
</div>
<div style="margin-left:40px">) as sub<br>
</div>
<div>GROUP BY objectid, nom, code <br>
ORDER BY dmp.path <br>
</div>
<div>-----------------------------------------<br>
</div>
<div><br>
</div>
<div>Enfin, je me permets un petit rappel puisque vous êtes
probablement dans un contexte web ; <br>
</div>
<div>vous insérer probablement le code " '06-20B'" , il est
imperatif de le faire à l'aide de fonctions sécurisée pour
éviter les injections SQL<br>
</div>
<div>(et surtout pas par concaténation de texte)<br>
</div>
<div>Code doit de plus avoir un index /* CREATE INDEX ON
web.trs_itineraire (code) */ pour que cette requête soit
efficace<br>
</div>
<div><br>
</div>
Salutations,<br>
Rémi-C<br>
<div><br>
</div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">Le 28 janvier 2015 14:02, Guillaume
ARNAUD <span dir="ltr"><<a moz-do-not-send="true"
href="mailto:guillaume.arnaud@cg82.fr" target="_blank">guillaume.arnaud@cg82.fr</a>></span>
a écrit :<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"><span class=""> (re)
Bonjour,<br>
<br>
Donc, en français... Nous avons une base PosTGIS qui est
attaqué par ArcGIS Server and Desktop 10.2.<br>
<br>
Nous souhaitons gérer, à travers une interface web, les
décalages de plusieurs itinéraires de transport scolaire
sélectionné et conserver ce décalage en vue d'une
réutilisation de cette sélection ultérieurement. Ceci
est uniquement dans un but de représentation des
itinéraires quand ils se trouvent superposés dans la
sélection.<br>
<br>
Pour cela, je pensais utiliser la fonction
ST_OffsetCurve(shape, decalage, 'quad_segs=4
join=round'). Où le decalage prend la valeur -2, -1, 0,
1 ou 2 que multiplie un facteur d'échelle.<br>
<br>
Toute notre base de données d'itinéraire est de type
linestring (quand on fait st_geometrytype(shape)) par
contre, 250 des 300 itinéraire ne sont pas simple
(st_issimple(shape) = f).<br>
<br>
Après quelques recherche, j'ai vu que le problème devais
venir de là. J'ai essayé, sans trop comprendre
d'utiliser "st_simplifypreservetopology" mais le
problème reste le même (dans la majorité des cas) et
quand ça marche sur un itinéraire ça ne change pas pour
autant le st _issimple :<br>
<br>
SELECT objectid, nom, code, ST_OffsetCurve(shape, 25,
'quad_segs=4 join=round') from web.trs_itineraire where
code = '06-20B' ====> Ne fonctionne pas.<br>
<br>
SELECT ST_issimple(shape) from web.trs_itineraire where
code = '06-20B' ====> False<br>
<br>
SELECT objectid, nom, code,
ST_OffsetCurve(st_simplifypreservetopology(shape,0.6),
25, 'quad_segs=4 join=round') from web.trs_itineraire
where code = '06-20B'<br>
<br>
SELECT
ST_issimple(st_simplifypreservetopology(shape,0.6)) from
web.trs_itineraire where code = '06-20B' ====>
False<br>
<br>
Nos itinéraires peuvent faire des aller retour sur des
même axes de voirie et donc partage des noeuds en
communs.<br>
<br>
Le but est simplement de le voir. J'ai aussi envisagé
comme solution un demi buffer mais l'exemple trouvé sur
internet ne me parle pas.<br>
<br>
Un autre solution serait d'eclater l'itineraire en
plusieurs partie "simple" et de décaler toutes ces
partie mais je n'ai pas trouver comment faire pour
éclater cet itineraire.<br>
<br>
Merci de vos réponses et de votre intérêt pour ma
question.<br>
<br>
Guillaume ARNAUD<br>
<br>
<div>Le 28/01/2015 12:32, Rémi Cura a écrit :<br>
</div>
</span>
<blockquote type="cite">
<div dir="ltr">
<div>
<div>
<div>Same,<br>
<br>
</div>
<div>
<div class="h5"> On peut répondre à la question
en français,<br>
</div>
</div>
</div>
<div>
<div class="h5"> il y en a quelques un sur la
mailing list...<br>
<br>
</div>
</div>
</div>
Rémi-C<br>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">
<div>
<div class="h5">2015-01-28 11:44 GMT+01:00 Nicolas
Ribot <span dir="ltr"><<a
moz-do-not-send="true"
href="mailto:nicolas.ribot@gmail.com"
target="_blank">nicolas.ribot@gmail.com</a>></span>:<br>
</div>
</div>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div>
<div class="h5">
<div dir="ltr">Hi Guillaume,
<div><br>
</div>
<div>Not sure I understand what you want to
achieve.</div>
<div>Can you describe it, maybe with an
image. (or in french)</div>
<div><br>
</div>
<div>Non-simple lines can be cut at their
intersection to make them simple.</div>
<div><br>
</div>
<div>Nicolas</div>
</div>
</div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">
<div>
<div class="h5">
<div>
<div>On 28 January 2015 at 09:16,
Guillaume ARNAUD <span dir="ltr"><<a
moz-do-not-send="true"
href="mailto:guillaume.arnaud@cg82.fr"
target="_blank">guillaume.arnaud@cg82.fr</a>></span>
wrote:<br>
</div>
</div>
</div>
</div>
<blockquote class="gmail_quote"
style="margin:0 0 0 .8ex;border-left:1px
#ccc solid;padding-left:1ex">
<div>
<div class="h5">
<div>
<div>
<div bgcolor="#FFFFFF"
text="#000000">
<div>
<p> Hello, </p>
<p> We use Postgre / Postgis
database with ArcGIS Server
and Desktop 10.2. All our data
are inserted with keyword
Postgis into our database. </p>
<p> The table that has the
trouble is a route table with
292 linestring. I need these
routes is not bunk. I try to
use ST_OffsetCurve function to
do this. I found on the help
and on a ticket that we must
have geometry which is simple.
More than 250 isn't. Is there
any solution to fix the
problem or to bypass the
problem . </p>
<p> Thanks for your work. </p>
<p> Greating. </p>
<p> ARNAUD Guillaume </p>
<p> Sorry for my poor english,
I'm french. </p>
<p> "PostgreSQL 9.2.2, compiled
by Visual C++ build 1600,
64-bit POSTGIS="2.0.4"
GEOS="3.4.2-CAPI-1.8.2 <a
moz-do-not-send="true"
title="No changeset 0 in the
repository">r0</a>"
PROJ="Rel. 4.8.0, 6 March
2012" GDAL="GDAL 1.10.0,
released 2013/04/24"
LIBXML="2.7.8"
LIBJSON="UNKNOWN" (core procs
from "2.0.4" need upgrade)
RASTER (raster procs from
"2.0.4" need upgrade)" </p>
<p> OS : Windows Server Standard
SP 2 </p>
<span><font color="#888888"> </font></span></div>
<span><font color="#888888">
<div>-- <br>
Guillaume ARNAUD<br>
Cellule SIGD<br>
Direction de l'Informatique<br>
Conseil Général de
Tarn-et-Garonne<br>
<br>
</div>
</font></span></div>
<br>
</div>
</div>
</div>
</div>
<span class="">
_______________________________________________<br>
postgis-users mailing list<br>
<a moz-do-not-send="true"
href="mailto:postgis-users@lists.osgeo.org"
target="_blank">postgis-users@lists.osgeo.org</a><br>
<a moz-do-not-send="true"
href="http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users"
target="_blank">http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users</a><br>
</span></blockquote>
</div>
<br>
</div>
<span class=""> <br>
_______________________________________________<br>
postgis-users mailing list<br>
<a moz-do-not-send="true"
href="mailto:postgis-users@lists.osgeo.org"
target="_blank">postgis-users@lists.osgeo.org</a><br>
<a moz-do-not-send="true"
href="http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users"
target="_blank">http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users</a><br>
</span></blockquote>
</div>
<br>
</div>
</blockquote>
<span class=""> <br>
<div>-- <br>
Guillaume ARNAUD<br>
Cellule SIGD<br>
Direction de l'Informatique<br>
Conseil Général de Tarn-et-Garonne<br>
<br>
</div>
</span></div>
<br>
_______________________________________________<br>
postgis-users mailing list<br>
<a moz-do-not-send="true"
href="mailto:postgis-users@lists.osgeo.org">postgis-users@lists.osgeo.org</a><br>
<a moz-do-not-send="true"
href="http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users"
target="_blank">http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users</a><br>
</blockquote>
</div>
<br>
</div>
</blockquote>
<br>
<div class="moz-signature">-- <br>
Guillaume ARNAUD<br>
Cellule SIGD<br>
Direction de l'Informatique<br>
Conseil Général de Tarn-et-Garonne<br>
05-63-91-82-37<br>
En interne, utilisez le Click To Call : <a
href="https://10.200.3.1:8443/webdialer/Webdialer?destination=8237">8237</a>
<br>
<br>
<a href="http://www.carto.cg82.fr/"><img alt="test"
src="cid:part13.01080905.07050906@cg82.fr" <="" a=""></a></div>
</body>
</html>