/* For the list archive : problem is probably using ST_OffsetCurve with multilinestring instead of linestring.*/
Bonjour, St_OffsetCurve ne fonctionne qu'avec des géométries simples. Pour PostGIS (et le standard),* les géométries simples sont des géométries qui ne sont pas composées*. En clair, vous avez probablement des lignes de type multilinestring (composition de plusieurs polylignes). La solution est immédiate si vous souhaitez simplement faire de la visualisation (non testée): ------------------------------------- SELECT objectid, nom, code , ST_OffsetCurve(dmp.geom, 25, 'quad_segs=4 join=round') as offseted_linestring FROM web.trs_itineraire , st_Dump(shape) as dmp WHERE code = '06-20B' ------------------------------------- Attention, 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). On peut facilement éviter ce comportement si vous le souhaitez en regroupant à nouveau les polylignes qui ont été décalées : --------------------------------------- SELECT objectid, nom, code, ST_Collect(offseted_linestring) as offseted_multilinestring FROM (SELECT objectid, nom, code , dmp.path , ST_OffsetCurve(dmp.geom, 25, 'quad_segs=4 join=round') as offseted_linestring FROM web.trs_itineraire , st_Dump(shape) as dmp WHERE code = '06-20B' ) as sub GROUP BY objectid, nom, code ORDER BY dmp.path ----------------------------------------- Enfin, je me permets un petit rappel puisque vous êtes probablement dans un contexte web ; 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 (et surtout pas par concaténation de texte) Code doit de plus avoir un index /* CREATE INDEX ON web.trs_itineraire (code) */ pour que cette requête soit efficace Salutations, Rémi-C Le 28 janvier 2015 14:02, Guillaume ARNAUD <guillaume.arn...@cg82.fr> a écrit : > (re) Bonjour, > > Donc, en français... Nous avons une base PosTGIS qui est attaqué par > ArcGIS Server and Desktop 10.2. > > 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. > > 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. > > 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). > > 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 : > > SELECT objectid, nom, code, ST_OffsetCurve(shape, 25, 'quad_segs=4 > join=round') from web.trs_itineraire where code = '06-20B' ====> Ne > fonctionne pas. > > SELECT ST_issimple(shape) from web.trs_itineraire where code = > '06-20B' ====> False > > 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' > > SELECT ST_issimple(st_simplifypreservetopology(shape,0.6)) from > web.trs_itineraire where code = '06-20B' ====> False > > Nos itinéraires peuvent faire des aller retour sur des même axes de voirie > et donc partage des noeuds en communs. > > 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. > > 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. > > Merci de vos réponses et de votre intérêt pour ma question. > > Guillaume ARNAUD > > Le 28/01/2015 12:32, Rémi Cura a écrit : > > Same, > > On peut répondre à la question en français, > il y en a quelques un sur la mailing list... > > Rémi-C > > 2015-01-28 11:44 GMT+01:00 Nicolas Ribot <nicolas.ri...@gmail.com>: > >> Hi Guillaume, >> >> Not sure I understand what you want to achieve. >> Can you describe it, maybe with an image. (or in french) >> >> Non-simple lines can be cut at their intersection to make them simple. >> >> Nicolas >> >> On 28 January 2015 at 09:16, Guillaume ARNAUD <guillaume.arn...@cg82.fr> >> wrote: >> >>> Hello, >>> >>> We use Postgre / Postgis database with ArcGIS Server and Desktop 10.2. >>> All our data are inserted with keyword Postgis into our database. >>> >>> 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 . >>> >>> Thanks for your work. >>> >>> Greating. >>> >>> ARNAUD Guillaume >>> >>> Sorry for my poor english, I'm french. >>> >>> "PostgreSQL 9.2.2, compiled by Visual C++ build 1600, 64-bit >>> POSTGIS="2.0.4" GEOS="3.4.2-CAPI-1.8.2 r0" 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)" >>> >>> OS : Windows Server Standard SP 2 >>> -- >>> Guillaume ARNAUD >>> Cellule SIGD >>> Direction de l'Informatique >>> Conseil Général de Tarn-et-Garonne >>> >>> >>> _______________________________________________ >>> postgis-users mailing list >>> postgis-users@lists.osgeo.org >>> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users >>> >> >> >> _______________________________________________ >> postgis-users mailing list >> postgis-users@lists.osgeo.org >> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users >> > > > -- > Guillaume ARNAUD > Cellule SIGD > Direction de l'Informatique > Conseil Général de Tarn-et-Garonne > > > _______________________________________________ > postgis-users mailing list > postgis-users@lists.osgeo.org > http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users >
_______________________________________________ postgis-users mailing list postgis-users@lists.osgeo.org http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users