[prev in list] [next in list] [prev in thread] [next in thread] 

List:       postgis-users
Subject:    [postgis-users] =?iso-8859-1?q?R=E9p=3A_Re=3A_R=E9p=3A_Re=3A_Grou?= =?iso-8859-1?q?ping_by_geom_with
From:       Hugues François <hugues.francois () irstea ! fr>
Date:       2014-04-24 15:44:07
Message-ID: 094f01cf5fdd$3f062139$5568ddc3 () cemagref ! fr
[Download RAW message or body]

Instead of a.the_geom != b.the_geom you should write not \
st_equals(a.the_geom,b.the_geom). 

Hug

James David Smith <james.david.smith@gmail.com> a écrit :

No problem. I'm not quite sure how to work that into the query though please?

On 24 April 2014 16:27, Hugues François <hugues.francois@irstea.fr> wrote:
> Excuse me for the mistake. Let's try st_equals.
> 
> Hug
> 
> James David Smith <james.david.smith@gmail.com> a écrit :
> 
> Thanks for the reply Hugues. Much appreciated. I've replaced the
> various bit of the query with my own table names etc, but get an
> error. Any thoughts/ideas guys?
> 
> ERROR:  operator is not unique: geometry <> geometry
> LINE 15:         WHERE a.ssid=b.ssid and a.the_geom != b.the_geom
> 
> WITH inter AS (
> SELECT DISTINCT a.ssid,
> ST_CollectionExtract(st_intersection(a.the_geom, b.the_geom),2)
> the_geom
> FROM stage a, stage b
> WHERE st_intersects(a.the_geom, b.the_geom)
> ),
> inter_line AS (
> SELECT ssid, ST_UNION (the_geom) the_geom
> FROM inter
> GROUP BY ssid),
> diff_line AS (
> SELECT a.ssid,
> st_union(st_collectionextract(st_difference(a.the_geom,
> b.the_geom),2)) the_geom
> FROM stage a, inter_line b
> WHERE a.ssid=b.ssid and a.the_geom != b.the_geom
> GROUP BY a.ssid
> ),
> all_lines AS  (
> SELECT * FROM inter_line
> 
> UNION ALL
> 
> SELECT * FROM diff_line
> )
> 
> SELECT the_geom, count(*) FROM all_lines
> GROUP BY the_geom
> 
> 
> 
> 
> On 24 April 2014 11:37, Hugues François <hugues.francois@irstea.fr> wrote:
> > Hello,
> > 
> > I think the use of st_intersection / st_difference may help you to achieve that \
> > you will have to take care of duplicates. I think the query could be something \
> > like the first draft below but could  be improved. The principle is to find \
> > intersections from geometry from a self join of your original table and use this \
> > output to get the difference with your original table. Maybe someone else will \
> > have a better idea ! 
> > HTH
> > 
> > Hug
> > 
> > WITH inter AS (
> > SELECT DISTINCT a.gid, ST_CollectionExtract(st_intersection(a.geom, b.geom),2) \
> > geom FROM yourtable a, yourtable b
> > WHERE st_intersects(a.geom, b.geom)
> > ),
> > 
> > inter_line AS (
> > SELECT gid, ST_UNION (geom) geom
> > FROM line_inter
> > GROUP BY gid),
> > 
> > diff_line AS (
> > SELECT a.gid, st_union(st_collectionextract(st_difference(a.geom, b.geom),2)) \
> > geom FROM yourtable a, inter_line b
> > WHERE a.gid=b.gid and a.geom != b.geom
> > GROUP BY a.gid
> > ),
> > 
> > all_lines AS  (
> > SELECT * FROM inter_line
> > 
> > UNION ALL
> > 
> > SELECT * FROM diff_line
> > )
> > 
> > SELECT geom, count(*) FROM all_lines
> > GROUP BY geom
> > 
> > 
> > 
> > 
> > -----Message d'origine-----
> > De : postgis-users-bounces@lists.osgeo.org \
> > [mailto:postgis-users-bounces@lists.osgeo.org] De la part de James David Smith \
> > Envoyé : jeudi 24 avril 2014 11:11 À : PostGIS Users Discussion
> > Objet : [postgis-users] Grouping by geom with count?
> > 
> > Hi all,
> > 
> > A bit of advice please. I have a table of about 250,000 linestring.
> > They represent peoples routes on roads around London. I would like to use them in \
> > QGIS now to show the most used roads by making them a darker colour. So to do \
> > this I feel I need to do some sort of grouping of the geometries with a count \
> > column too - so that I can use that count column to define the darkness of the \
> > line on my map. 
> > How could I go about doing this please?
> > 
> > The problem I can see in my head is that let's say I have one linestring which \
> > goes from A to B. Then another linestring that goes from A to B to C. When I \
> > group the geometries, these won't group as they aren't the same. However I would \
> > want the result to be that linestring A to B is given a value of 2 and the bit of \
> > the line from B to C would be given a value of 1. 
> > I think I'm perhaps overcomplicating this...
> > 
> > Thanks
> > 
> > James
> > _______________________________________________
> > 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
> _______________________________________________
> 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
_______________________________________________
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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic