[Mapnik-de] FEHLER: Wert »4000000000« ist außerhalb des gültigen Bereichs für Typ integer

Michael Meier michael.meier at fau.de
Mi Apr 29 14:29:23 CEST 2015


On 04/29/2015 12:16 PM, Nachtigall, Jens (init) wrote:
> beim Rendern der Welt (mapnik, tirex, german style) kriege ich diesen Fehler:
> FEHLER:  Wert »4000000000« ist außerhalb des gültigen Bereichs für Typ integer
> ANWEISUNG:  SELECT ST_AsBinary("way") AS geom,"name","place" FROM (select way,place,get_localized_placename(name,"name:de",int_name,"name:en",false) as name,ref
>                 from view_osmde_point
>                 where place in ('country','state','continent')
>                 order by population desc
>                ) as placenames WHERE "way" && ST_SetSRID('BOX3D(9392582.035682455 4383204.949985144,15654303.3928041 10644926.30710679)'::box3d, 900913)
> Ich vermute, das liegt daran, dass population mittlerweile über 4 Mrd liegt?! Gibt es einen Workaround?

Ja. Der Bug ist in der view view_osmde_point, die castet naemlich auf
"integer" - was wie du schon ganz richtig bemerkt hast zu klein ist.
Casten auf "bigint" schafft Abhilfe.
also in views/view-point.sql sowas wie
> -CASE WHEN tags->'population' ~ '^[0-9]+$' THEN (tags->'population')::integer ELSE 0 END as "population",
> +CASE WHEN tags->'population' ~ '^[0-9]+$' THEN (tags->'population')::bigint ELSE 0 END as "population",
und dann damit die view neu anlegen.
-- 
Michael Meier, Zentrale Systeme
Friedrich-Alexander-Universitaet Erlangen-Nuernberg
Regionales Rechenzentrum Erlangen
Martensstrasse 1, 91058 Erlangen, Germany
Tel.: +49 9131 85-28973, Fax: +49 9131 302941
michael.meier at fau.de
www.rrze.fau.de