Проблема с mapnik + postgis

Ответить
Antoha
Новоприбывший
Сообщения: 7
Зарегистрирован: 01 авг 2009, 08:44
Репутация: 0

Проблема с mapnik + postgis

Сообщение Antoha » 01 авг 2009, 09:39

Здраствуйте.
Я вот только недавно начал заниматся с картами. В течении недели изучал, как примерно это "устроено".
Цель - рисовать свою карту, точнее tile для Gmap'a (tile). Я выбрал mapnik + postgis (У меня стоит Windows XP).
Проблема в следующем: при запуске скрипта (python'a) винда выдает ошибку:
Инструкция по адресу "0x00000000" обратилась к памяти по адресу "0x00000000". Память не может быть "read".
картинка создается, но пустая (с белым фоном).
Если вместо postgis использовать Shapefile - то все нормально работает.

Postgis установил только вчера, так что плохо знаю, как там и что там.
Приведу небольшой код (как я работаю примерно).

Создаю таблицу:

Код: Выделить всё

CREATE TABLE points ( the_geom geometry, name varchar );
INSERT INTO points ( 'POINT(30, 40)', 'first' );
На всякий случай, захожу в Quantum Gis, создаю новый слой PostGis, загружаю данные с таблицы points - все хорошо, точку вижу.

Теперь python

Код: Выделить всё

from mapnik import *
...
lyr = Layer('newlayer')
tab = '(select * from points) as point'
lyr.datasource = PostGIS(host='localhost',user='Anton',password='blablabla',dbname='map',table=tab)
...
или через xml файл:

Код: Выделить всё

<Map srs="+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs " bgcolor="rgba(0,0,0,0)">
  <Style name="point">...</Style>
  <Layer name="world" status="on" srs="+proj=latlong +datum=WGS84">
    <StyleName>point</StyleName>
    <Datasource>
      <Parameter name="type">postgis</Parameter>
      <Parameter name="host">localhost</Parameter>
      <Parameter name="dbname">map</Parameter>
      <Parameter name="user">Anton</Parameter>      
      <Parameter name="password">12345</Parameter>
      <Parameter name="table">(select * from points) as point</Parameter>
      <Parameter name="estimate_extent">false</Parameter>
      <Parameter name="extent">29,39,31,41</Parameter>
    </Datasource>
  </Layer>
</Map>
Но оба варианта не работают. Что можете посоветовать?
Может кто-нибудь приведет небольшой код с созданием таблицы, чуть-чуть данных, соединением с postgis и рендером картинки? Очень надеюсь на вашу помощь.

Antoha
Новоприбывший
Сообщения: 7
Зарегистрирован: 01 авг 2009, 08:44
Репутация: 0

Re: Проблема с mapnik + postgis

Сообщение Antoha » 02 авг 2009, 06:07

Никто ничего не посоветует?
Люди добрые, пожалуйста, приведите какой-нибудь простой пример соединения mapnik'a и postgis.

bim2010
Гуру
Сообщения: 977
Зарегистрирован: 27 янв 2009, 22:57
Репутация: 258

Re: Проблема с mapnik + postgis

Сообщение bim2010 » 02 авг 2009, 07:45

http://developmentseed.org/blog/2008/de ... nik-ubuntu

http://drupal.org/search/apachesolr_search/mapnik

Извините, если не то.

Я хочу сказать что не достаточно разобраться с mapnik + postgis , необходимо выбрать CMS. Тогда снимется часть вопросов по postgis. Иначе это все придется писать самому.

Antoha
Новоприбывший
Сообщения: 7
Зарегистрирован: 01 авг 2009, 08:44
Репутация: 0

Re: Проблема с mapnik + postgis

Сообщение Antoha » 02 авг 2009, 13:55

Как я выше написал, от mapnik'a + postgis мне нужно только рендер картинок. Просто карта моего маленького городка в гугл картах никакая вообще. Поэтому хочу использовать свои тайлы.
Пока приходится делать так: например, добавляю новую линию (улицу) в postgis (своими руками); захожу в quantum gis, загружаю postgis слой и сохраняю как shp файл; рендерю картинку на основе shp файла при помощи mapnik'a.
Ответа на свою проблему пока не нашел. Хотелось бы увидить простой пример как подсоединиться к постгис.
Уже совсем отчаялся, но буду ждать, может кто-нибудь покажет.

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Проблема с mapnik + postgis

Сообщение Mavka » 03 авг 2009, 10:14

  1. В вашем примере кода не указан стиль. Если его не задать, то рисоваться ничего не будет
  2. По-пробуйте указать в параметре table имя настоящей таблицы.
    SQL-запросы тоже можно, но у них синтаксис сложнее:

    Код: Выделить всё

    '(select <поле_с_геометрией> from <таблица> ...) <тип_геометрии>'
    tab = '(select the_geom from points) point' 
Вот пробный код, который у меня работает:

Код: Выделить всё

import mapnik
from mapnik import *

m = mapnik.Map(600,600,"<здесь_моя_СК>")

m.background = mapnik.Color('white')
s = mapnik.Style()
r = mapnik.Rule()
r.symbols.append(mapnik.PolygonSymbolizer(mapnik.Color('black')))
s.rules.append(r)
m.append_style('My Style',s)

lyr = mapnik.Layer('test',"<здесь_моя_СК>")
my_query = '(select the_geom from geology_region) polygon'
lyr.datasource = mapnik.PostGIS(host='localhost',
    user='postgres',
    password='secret',
    dbname='geos',
    table=my_query
)
lyr.styles.append('My Style')

m.layers.append(lyr)
m.zoom_to_box(mapnik.Envelope(<здесь_мой_экстент>))

mapnik.render_to_file(m,'world.png', 'png')
exit()

 
лангольеры под окном жрали время ом-ном-ном

Antoha
Новоприбывший
Сообщения: 7
Зарегистрирован: 01 авг 2009, 08:44
Репутация: 0

Re: Проблема с mapnik + postgis

Сообщение Antoha » 05 авг 2009, 07:38

Проблему я решил уже, переустановив питон и все библиотеки.
Спасибо всем кто ответил.

Ответить

Вернуться в «PostGIS/PostgreSQL»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей