Bob,
1) You mean empty as the geometry fields are empty or you
get no records back? If it looks empty, check to make sure it actually
is. For example in pgadmin large geometries look blank. If you get
no records, then most liked you have no records in processes or no records in
tank_lin tagged as 'Tank.dxf' (keep in mind that PostgreSQL is case
sensitive so the casing of Tank.dxf has to be right)
2) Your statement doesn't quite look right, but not quite
clear what you are trying to do.
a) Don't group by the_geom. That is
basically grouping by the bounding box of a geometry which is something I doubt
you want to do.
b) HAVING should be used for aggregate filter
clauses only. In theory you can use it as you are but usually gets
processed after the WHERE and grouping
so is better suited for clauses such as HAVING
area2d(SUM(the_geom)) > 1000 something involving aggregating data.
Since you are doing a simple attribute query change your HAVING to a WHERE and
move up in your statement.
c) You are missing JOINS to join your
tables together. This might actually be okay if you are trying to make a
permutation of every record in library.processes with every Tank.dxf and then
unioning together all with the same file_dxf. I just
point it out because in 95% of the cases when
people do it, its a mistake.
So given above try the following
SELECT geomunion(tank_lin.the_geom) As
newgeom
FROM public.tank_lin (think about whether you want a INNER
JOIN, LEFT JOIN, CROSS JOIN (which is same as ,) here and if you want and
INNER or LEFT what are the fields to join with)
library.processes (ON ... if you are using
an INNER or LEFT public.tank_lin.somefield1 =
library.processes.somefield2)
WHERE public.tank_lin.file_dxf =
'Tank.dxf'
GROUP BY public.tank_lin.file_dxf,
library.processes.wkt_coordinate;
Hope that helps,
Regina
I'm having a some trouble making this
work.
I run this command and get the return from the
table return that I expect.
Select tank_lin.the_geom as
newgeom
from public.tank_lin;
However, when I run the geomunion command
-
Select geomunion(tank_lin.the_geom) as
newgeom
From public.tank_lin,
library.processes
Group by public.tank_lin.the_geom,
public.tank_lin.file_dxf,
library.processes.wkt_coordinate
Having file_dxf =
'Tank.dxf' ;
I get an empty return.
I'm missing something.
Bob
----- Original Message -----
Sent: Thursday, May 01, 2008 8:25
AM
Subject: Re: [postgis-users] Line To
Path
Thanks all for your help
Bob Pawley
----- Original Message -----
Sent: Thursday, May 01, 2008 5:19
AM
Subject: RE: [postgis-users] Line To
Path
I wouldn't quite call it runnning the function in that
table. Basically the SQL statement will create a temporary or in
memory table so to speak. So short answer - yes it is correct - no
need to create a new table or geometry column. Sometimes you may want
to if you use it often or you are grouping many geometries since the planner
has to recalculate each time if it is a dynamic query as below or view (a
saved dynamic query as Kevin pointed out in last post) .
Well there should be an alias there otherwise it
usually will just alias it as something dumb like ST_Union - so let me
correct my mistake.
SELECT somefield,
ST_Union(the_geom) as newgeom
FROM sometable
GROUP BY
somefield;
If
you wanted to materialize it, I tend to do something
like
SELECT somefield, ST_Union(the_geom) as newgeom
INTO
somenewtable
FROM sometable
GROUP BY somefield;
A
lot of people do
CREATE TABLE somenewtable As
SELECT somefield, ST_Union(the_geom) as newgeom
FROM sometable
GROUP BY somefield;
But I tend to avoid that second syntax since its not as portable as
option 1 (from DBMS to DBMS at least the DBMS I tend to deal with) and the
speed is the same. Granted
I
guess the second version is a bit clearer.
Hope that helps,
Regina
In the same trailing of that question and the answer, that select
statement would run the function st_union in that table, without the need to
create a new table or geometry column?
Sorry to use this post for this, just tought its a quite novice
question, so more people could use the answer.
Thx
Att.
George
On Wed, Apr 30, 2008 at 7:20 PM, Paragon Corporation
<
lr <at> pcorp.us> wrote:
Bob,
If
I understand you correctly, I think you want to use one of the
following
SELECT somefield, ST_Union(the_geom)
FROM
sometable
GROUP BY somefield
So lets say you want to collapse 3
rows into 1 then you just need to group
by some common
field.
E.g. if somefield = 1 for your 3 records, then those would
get rolled into
the same record.
The above will give you a
LINESTRING or MULTILINESTRING. If you have all
LINESTRINGS, then
may be more efficient to do this. The below will first
collapse
all with common somefield into a MULTILINESTRING and then the
LineMerge
will do the best it can to stitch back into a single line string.
This
is not possible with completely disjoint linestrings.
SELECT
somefield, ST_LineMerge(ST_Collect(the_geom))
FROM sometable
GROUP
BY somefield
If you are using the older version of Postgis, you
can just take out the ST_
in the examples I have above.
Hope
that helps,
Regina
The substance of this message, including any attachments, may be
confidential, legally privileged and/or exempt from disclosure pursuant to
Massachusetts law. It is intended solely for the addressee. If you received
this in error, please contact the sender and delete the material from any
computer.
Help make the earth a greener place.
If at all possible resist printing this email and join us in saving paper.
_______________________________________________
postgis-users
mailing
list
postgis-users <at> postgis.refractions.net
http://postgis.refractions.net/mailman/listinfo/postgis-users
_______________________________________________
postgis-users
mailing
list
postgis-users <at> postgis.refractions.net
http://postgis.refractions.net/mailman/listinfo/postgis-users
The substance of this message, including any attachments, may be confidential, legally privileged and/or exempt from disclosure pursuant to Massachusetts law. It is intended solely for the addressee. If you received this in error, please contact the sender and delete the material from any computer.
Help make the earth a greener place. If at all possible resist printing this email and join us in saving paper.