Страница 1 из 1

Описание геометрии в PostGis

Добавлено: 02 сен 2011, 08:43
dobeer
При загрузке шейпа в БД PostGis, в таблице имеется поле "the_geom" с описанием геометрии. Значение ячеек имеют вид типа: "01030000000100000005000000BDF489CEF8854F41D54253C22E615F41CE202BD33D864F4117856B4C1D615F4196CA5B4034864F410D24DB8F13615F413DBBFD9EEE854F41BCBE0FCE24615F41BDF489CEF8854F41D54253C22E615F41". Объекты имеют тип полигонов. Как имея эту строку с описанием геометрии нарисовать вектором этот самый полигон в OpenLayers?

Re: Описание геометрии в PostGis

Добавлено: 02 сен 2011, 10:06
Mavka
Если есть возможность преобразовать в WKT, то элементарно:

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

var layer1 = new OpenLayers.Layer.Vector();

layer1.addFeatures([
    new OpenLayers.Feature.Vector(
        OpenLayers.Geometry.fromWKT("LINESTRING(0 0, 10 10, 20 20, 30 30)")
    )
]); 
Формат WKB в OpenLayers отсутствует. Можно попробовать JSTS Topology Suite, по аналогии с JTS там должен быть WKBReader.

Re: Описание геометрии в PostGis

Добавлено: 02 сен 2011, 12:22
Mavka
Не увидел шапку топика. Раз уж PostGIS то делайте ST_AsText(geometry)

Converting WKB to WKT

Re: Описание геометрии в PostGis

Добавлено: 02 сен 2011, 15:11
dobeer
У меня PostGIS стоит на ПК. Я просто в него загоняю шейпы чтоб вытащить координаты охвата объектов, путем изменения типа с geometry на box2d. Но сейчас потребовалось рисовать на карте вектор по объекту. По ссылкам непонял что к чему))) Мнеб просто взять строку (или все сразу) и переконвертировать в WKT, можно и на ПК не обязательно на сайте скриптами.

Re: Описание геометрии в PostGis

Добавлено: 02 сен 2011, 15:52
Mavka
Так устроит?

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

SELECT ST_AsText(the_geom) as geometry FROM mytable
Или написать php-скрипт который делает запрос в БД и возвращает WKT?

Можно и локально с помощью ogr2ogr:

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

ogr2ogr.exe ^
    -f "GeoJSON" output.json ^
    PG:"host='localhost' port='5432' dbname='postgis' user='x' password='y'" mytable
Дальше см. "OpenLayers: создание векторного слоя из локального файл"