Tom,

I did some testing of your problem by setting up a layer to my [similar] datasources using Jeff's suggestion of using the JOIN object:

  LAYER
    NAME 'test'
    TYPE POINT
    STATUS DEFAULT

    CONNECTIONTYPE OGR
CONNECTION "PG:dbname=IMS host=localhost port=5432 user=postgres password=mypassword" DATA "SELECT * FROM (SELECT image_id, sum(length) FROM feature_polygon GROUP BY image_id) AS new_table"

# ---- this doesn't work (syntax error at 'images.shp'):
# DATA "SELECT * FROM (SELECT image_id, sum(length) FROM feature_polygon GROUP BY image_id) AS new_table LEFT JOIN 'images.shp'.images ON feature_polygon.image_id=images.ID"

    JOIN
      NAME "test"
#      CONNECTIONTYPE DBF  # no need?
      TABLE "data/images.dbf"
      FROM "image_id" # the attribute name from the LAYER's DATA object
      TO "1"
      TYPE ONE-TO-ONE
    END # join

  END # LAYER

While shp2img does not report any errors, I doubt if this config will produce the desired result. The "interesting" thing in this scenario is that the PostGIS table does not contain the geometry, the shapefile does, but I expect the JOIN processing only looks at the DBF portion. My log file shows many of the following:

msOGRFileNextShape: Rejecting feature (shapeid = 0, tileid=0) of incompatible type for this layer (feature wkbType 0, layer type 0)

so I think this will be a problem.


One work-around  would be to create a view in your database:

CREATE OR REPLACE VIEW my_view AS
SELECT country, sum(obligations) FROM foreign_assistance GROUP BY country);

Then use your shapefile as the datasource and join to the view (either in the DATA object or in a JOIN object):

# Joining a shapefile with Postgres view:

CONNECTIONTYPE OGR
CONNECTION     'data/ne_10m_admin_0_map_units.shp'
DATA "SELECT * FROM ne_10m_admin_0_map_units LEFT JOIN 
'ODBC:postgres@Postgres,my_vew'.my_view ON 
ne_10m_admin_0_map_units.name=my_view.country"



Best Regards,
Brent Fraser

On 6/19/2014 7:21 AM, Tom wrote:

Hi Jeff,

Thanks for the reply. Yes, I did see that example, and tried a number of different things to get it working for me, but to no avail. My log gets a bunch of statements that look like this:

[Thu Jun 19 09:00:47 2014].144000 msPOSTGRESQLJoinClose() already close or never opened.

Even if I did get that working, where would I put my GROUP BY sql query? In the TABLE attribute?

Thanks!

Tom


Date: Wed, 18 Jun 2014 22:01:47 -0300
From: Jeff McKenna <jmcke...@gatewaygeomatics.com>
To: mapserver-users@lists.osgeo.org
Subject: Re: [mapserver-users] Grouping Postgres and join with
Shapefile
Message-ID: <53a2367b.2060...@gatewaygeomatics.com>
Content-Type: text/plain; charset=ISO-8859-1

Are you aware of the JOIN docs, with an example of how to join shp to
Postgres?
http://www.mapserver.org/mapfile/join.html#example-2-join-from-shape-dataset-to-postgresql-table
I created that example years ago but it is still valid.

-jeff



_______________________________________________
mapserver-users mailing list
mapserver-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapserver-users

_______________________________________________
mapserver-users mailing list
mapserver-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapserver-users

Reply via email to