Mel. Great, glad that helped you fix the problem! Thanks for reporting back, but in the future remember to cc the list.

Cheers,

Dane



--- \o/ ---
Sent from my phone

On Dec 28, 2009, at 11:21 AM, mel yuanhang <[email protected]> wrote:

Thank you very much Dane.

After following your instructions I fixed the problem.

In my case, it might be a QGIS problem. As I imported a shapefile into PostGIS, because of my typo the PostGIS table has a slightly different name. Somehow, the name shows in the geometry_columns table is the same as the old shapefile. Once I applied the populate_spatial_column to my table, the problem is solved.

Happy new year!


Thanks,

Mel




On Mon, Dec 28, 2009 at 10:38 AM, Dane Springmeyer <[email protected]> wrote:
Hello Mel,

In general the error you've pasted from the Postgres logs will be avoided in the upcoming 0.7.0 release. Iv'e recently added to and updated the postgis plugin with new features and error messages that should avoid this problem in the future(it is a common one so sorry you've run into it) it should also make my below explanation uneeded or at least shorter in the future. What is happening is that the geometry field for your table is unknown, llikely because the table lacks a record in the geometry_columns table (but it can also occur for other reasons).

Also, it appears that those logs do not exactly correspond to the query that is in the 'table' param in your XML. I notice the characteristic extra syntax of 'WHERE GeometryType("the_geom") IN ' as coming from QGIS/Quantumnik. Do you perhaps have more than one geometry field? You can try specifying geometry_field="the_geom" in your XML datasource parmeters, but overall I would make sure you have a proper record in the geometry_columns. PostGIS 1.4 has a nice function called 'populate_geometry_columns' (or something like that) which may help. Mapnik0.6.1 needs this metadata, but in mapnik0.7.0 if you supply the geometry_field and SRID then this
metadata will be optional.

Lastly, it appears that the layer srs parameter is wrong which may prevent your map from showing any features once you get the query working.

I would recommend installing nik2img and running it on your XML while fixing the layer srs to your correct projection for your data and changing the 'table' parameter to just your table name without a subselect. If you still get errors in your logs after confirming the geometry_columns are correct for your table the. Please send the error again.

Dane


--- \o/ ---
Sent from my phone


On Dec 28, 2009, at 7:33 AM, mel yuanhang <[email protected]> wrote:

Hi,
I could not render a PostGIS layer using the following setting on WindowsXP,
-Mapnik 0.6.1
-PostgreSQL 8.4/PostGIS 1.4

It works fine for shapefiles. But as I connect to a PostGIS Layer, I got the following errors in the Postgresql log file,

2009-12-24 14:05:03 ESTERROR: zero-length delimited identifier at or near """" at character 17 2009-12-24 14:05:03 ESTSTATEMENT: SELECT AsBinary("",'NDR') AS geom from (SELECT * FROM "mains_update_dlz" WHERE GeometryType ("the_geom") IN ('LINESTRING','MULTILINESTRING')) as "mains_update_dlz" WHERE "" && SetSRID('BOX3D(1835078.82466 710209.522025,1842753.74984 713266.403181)'::box3d,0)


The XML file is shown below,

<?xml version="1.0" ?><Map bgcolor="rgb(255,255,255)" srs="+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs">
   <Style name="mains_update_dlz_style">
       <Rule>
           <LineSymbolizer>
<CssParameter name="stroke">rgb(229,210,191)</ CssParameter>
               <CssParameter name="stroke-width">0.96</CssParameter>
<CssParameter name="stroke-linejoin">bevel</ CssParameter> <CssParameter name="stroke-linecap">square</ CssParameter>
           </LineSymbolizer>
       </Rule>
   </Style>
<Layer clear_label_cache="0" name="mains_update_dlz" srs="+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs" status="1">
       <StyleName>mains_update_dlz_style</StyleName>
       <Datasource>
           <Parameter name="dbname">postgis</Parameter>
<Parameter name= "extent">1835078.82466,710209.522025,1842753.74984,713266.403181</ Parameter>
           <Parameter name="host">localhost</Parameter>
           <Parameter name="password">postgres</Parameter>
           <Parameter name="port">5432</Parameter>
           <Parameter name="estimate_extent">false</Parameter>
<Parameter name="table">(SELECT * FROM mains_update_dlz) as mains_update_dlz</Parameter>
           <Parameter name="type">postgis</Parameter>
           <Parameter name="user">postgres</Parameter>
       </Datasource>
   </Layer>
</Map>


Thank you very much,

Mel

_______________________________________________
Mapnik-users mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/mapnik-users

_______________________________________________
Mapnik-users mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/mapnik-users

Reply via email to