[mapserver-dev] Possible to use PostGIS as a TILEINDEX to shapefiles?

Brent Fraser bfraser at geoanalytic.com
Thu Apr 28 18:09:33 EDT 2011


I was able to use PostGIS thru OGR, but the syntax is very picky (and 
limiting):

     LAYER
         NAME 'Landfast'
         TYPE LINE
         STATUS DEFAULT

         CONNECTIONTYPE OGR
         TILEINDEX "PG:dbname='PN2010_0911' host='thinkcentre1' 
port='5432' user='PN2010_0911' password='PN2010_0911',images"
         TILEITEM "location_landfast"

#        FILTER "imageid=1"   # results in blank image


The key points are
     1. No DATA object allowed.
     2. No spaces before table name (at the end of the connection string 
of the TILEINDEX)
     3. No FILTER object allowed (unless my syntax is wrong for v6)

Now I have to figure out how to limit the records returned...

Thanks!

Best Regards,
Brent Fraser


On 4/28/2011 2:20 PM, Daniel Morissette wrote:
> I thought we could have used a separate layer of type TILEINDEX to 
> achive this but I guess I was wrong. I found the following exchange 
> between you and Frank where the conclusion was that OGR does not 
> currently support tileindex coming from a separate layer:
>
> http://osgeo-org.1803224.n2.nabble.com/Using-OGR-with-a-TILEINDEX-layer-td5800729.html 
>
>
> Sorry for the misleading infos.
>
> Daniel
>
>
> On 11-04-28 01:44 PM, Brent Fraser wrote:
>> Daniel,
>>
>> I hadn't considered that; thanks for the pointer. But still no 
>> success...
>>
>> I set up my LAYER definition as:
>>
>> LAYER
>> NAME 'Landfast'
>> TYPE LINE
>> STATUS DEFAULT
>>
>> CONNECTIONTYPE OGR
>> TILEINDEX "PG:dbname='PN2010_0911' host='thinkcentre1' port='5432'
>> user='PN2010_0911' password='PN2010_0911'"
>> DATA "select imageid, location_landfast, wkb_geometry from images"
>> TILEITEM "location_landfast"
>>
>> Running shp2img v6.0 beta4 results in:
>>
>> msDrawMap(): Image handling error. Failed to draw layer named
>> 'Landfast'. <br>
>> msOGRFileOpen(): OGR error. ExecuteSQL(select imageid,
>> location_landfast, wkb_geometry from images) failed.
>> SELECT from table images failed, no such table/featureclass. <br>
>>
>> ======================================
>>
>> ogrinfo has no problem getting at the index:
>> G:\>ogrinfo -sql "select imageid, location_landfast, wkb_geometry from
>> images" PG:"host='thinkcentre1' dbname='PN2010_0911' user='PN2010_0911'
>> password='PN2010_0911'"
>> INFO: Open of `PG:host='thinkcentre1' dbname='PN2010_0911'
>> user='PN2010_0911' password='PN2010_0911''
>> using driver `PostgreSQL' successful.
>>
>> Layer name: sql_statement
>> Geometry: Unknown (any)
>> Feature Count: 3
>> Extent: (-24.392027, 74.808823) - (-9.363171, 78.164185)
>> Layer SRS WKT:
>> (unknown)
>> Geometry Column = wkb_geometry
>> imageid: Integer (0.0)
>> location_landfast: String (250.0)
>> OGRFeature(sql_statement):0
>> imageid (Integer) = 3
>> location_landfast (String) =
>> G:\GeoData\PN2010-0911\ice_edge\p230r005_20010703.shp
>> POLYGON ((-20.789359999999999 77.004463200000004,-15.1615524
>> 76.001411399999995,-18.995115299999998 74.808822599999999,-24.3920269
>> 75.729690599999998,-20.789359999999999 77.004463200000004))
>>
>> OGRFeature(sql_statement):1
>> imageid (Integer) = 2
>> location_landfast (String) =
>> G:\GeoData\PN2010-0911\ice_edge\p230r005_20010703.shp
>> POLYGON ((-19.2442856 77.004463200000004,-13.616478
>> 76.001411399999995,-17.4500408 74.808822599999999,-22.846952399999999
>> 75.729690599999998,-19.2442856 77.004463200000004))
>>
>> OGRFeature(sql_statement):2
>> imageid (Integer) = 1
>> location_landfast (String) =
>> G:\GeoData\PN2010-0911\ice_edge\p230r005_20010703.shp
>> POLYGON ((-15.1506767 78.164184599999999,-9.3631706
>> 77.072578399999998,-13.8204384 75.943901100000005,-19.4379616
>> 76.942634600000005,-15.1506767 78.164184599999999))
>>
>> Before I get too deep into a debug session, do you have an working
>> example of a LAYER definition?
>>
>> Best Regards,
>> Brent Fraser
>>
>>
>> On 4/28/2011 9:51 AM, Daniel Morissette wrote:
>>> I meant use CONNECTIONTYPE OGR for both the tileindex (OGR pointing to
>>> your postgis tileindex table) and the shapefiles (connectiontype OGR
>>> to read the shapefiles). This would not go through mapshape.c but
>>> instead mapogr.cpp:
>>>
>>> http://mapserver.org/input/vector/ogr.html#tileindex-with-ogr
>>>
>>>
>>> On 11-04-28 10:34 AM, Brent Fraser wrote:
>>>> Daniel,
>>>>
>>>> Using OGR results in tlp->connectiontype==MS_OGR and fails as well.
>>>>
>>>> The main problem (I think) is that the code after line 1901 in
>>>> mapshape.c does a call to msDBFGetItemIndex in preparation for getting
>>>> the value stored in the "location" column. It needs to be replaced 
>>>> with
>>>> the code from mapraster.c, line 468:
>>>>
>>>> /* get the tileitem index */
>>>> for(i=0; i<tlp->numitems; i++) {
>>>> if(strcasecmp(tlp->items[i], layer->tileitem) == 0) {
>>>> tileitemindex = i;
>>>> break;
>>>> }
>>>> }
>>>>
>>>> and there could be a few other changes as well. I'll have to do some
>>>> hacking...
>>>>
>>>> Best Regards,
>>>> Brent Fraser
>>>>
>>>>
>>>> On 4/27/2011 9:02 PM, Daniel Morissette wrote:
>>>>> Unfortunately too late for 6.0 as you had already figured out. 
>>>>> However
>>>>> you could use OGR connections for your PostGIS tileindex and to read
>>>>> your shapefiles with the current version.
>>>>>
>>>>> Daniel
>>>>>
>>>>>
>>>>> On 11-04-27 08:42 PM, Brent Fraser wrote:
>>>>>> I've used a PostGIS layer as a TILEINDEX to raster files, but it
>>>>>> doesn't
>>>>>> seem to work for pointing to shapefiles.
>>>>>>
>>>>>> And looking at mapshape.c at line 1901 it checks:
>>>>>>
>>>>>> tlp = (GET_LAYER(layer->map, tSHP->tilelayerindex));
>>>>>>
>>>>>> if(tlp->connectiontype != MS_SHAPEFILE) {
>>>>>> msSetError(MS_SDEERR, "Tileindex layer must be a shapefile.",
>>>>>> "msTiledSHPOpenFile()");
>>>>>> return(MS_FAILURE);
>>>>>> }
>>>>>>
>>>>>>
>>>>>> mapraster.c has some logic around line 410 that seems more generic.
>>>>>>
>>>>>> I wonder if it would be possible to fix this for 6.0, or is it too
>>>>>> late
>>>>>> now that rc1 is out?
>>>>>>
>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> mapserver-dev mailing list
>>>> mapserver-dev at lists.osgeo.org
>>>> http://lists.osgeo.org/mailman/listinfo/mapserver-dev
>>>
>>>
>>
>
>



More information about the mapserver-dev mailing list