Using JOIN for querying

Steve Lime Steve.Lime at DNR.STATE.MN.US
Wed Aug 30 17:49:29 EDT 2006


Cris: JOINs exist within LAYERs but don't contain CLASSes. A
one-to-many
join can have a TEMPLATE defined. E.g.

JOIN
  NAME 'test'
  TYPE ONE-TO-MANY
  CONNECTIONTYPE CSV
  TABLE 'test.csv'
  FROM 'id'
  TO '1'
  TEMPLATE 'test.html'
END

Steve

>>> cris ricana <crisricana at GMAIL.COM> 8/30/2006 4:50:05 AM >>>
Thanks for replying, Manfred.
Here are some replies to your question:

> I do not know how to use JOIN. But since nobody replied to your
> question, perhaps you can add information, if the test you made,
give
> you the correct result when you do !!not!! use the JOIN.
>
Yes, everything works when I don't use JOIN. That is, if I use only
the shapefile (I mean that the whole set, including the .shp, .dbf and
.shx files), and use in the query only those  data specific in the dbf
of the shapefile.


> If I understand right, then JOIN adds some data but no spatial
> information. So at the first sight it seems unlikely that the result
of
> msQueryByPoint is related to a JOIN.
>
> So does this message appear only when you add the JOIN to the
mapfile?

The data (in form of csv files) I'm adding do not have spatial
information, if you mean by spatial information as something like the
lat/lon of a region, for example (I'm dealing with areal data, by the
way). In fact it only contains additional socioeconomic statistics of
these region. The dbf file of the shapefiles contains the spatial
information of these regions, and I'm trying to add more info on these
places via JOIN and only during query requests, instead of creating a
very large dbf with all the info in them.

Actually the error is what I'm confused about. As far as I know, the
msQueryByPoint message means that I had forgotten to indicate a
template file in my CLASS statement right? But as far as I read the
manual, the JOIN statement's format does not need the CLASS part, one
just need to add TEMPLATE "<name of template file>" in the JOIN part.
In fact if I insert the following in the JOIN part as such:
 (...)
JOIN
    CONNECTIONTYPE CSV
    (...)
    CLASS
          TEMPLATE "reg_bndary 2000_dbf.html"
     END
END
(...)

It returns with the following error:
      loadJoin(): Unknown identifier. Parsing error near (CLASS):(line
164)

Oh and yes, the msQuerybyPoint message only appears when I add the
JOIN in my mapfile.


Maricris




On 8/30/06, Manfred Meier <m.meier at spiekermann.de> wrote:
> Hi,
>
> I do not know how to use JOIN. But since nobody replied to your
> question, perhaps you can add information, if the test you made,
give
> you the correct result when you do !!not!! use the JOIN.
>
> If I understand right, then JOIN adds some data but no spatial
> information. So at the first sight it seems unlikely that the result
of
> msQueryByPoint is related to a JOIN.
>
> So does this message appear only when you add the JOIN to the
mapfile?
>
> Manfred
>
>
>
> cris ricana schrieb:
> > Hello!
> >
> > I'd like some help regarding my use of JOIN in my mapserver setup.
I'm
> > using two sets of data, a base shapefile ("reg_bndary") containing
> > basically place information and system-generated csv files
containing
> > all the relevant information regarding these places in the
shapefiles.
> > Both have a common field called Place_ID to be used for the join.
I
> > was planning to use these csv in times when the users want to
query
> > for detailed information on these places. My map file looks like
this
> > (the JOIN part is near the end):
> >
> > NAME reg_bndary2000.map
> > SIZE 600 600
> > EXTENT 114.03 3.8315 131.33 21.1585
> > SHAPEPATH "data"
> > IMAGETYPE PNG
> > UNITS meters
> >
> > WEB
> >  TEMPLATE 'reg_bndary2000.html'
> > #  IMAGEPATH '/home/mis/DIRP/maps/'
> > #  IMAGEURL 'home/mis/DIRP/maps/'
> >  IMAGEPATH '/home/yronald/htdocs/maps/test_map/maps/'
> >  IMAGEURL '/test_map/maps/'
> > END  #WEB
> >
> > QUERYMAP
> >  SIZE 600 600
> >  STATUS ON
> >  STYLE SELECTED
> >  COLOR 255 0 0
> > END
> > (...)
> >  LAYER
> >  NAME CY_2000
> >  TYPE polygon
> >  STATUS ON
> >  DATA reg_bndary
> >  CLASSITEM COUNT
> >  LABELITEM REGION
> >   (...)
> >  HEADER "reg_bndary2000_header.html"
> >  FOOTER "reg_bndary2000_footer.html"
> >
> >  JOIN
> >        NAME "reg_join"
> >        CONNECTIONTYPE CSV
> >        TABLE "lgu_DB_DACCESS_PROV.csv"
> >        FROM "Place_ID"
> >        TO "1"
> >        TEMPLATE "reg_bndary 2000_dbf.html"
> >     END #join
> > END  # LAYER
> > END  # MAPFILE
> >
> > The template file used for , "reg_bndary 2000_dbf.html", contains
> > simply the following:
> > [reg_join_REGION]<br>
> > [reg_join_PLACE]
> >
> > When when I test this, I get the following error:
> >
> >       msQueryByPoint(): Search returned no results. No matching
> > record(s) found.
> >
> > Can somebody help me tell me what is wrong in my setup?
> >
> >
> > Thanks!
> > Maricris
> >
>
>



More information about the mapserver-users mailing list