<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 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 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 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 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 href="mailto:postgis-users@lists.osgeo.org" target="_blank">postgis-users@lists.osgeo.org</a><br>
<a 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 href="mailto:postgis-users@lists.osgeo.org" target="_blank">postgis-users@lists.osgeo.org</a><br>
<a 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 href="mailto:postgis-users@lists.osgeo.org">postgis-users@lists.osgeo.org</a><br>
<a 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>