<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>