при рендеринге получаю пустую картинку PostGis+Mapnik+Python?

так) свой файл my_osm.xml я создал… провел рендеринг и получил даже изображение байкала(пытался отобразить иркутск но его не получилось), то есть можно сделать вывод рендерится нормально(по крайней мере уже не пустая пнг)…
щас будем думать почему не отображается сам иркутск…

может Байкал - это часть coastlines а не postGIS базы? Похоже, что либо проекции не совпадают, либо слои неактивны, либо к базе нет доступа.

Либо свой файлик my_osm.xml криво написан. Попробуйте для начала с официальным osm.xml по мануалу с вики.

вот у меня тоже есть подозрение что к базе оно таки и не подключилось… вопрос как это проверить? через psql когда конекчусь с теми же параметрами, что записаны в my_osm.xml все нормально…

не знаю может накосячил при создании my_osm.xml…

вот отрывок для слоя с world_boundaries

world

C:/mapnik-0.7.1/demo/python/osm_mapnik/world_boundaries/shoreline_300
shape

а это для слоя из postgis

landcover

gisutf8
false
-179,-89,179,89
localhost
‘’
5432

(select way,aeroway,amenity,landuse,leisure,man_made,military,“natural”,power,tourism,name,highway,
case when religion in (‘christian’,‘jewish’) then religion else ‘INT-generic’::text end as religion
from planet_osm_polygon
where landuse is not null
or leisure is not null
or aeroway in (‘apron’,‘aerodrome’)
or amenity in (‘parking’,‘university’,‘college’,‘school’,‘hospital’,‘kindergarten’,‘grave_yard’)
or military in (‘barracks’,‘danger_area’)
or “natural” in (‘field’,‘beach’,‘desert’,‘heath’,‘mud’,‘wood’,‘sand’,‘scrub’)
or power in (‘station’,‘sub_station’,‘generator’)
or tourism in (‘attraction’,‘camp_site’,‘caravan_site’,‘picnic_site’,‘zoo’)
or highway in (‘services’,‘rest_area’)
order by z_order,way_area desc
) as leisure

postgis
postgres

если указанный там селект выполнить напрямую в базе, то выборка НЕ пустая, следовательно надо думать либо нет коннекта к базе, либо я где-то косячнул с координатами и отображением слоев…

PS что значит false?
и -179,-89,179,89 ?

PPS свой my_osm.xml делал по вот этой инструкции http://www.bostongis.com/PrinterFriendly.aspx?content_name=generating_osm_tiles

в стандартных стилях
-20037508,-19929239,20037508,19929239

эти цифры я тоже пробовал(они устанавливаются по умолчанию при запуске generate_xml.py без параметра extent), результат тот же самый (worldboundaries видны, иркутск нет).

Наверное таки к базе доступа нет. Под виндой и не знаю, что порекомендовать. У себя настроил, чтоб пользователь gis с localhost ходил без пароля на свою базу.

Хотя только что проверил. У меня при любой проблеме с базой сразу скрипт ругается, будь то неверный запрос, имя пользователя или пароль.

Попробуй сделать опечатку в запросе. Если psql ругнётся, значит до него дело всё-же доходит!

изменил my_osm.xml - сделал опечатку в селекте, ругнулся… сказал что неправильный селект
File “C:/mapnik-0.7.1/demo/python/test2”, line 9, in
mapnik.load_map (m,‘my_osm2.xml’)
RuntimeError: PSQL error:
ERROR: syntax error at or near “,”
LINE 2: (sect way,aeroway,amenity,landuse,leisure,man_made,mil…

получается остается только варианты неправильных данных в базе или неправильного файла my_osm.xml?

да, похоже, что конфиг неверный. А ты пытаешься именно OSM базу рендерить, или что-то своё?

я взял карту Иркутска в формате osm(еще брал экспорт Иркутска c http://www.openstreetmap.org/ ), потом с помощью osm2pgsql залил ее в базу и теперь вот пытаюсь ее отобразить…
самое интересное что когда я делаю селекты прописанные в my_osm.xml напрямую в базе, выборка получается не пустая, то есть данные в базе есть, только они могут быть с напутанными координатами… либо конфиг неверный(но к базе то оно все-таки конектится).

PS что имелось ввиду под OSM базой?

это и имел ввиду. Что скачиваешь osm файл и через osm2pgsql загоняешь его в базу.

Ты всё-же говоришь про свой xml конфиг или стандартный? world_boundaries часом не рендерятся поверх слоёв OSM?

свой xml я получил когда для шаблона osm.xml и своей базы запустил generate_xml.py…

а где там порядок отображения слоев указан(в смысле чем раньше слой встретился в xml, тем ниже он лежит или нет? т.е. последние слои будут полюбому видны?)?

и еще такой вопрос там случаем нет никаких параметров из серии при определенном масштабе скрывать слой(например нет отображения домов на карте с мировым масштабом и тд и тп)?

В каком порядке они в конфиге, в таком и рендерятся. Минимальный и максимальный масштаб задаётся в стилях, которые в первой половине конфига.

Мои идеи как это дебажить иссякли :slight_smile:

порядок в конфиге правильный получается…
а если не секрет как хоть теги в xml зовутся, которые ограничивают масштаб отображения слоя?

  <MaxScaleDenominator>25000</MaxScaleDenominator>
  <MinScaleDenominator>5000</MinScaleDenominator>

вот эти

усе) получилось) убрал из my_osm.xml все слои которые не относятся к базе и увидел Иркутск) всем большое спасибо)

Тут “внезапно” встал вопрос) так как все основные продукты привязаны к оракловой базе, есть огромное желание перенести базу с постгиса на оракл) про oracle spatial все слышали но хотят именно сменить постгис на оракл а все остальное оставить как есть…
такое вообще реально?

ЗЫ от проекта надо всего лишь показывать карты пользователю с наложенным слоем(железные дороги + интенсивность движения по ним например)

Oracle Spatial - сильно не рекомендую. Труха унутре. Намучались с ним изрядно. Начиная от необъяснимых тормозов на простейших операциях и заканчивая поломкой пространственных индексов при update. Если только на readonly с небольшой нагрузкой - ещё может сгодиться.

так как раз основное стремление - это просто поменять постгис на оракл и все, то есть оставить ту же структуру таблиц что была в постгисе(тут не понятно что делать с полями типа geometry), оставить мапник(тут вопрос что делать с xml, в котором стоят typedatasource - postgis) и тд и тп… это вообще имеет смысл заморачиваться и искать или делать что-то свое, или просто оставить пост гис? просто не охота разводит зоопарк баз данных, хотелось бы все оставить на оракле

Про спатиал слышал точно такие же мысли - и не удобная и функциональность фиговая)

Я пока еще не так хорошо разбираюсь в mapnik API, но мне кажется что Datasource должен задаваться для слоя:


...
data_layer = mapnik.Layer('Layer')
data_layer.datasource = mapnik.PostGIS(host='localhost',
    user='user',
    password='password',
    dbname='gisutf8',
    table='(select way from planet_osm_point)POINT'
    )
...

ну и добавляем слой в карту, назначаем ему стиль, фильтры … Поправьте если не прав.