[postgis-users] PostGIS 1.3.3 on Windows XP Unstable

Dane Springmeyer blake at hailmail.net
Mon Aug 18 13:13:10 PDT 2008


Regina,

I think the 'Dissolve' tool in the ArcGIS ArcToolbox  
ArcFolderstructure mights be a more Arcceptible equivalent to ST_UNION  
with a GROUP BY on some field to aggregate upon.

Cheers,

Dane


On Aug 18, 2008, at 5:15 AM, Obe, Regina wrote:

> Mike,
>
> I could very well be an idiot or at least as far as using ArcMap is
> concerned.  I tested union out in ArcMap - not knowing anything of
> course.  I figured I have it installed might as well see the slickness
> of ArcGIS with mine own eys. I'm using ArcGIS 9.2 - I've been too lazy
> to install ArcGIS 9.3.
>
> First it took me a while to figure out where the Union tool is.  It
> wasn't intuitively obvious like it is in OpenJump.
>
> Then finally after fumbling in the help - I saw a button in the help
> that says "Open Tool".  attached is what my options look like and  
> what I
> had set.
>
> Then I ran it - took about 2.5 secs on my pc and to my shock - it  
> did a
> stupid collect which PostGIS can do in 1.5 seconds or less.
>
> How the hell do you get it to do a real union?
>
> By the way Martin - I've got my timings down to 8.5 seconds with the
> st99_00 dataset using the  envelop trick - but I'm sure I still have a
> lot of inefficiencies I'm missing.
>
> Thanks,
> Regina
>
>
>
> -----Original Message-----
> From: postgis-users-bounces at postgis.refractions.net
> [mailto:postgis-users-bounces at postgis.refractions.net] On Behalf Of
> Bresnahan, Mike
> Sent: Thursday, August 14, 2008 7:45 PM
> To: PostGIS Users Discussion
> Subject: RE: [postgis-users] PostGIS 1.3.3 on Windows XP Unstable
>
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA256
>
>> FWIW:  The unioning operations currently in PostGIS are very
> inefficient.
>
> Do I guess right that PostGIS iterates over each geometry and unions  
> it
> with the result of all previous geometries, something like this:
>
>            java.awt.geom.Area area = null;
>            for (Geometry geom : geomList) {
>                if (area == null) {
>                    area = ConvertToArea(geom);
>                }
>                else {
>                    path = area.add(ConvertToArea(geom)); // union
>                }
>            }
>
> AFAIK, that is what Oracle does and it is quite slow.
>
>> We are working on improving the union operation in PostGIS and
> hopefully
>> will have at least a first draft to show in the next release.  Most
>> notably
>> porting the JTS logic for doing Cascaded Unions to PostGIS.
>
> By Cascaded Unions do you mean a routine that works something like  
> this:
>
>            java.awt.geom.Area subArea = null;
>            int rowCount = 0;
>            while (result.next()) {
>                JGeometry geom = JGeometry.load(result.getBytes(1));
>                java.awt.Shape shape =
> Java2DClipper.geometryToShape(geom);
>                if (shape != null) {
>                    if (subArea == null) {
>                        subArea = new java.awt.geom.Area(shape);
>                    }
>                    else {
>                        subArea.add(new java.awt.geom.Area(shape));
>                    }
>                    ++rowCount;
>                    if (rowCount % 10 == 0) {
>                         if (area == null) {
>                            area = subArea;
>                        }
>                        else {
>                            area.add(subArea);
>                        }
>                        subArea = null;
>                    }
>                }
>                System.out.println(rowCount);
>            }
>
> I have found that this is indeed faster that the first approach, but
> what I have found that is even faster is to create one large geometry
> collection and union it with itself like this:
>
>            java.awt.geom.GeneralPath path = null;
>            for (Geometry geom : geomList) {
>                if (path == null) {
>                    path = ConvertToPath(geom);
>                }
>                else {
>                    path = AppendToPath(path, geom);
>                }
>            }
>            java.awt.geom.Area area = new java.awt.geom.Area(path);
>            area.add(area); // self-union
>
> I think the gain here is that you only build the temp data structures
> for each polygon once. I'm guessing that this is what ArcMap does.
>
> -----BEGIN PGP SIGNATURE-----
> Version: PGP Universal 2.8.3
> Charset: us-ascii
>
> wsBVAwUBSKTDPR6WPRoYuvd0AQjlRwf/Rci7f0R8jm/deW5Q7kA1tBwXRFSdd3S9
> dQwp/Sl/5wTcQc/NbV8kRM5MHeDRPzL2XBUY7zp/ypdLYv5RDi0+niJSmLWiYg5T
> vu4ot5Z4de1PjWncSmHNQqqVcNrxy4oxwLtrULgEZ3yMPcW3ffxwHFZzxNBULNCi
> VjWISI670HOb/7vmzjgsWrBgPgXl5gMRsDp6eiR+L+SDBBqZJTwHaR6WV86hGsYw
> t92QkvKUYNq0DOSmcjnNgIE2xxDuCAABed5ZwLiCF34hP3bN5nnfOs29Fd+yTP/V
> pEKxZYrPn/v6RNUNPuw9MhjGEvGA4YkcL6y/Bbf1nnvaK0EseOzwow==
> =Y1Pu
> -----END PGP SIGNATURE-----
> _______________________________________________
> 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.
> <arcgisunion.png>_______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users




More information about the postgis-users mailing list