Assign special dbf to shapefile

Stephen Woodbridge woodbri at SWOODBRIDGE.COM
Fri Jan 7 14:44:05 EST 2005


The issue is that you can not do joins to classify data when drawing
maps if you use shapefiles. JOIN works fine with queries.

I have all the tiger data in shapefile (16 GB of data) and all of the
Census Summary File 1 and 3 data in MySQL (101 GB, plus a lot more for
indexes). I would like to draw thematic maps of the US based on these
datasets. Moving all this data to PostGIS, is possible but a huge task,
not to mention I would have to learn a new DB and how to administer it.
I will probably end up doing this at some point when the need is higher.

Meanwhile, this is basically what others are trying to do also. It is
just a HUGE step to move from shapefiles and MySQL to managing
everything in PostGIS.

Still hoping Steve Lime will take pity on me,
but not holding my breath.
   -Steve

Ken Lord wrote:
> This definately calls for PostGIS, and I'm sure it would process the
> request much faster.
>
> But,
>
> Why not use the join object in mapserver?
>
> http://mapserver.gis.umn.edu/doc44/mapfile-reference.html#join
>
> Or is this join system, that was broken i think after mapserver 3.4,
> still not functional? ... and if it is still not functional why have
> the instructions remained in the current documentation for the last 2
> years+ ... since at least mapserver 3.6?
>
> There is another option:
>
> Don't join the data on-the-fly. Instead when the user queries the
> airport, have a link parsed in the query results that when followed
> displays the attribute data you want based on the query results
> returned. ... A little ASP works wonders here to take a mapserver
> query result and query another database with it.
>
> Cheers,
> Ken
>
> On Fri, 7 Jan 2005 10:22:02 -0500, Stephen Woodbridge
> <woodbri at swoodbridge.com> wrote:
>
>>The only way that I know of to do runtime joins in mapserver is to use
>>PostGIS. You might be able to do something with gdal, but I think it is
>>very slow.  I have requested support for runtime shapefile joins to
>>either DBF or MySQL multiple times and nothing has happened in that
>>direction. Basically, it would be very slow because for each object in
>>the shapefile, you would have to scan the whole DBF file, because there
>>are no indexes support for DBF files, or the developers would have to
>>build DBF indexing support into mapserver. For Mysql, you could index
>>the columns, but you would still need to make a separate query for every
>>object in the shapefile.
>>
>>In PostGIS, since you have all the data in the database to start with
>>you can make one query for the layer and do the join in that query, then
>>you only have to fetch back the objects to render.
>>
>>-Steve W.
>>
>>Holger Floerke wrote:
>>
>>>Hi Jacob,
>>>
>>>
>>>
>>>>Why would you not want to join them?
>>>
>>>If the information I would like to present is evaluated at runtime, I have
>>>to produce a full set of ".shp", ".dbf", "sbx", "sbn", and ".shx" files. The
>>>shapes always stays the same, but the data is extracted from a database on a
>>>user's query. I would like to save space by not copying the shape
>>>information every time.
>>>
>>>
>>>
>>>>unless if you created a join on a dbf, and accessed it separately.
>>>
>>>Is it possible to join external data sources (one or more dbf-files or
>>>oci-sources) to shape files at runtime with the mapserver-api?
>>>
>>>HolgeR
>>>
>>>
>>>Jacob Delfos schrieb:
>>>
>>>
>>>
>>>>Holger,
>>>>
>>>>Correct me if I'm wrong, but that would be redefining the definition of
>>>>a shapefile. As far as I know, a "shapefile" is not the .shp file, but
>>>>the collection of ".shp", ".dbf", "sbx", "sbn", and ".shx" files. I
>>>>think you'd have to seriously hack the source of mapserver to do that,
>>>>unless if you created a join on a dbf, and accessed it separately.
>>>>
>>>>Why would you not want to join them? If you have access to MS Excel, it
>>>>would be as simple as copying a column across. No doubt other software
>>>>can do the same thing. You would have access to both attributes in one
>>>>shapefile. What is the actual problem that causes you not to want to
>>>>have two shapefiles, and not to want to join the attributes?
>>>>
>>>>regards,
>>>>
>>>>Jacob
>>>>
>>>>
>>>>-----Original Message-----
>>>>From: UMN MapServer Users List
>>>>To: MAPSERVER-USERS at LISTS.UMN.EDU
>>>>Sent: 1/7/2005 9:03 PM
>>>>Subject: [UMN_MAPSERVER-USERS] Assign special dbf to shapefile
>>>>
>>>>Hi all,
>>>>
>>>>am I able to assign a special dbf-file to a shape file? For example
>>>>rendering the 'airports.shp', but using data from
>>>>'airports_passengers.dbf'
>>>>and not from 'airports.dbf' (ensuring the correct order for the
>>>>shape-information-mapping). Or another example, render some area shapes
>>>>on
>>>>the one hand with popuplation data and on the other hand with
>>>>unemployment
>>>>data without integrating both data sets into the dbf of the shape file
>>>>and
>>>>without producing two different shape-files. I use php-mapscript and
>>>>mapserver 4.4.
>>>>
>>>>HolgeR
>>>>
>>>
>>>
>



More information about the mapserver-users mailing list