Работа с PostGis и openlayers

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
suGer
Интересующийся
Сообщения: 22
Зарегистрирован: 26 июн 2010, 21:00
Репутация: 0

Работа с PostGis и openlayers

Сообщение suGer » 26 июн 2010, 21:10

Вообщем извините если слишком простые вопроссы задаю, но всё же сам в куче документации не могу разобраться без помощи . :( Вообщем еадо создать с помощью PostGresSQL бд хранящую карту, и отобразить эту карту на страницу браузера ! PostGresSQL и postges установил . нашёл вот такой пример по OpenLayers:
<html>
<head>
<title>OpenLayers Example</title>
<script
src="http://openlayers.org/api/OpenLayers.js"></script>
</head>
<body>
<div style="width:100%; height:100%" id="map"></div>
<script defer="defer" type="text/javascript">
var map = new OpenLayers.Map('map');
var wms = new OpenLayers.Layer.WMS( "OpenLayers WMS",
"http://labs.metacarta.com/wms/vmap0", {layers: 'basic'} );
map.addLayer(wms);
map.zoomToMaxExtent();
</script>
</body>
</html>
Теперь самое гдавное: сдесь он грузит как я понял слои карты с ресурса "http://labs.metacarta.com/wms/vmap0" с расширением WMS. Вопросы:
1. Как забить карты в БД с помощтю PostGresSQL и под каким расширением из сохранять ?
2. Как подключить через openlayers карту из этой БД ?
Заранее признателен за помощ ! :D

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Работа с PostGis и openlayers [Новичок]

Сообщение Denis Rykov » 26 июн 2010, 22:59

WMS - это не расширение, это протокол.
Для отображения данных PostGIS в OL нужно загрузить исходные данные в PostGIS, например через shp2pgsql http://gis-lab.info/qa/postgis-work.html#03, поднять WMS, используя один из картографических серверов (MapServer, GeoServer и т.п.) - http://gis-lab.info/qa/mapserver-wms.html и http://gis-lab.info/qa/postgis-mapserver.html, а затем уже в OL подключить WMS слой. Я делал так: http://gis-lab.info/qa/ol-search.html
Spatial is now, more than ever, just another column- The Geometry Column.

suGer
Интересующийся
Сообщения: 22
Зарегистрирован: 26 июн 2010, 21:00
Репутация: 0

Re: Работа с PostGis и openlayers [Новичок]

Сообщение suGer » 27 июн 2010, 00:45

Спасибо ! Буду разбираться !

suGer
Интересующийся
Сообщения: 22
Зарегистрирован: 26 июн 2010, 21:00
Репутация: 0

Re: Работа с PostGis и openlayers [Новичок]

Сообщение suGer » 27 июн 2010, 19:45

Проблемма: не работает инструкция
SET PATH="C:\Program Files\PostgreSQL\8.4\bin"
shp2pgsql -i -D -s 4326 bnd-political-boundary-a.shp bnd-political-boundary-a > bnd-political-boundary-a.sql
psql -U postgres -f bnd-political-boundary-a.sql -d postgis
т.е. запускается, но ничего не создаётся...

suGer
Интересующийся
Сообщения: 22
Зарегистрирован: 26 июн 2010, 21:00
Репутация: 0

Re: Работа с PostGis и openlayers [Новичок]

Сообщение suGer » 27 июн 2010, 19:49

И ещё где взять shp файл карты, а то в катологе postgreSQL таких нет !

manisha
Завсегдатай
Сообщения: 410
Зарегистрирован: 24 авг 2006, 17:35
Репутация: 10

Re: Работа с PostGis и openlayers [Новичок]

Сообщение manisha » 27 июн 2010, 20:30

Если шейпов у вас нет, то конвертацию их запускать бесполезно, разве нет?
VMap0 можно здесь взять http://gis-lab.info/qa/vmap0.html
В команде пропишите полный путь к шейпу, если он у вас не в текущей директории.

suGer
Интересующийся
Сообщения: 22
Зарегистрирован: 26 июн 2010, 21:00
Репутация: 0

Re: Работа с PostGis и openlayers [Новичок]

Сообщение suGer » 27 июн 2010, 20:51

Так как все шейпы весят больше 100mb что для меня многовато, то я скачал "границы зон в формате Arcview shapefile)" и оттуда закинул в папку >>PostgreSQL>8.4>bin> файл continental-tiling.shp, переделал батник:
SET PATH="C:\Program Files\PostgreSQL\8.4\bin"
shp2pgsql -i -D -s 4326 continental-tiling.shp continental-tiling> continental-tiling.sql
psql -U postgres -f continental-tiling.sql -d postgis
В итоге в папке батника создаётся continental-tiling.sql размером 0 байт, a в таблицы ничего не добавляется естественно... Всё таки надо качать 100 метровые версии по ссылке или я просто не так что то сделал ?

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Работа с PostGis и openlayers [Новичок]

Сообщение Denis Rykov » 27 июн 2010, 21:05

Шейп - это не один файл.
Spatial is now, more than ever, just another column- The Geometry Column.

suGer
Интересующийся
Сообщения: 22
Зарегистрирован: 26 июн 2010, 21:00
Репутация: 0

Re: Работа с PostGis и openlayers [Новичок]

Сообщение suGer » 27 июн 2010, 21:16

проблемма решеня , затупил кое-где.

suGer
Интересующийся
Сообщения: 22
Зарегистрирован: 26 июн 2010, 21:00
Репутация: 0

Re: Работа с PostGis и openlayers

Сообщение suGer » 28 июн 2010, 13:18

Немного назобрался в MapServer ! Возникли следуюшие проблемы:
скачал пример шейпов вот такой gis-lab.info/other/mapserver-begin-example.zip , пытаемся забить например Poltava10_Vegetation_region в таблицу PostGreSQL:

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

SET PATH="C:\Program Files\PostgreSQL\8.4\bin\"
shp2pgsql -i -D -s 4326 Poltava10_Vegetation_region.shp  Poltava10_Vegetation_region> Poltava10_Vegetation_region.sql
psql -U postgres -f Poltava10_Vegetation_region.sql -d postgis 
вот что получаем : Изображение
Может кто скинет рабочий шейп для примера :?: :?: :?:

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Работа с PostGis и openlayers

Сообщение Denis Rykov » 28 июн 2010, 18:06

Шейп в порядке, все грузится без проблем.
Кодировка cp1251, что нужно указать при выгрузке в sql, так как по дефолту используется utf-8:

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

shp2pgsql -i -D -s 4326 -W cp1251 Poltava10_Vegetation_region.shp  Poltava10_Vegetation_region> Poltava10_Vegetation_region.sql
Ну и непосредственно загрузка в базу:

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

psql -U postgres -f Poltava10_Vegetation_region.sql -d postgis
Spatial is now, more than ever, just another column- The Geometry Column.

suGer
Интересующийся
Сообщения: 22
Зарегистрирован: 26 июн 2010, 21:00
Репутация: 0

Re: Работа с PostGis и openlayers

Сообщение suGer » 28 июн 2010, 20:51

Спасибо! Создаётся ! Сразу же проблемма ( как они мне надоели ):

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

MAP
 IMAGETYPE GIF
 EXTENT 77.8924 50.6194 87.2278 54.4701
 SIZE 800 600
LAYER
 NAME "boundary"
 CONNECTIONTYPE postgis
 CONNECTION "user=postgres password=thegame dbname=postgis host=localhost"
 DATA "the_geom from Poltava10_Vegetation_region"
 TYPE POLYGON
 CLASS
      COLOR 200 120 123
 END
END
END 
этим мапником вывожу на страницу, но выдаёт бред

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

msDrawMap(): Image handling error. Failed to draw layer named 'boundary'. msPostGISLayerWhichShapes(): Query error. Error (ERROR: column "oid" does not exist LINE 1: ...ction(force_2d("the_geom")),'NDR'),'hex') as geom,"oid" from... ^ ) executing query: select encode(AsBinary(force_collection(force_2d("the_geom")),'NDR'),'hex') as geom,"oid" from Poltava10_Vegetation_region where the_geom && GeomFromText('POLYGON((77.8924 49.0454354818523,77.8924 56.0440645181477,87.2278 56.0440645181477,87.2278 49.0454354818523,77.8924 49.0454354818523))',find_srid('','Poltava10_Vegetation_region','the_geom'))
и вот почему: Таблица должна иметь столбец OID однощначно определяющий поля , при ручном создании таблицы там ставится галочка для создания, а при загрузке через батник создаётся таблица без OID :(
как мне этот oid туда впихнуть ?

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Работа с PostGis и openlayers

Сообщение Denis Rykov » 29 июн 2010, 07:21

Если вы внимательно читали статьи по тем ссылкам, что я привел, то могли увидеть следующее:
Также можно настроить PostgreSQL таким образом, чтобы вновь создаваемые таблицы посредством клиента psql автоматически включали столбец OID. Для этого в файле postgresql.conf, расположенном по умолчанию в C:\Program Files\PostgreSQL\8.3\data\ найдите строку default_with_oids = on, раскомментируйте ее и замените на default_with_oids = on.
Пробовали? Не помогло?
Spatial is now, more than ever, just another column- The Geometry Column.

suGer
Интересующийся
Сообщения: 22
Зарегистрирован: 26 июн 2010, 21:00
Репутация: 0

Re: Работа с PostGis и openlayers

Сообщение suGer » 29 июн 2010, 12:28

Читал, давно сделал, не помогает (((

suGer
Интересующийся
Сообщения: 22
Зарегистрирован: 26 июн 2010, 21:00
Репутация: 0

Re: Работа с PostGis и openlayers

Сообщение suGer » 29 июн 2010, 14:14

Вообщем и эту проблемму решил сам путём прямого изменения параметров в postgreSQL ( там меню есть специальное). :D
Сейчас обробатывает такой map:

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

MAP
 IMAGETYPE GIF
 EXTENT 77.8924 50.6194 87.2278 54.4701
 SIZE 300 300
 IMAGECOLOR     255 255 100
LAYER
 NAME "boundary"
 CONNECTIONTYPE postgis
 CONNECTION "user=postgres password=thegame dbname=postgis host=localhost"
 DATA "the_geom from Poltava10_Vegetation_region using unique gid using srid=4326"
 TYPE POLYGON
 CLASS
      COLOR 12 200 12
 END
END
END
Таким запросом:

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

http://localhost/cgi-bin/mapserv.exe?map=/ms4w/apps/example/postgis.map&layer=boundary&mode=map
ошибок не выдаёт, но не отображает саму картинку, а только фоновый квадрат (IMAGECOLOR 255 255 100) желтого цвета, странно ведь шейп рабочий... srid тоже добавил в таблицу. может быть проблемма в том что в geometry_columns oid для моей таблицы стоит 17735, а в таблице столбец oid начинается с 17739 :?: :?: :?:
если так то как это исправить ?

Ответить

Вернуться в «Веб-картография»

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

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