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