GIS-LAB

Географические информационные системы и дистанционное зондирование

Руководство по PostGIS

6.2. Расширения PostGIS

<<< предыдущая глава | оглавление | следующая глава >>>

6.2.1. Функции управления

DropGeometryTable([<schema_name>], <table_name>)

Удаляет таблицу и все связанные с ней столбцы геометрии. Замечание: если установленный pgsql поддерживает схемы, когда схема не предоставлена, используется current_schema().

UpdateGeometrySRID([<schema_name>], <table_name>, <column_name>, <srid>)

Обновляет SRID всех объектов в столбце геометрии, обновляет ограничения и ссылки в этом столбце. Замечание: если установленный pgsql поддерживает схемы, когда схема не предоставлена, используется current_schema().

update_geometry_stats([<table_name>, <column_name>])

Обновляет статистику пространственных таблиц для использования планировщиком запросов. Кроме того, вам понадобится "VACUUM ANALYZE [table_name] [column_name]" для завершения процесса сбора статистики. Замечание: начиная с PostgreSQL 8.0 сбор статистики автоматически выполняется при запуске "VACUUM ANALYZE".

postgis_version()

Возвращает версию PostGIS и опции, с которыми он был скомпилирован.

Замечание

До версии 1.1.0 это была процедурная функция, возможно, возвращающая неправильную информацию (в случае неполного апгрейда базы данных).

postgis_lib_version()

Возвращает номер версии библиотеки PostGIS.

Присутствует с 0.9.0

postgis_lib_build_date()

Возвращает дату сборки библиотеки PostGIS.

Присутствует с 1.0.0RC1

postgis_script_build_date()

Возвращает дату создания скриптов PostGIS.

Присутствует с 1.0.0RC1.

postgis_scripts_installed()

Возвращает версию скриптов PostGIS, установленных в базе данных.

Замечание

Если вывод этой функции не совпадает с выводом postgis_scripts_released(), то, вероятно, вы не выполнили должным образом апгрейд существующей базы. Смотрите подробности в разделе Обновление.

Присутствует с 0.9.0.

postgis_scripts_released()

Возвращает номер версии скрипта lwpostgis.sql, предоставляемого с установкой библиотеки PostGIS.

Замечание

Начиная с версии 1.1.0 эта функция возвращает то же значение, что и postgis_lib_version(). Оставлена для обратной совместимости.

Присутствует с 0.9.0.

postgis_geos_version()

Возвращает номер версии библиотеки GEOS, или NULL, если поддержка GEOS не включена.

Присутствует с 0.9.0

postgis_jts_version()

Возвращает номер версии библиотеки JTS, или NULL, если поддержка JTS не включена.

Присутствует с 1.1.0

postgis_proj_version()

Возвращает номер версии библиотеки PROJ4, или NULL, если поддержка PROJ4 не включена.

Присутствует с 0.9.0

postgis_uses_stats()

Возвращает true, если включено использование STATS, и false в противном случае.

Присутствует с 0.9.0

postgis_full_version()

Сообщает полную версию PostGIS и информацию о конфигурации сборки.

Присутствует с 0.9.0

6.2.2. Операторы

A &< B

Оператор "&<" возвращает true, если охват A частично совпадает или находится слева от охвата B.

A &> B

Оператор "&>" возвращает true, если охват A частично совпадает или находится справа от охвата B.

A << B

Оператор "<<" возвращает true, если охват A находится строго слева от охвата B.

A >> B

Оператор ">>" возвращает true, если охват A находится строго справа от охвата B.

A &<| B

Оператор "&<|" возвращает true, если охват A частично совпадает или находится ниже охвата B.

A |&> B

Оператор "|&>" возвращает true, если охват A частично совпадает или находится выше охвата B.

A <<| B

Оператор "<<|" возвращает true, если охват A находится строго ниже охвата B.

A |>> B

Оператор "|>>" возвращает true, если охват A находится строго выше охвата B.

A ~= B

Оператор "~=" - это оператор "то же самое". Он проверяет, являются ли обе части геометрически эквивалентными. Так, если A и B совпадают "вершина-в-вершину", то оператор вернет true.

A @ B

Оператор "@" возвращает true, если охват A полностью содержит охват B.

A ~ B

Оператор "~" возвращает true, если охват A полностью содержится в охвате B.

A && B

Оператор "&&" является оператором "частичного перекрытия" ("overlaps"). Если охват A частично перекрывается охватом B, то оператор вернет true.

6.2.3. Функции измерения

ST_Area(geometry)

Возвращает площадь геометрии, являющейся полигоном или мультиполигоном.

ST_distance_sphere(point, point)

Возвращает линейное расстояние в метрах между двумя точками (широта/долгота). Вычисление производится для сферы радиусом 6370986 метров (Земля). Работает быстрее, чем distance_spheroid(), но менее точно. Выполняется только для точек.

ST_distance_spheroid(point, point, spheroid)

Возвращает линейное расстояние в метрах между двумя точками (широта/долгота) на заданном сфероиде. Смотрите определение сфероида, данное для length_spheroid(). В настоящее время выполняется только для точек.

ST_length2d(geometry)

Возвращает 2-мерную длину (2-dimensional length) геометрии, если она является линией или мульти-линией.

ST_length3d(geometry)

Возвращает 3-мерную длину (3-dimensional length) геометрии, если она является линией или мульти-линией.

ST_length_spheroid(geometry,spheroid)

Вычисляет длину геометрии на эллипсоиде. Может быть полезна, если координатами геометрии являются широта/долгота и длину желательна вычислить без перепроектирования без репроекции. Эллипсоид является особым тип базы данных и может быть сконструирован следующим способом:

SPHEROID[<NAME>,<SEMI-MAJOR AXIS>,<INVERSE FLATTENING>]
 

Например:

SPHEROID["GRS_1980",6378137,298.257222101]
 

Пример вычисления должен быть таким:

SELECT length_spheroid( geometry_column,
    'SPHEROID["GRS_1980",6378137,298.257222101]' )
    FROM geometry_table;
 
 
ST_length3d_spheroid(geometry,spheroid)

Вычисляет длину геометрии на эллипсоиде с учетом высоты. Это аналогично length_spheroid, но учитывает вертикальные координаты (выраженные в тех же единицах, что и оси сфероида), и используется для расчета дополнительного расстояния, которое добавляется вертикальным смещением.

ST_distance(geometry, geometry)

Возвращает наименьшее расстояние между двумя геометриями.

ST_max_distance(linestring,linestring)

Возвращает наибольшее расстояние между двумя линиями.

ST_perimeter(geometry)

Возвращает 2-мерный периметр геометрии, если она является полигоном или мульти-полигоном.

ST_perimeter2d(geometry)

Возвращает 2-мерный периметр геометрии, если она является полигоном или мульти-полигоном.

ST_perimeter3d(geometry)

Возвращает 3-мерный периметр геометрии, если она является полигоном или мульти-полигоном.

ST_azimuth(geometry, geometry)

Возвращает азимут сегмента, определенного заданными точечными геометриями, или NULL, если обе точки совпадают. Возвращает значение в радианах.

Присутствует с 1.1.0

6.2.4. Геометрический вывод

ST_AsBinary(geometry,{'NDR'|'XDR'})

Возвращает геометрию в "известном-бинарном" ("well-known-binary") формате OGC, как набор байтов с использованием little-endian (NDR) или big-endian (XDR) порядка байтов. Это используется в бинарном курсоре для вывода данных из базы без преобразования их к строковому представлению.

ST_AsEWKT(geometry)

Возвращает геометрию в формате EWKT (как текст).

ST_AsEWKB(geometry, {'NDR'|'XDR'})

Возвращает геометрию в формате EWKB, как набор байтов с использованием little-endian (NDR) или big-endian (XDR) порядка байтов.

ST_AsHEXEWKB(geometry, {'NDR'|'XDR'})

Возвращает геометрию в формате HEXEWKB, как текстс использованием little-endian (NDR) или big-endian (XDR) порядка байтов.

ST_AsSVG(geometry, [rel], [precision])

Возвращает геометрию как данные SVG. При использовании 1 в качестве второго аргумента, данные выдаются в терминах относительного движения. По умолчанию, (0) выдаются данные в терминах абсолютного движения. Третий аргумент может быть использован для сокращения максимума чисел после запятой в выводе (по умолчанию - 15). Точечные геометрии будут выданы как cx/cy, когда аргумент 'rel' равен 0, и как x/y, когда 'rel' равен 1.

ST_AsGML([version], geometry, [precision])

Возвращает геометрию, как элемент GML. Параметр version, если указан, должен быть либо 2, либо 3. Если параметр version не указан, то используется значение по умолчанию 2. Третий аргумент может быть использован для ограничения максимума числа значащих цифр в выводе (по умолчанию - 15).

ST_AsKML(geometry, [precision])

Возвращает геометрию как элемент KML. Второй аргумент может быть использован для ограничения максимума числа значащих цифр в выводе (по умолчанию - 15).

ST_AsGeoJson([version], geometry, [precision], [options])

Возвращает геометрию как элемент GeoJson. (См. GeoJson specifications 1.0). Поддерживаются и 2D и 3D геометрии. GeoJson поддерживает только тип геометрии SFS 1.1 (например не поддерживаются кривые ).

Параметр version если указан должен быть равен 1.

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

Последний параметр 'options' может быть использован для добавления Bbox или Crs в вывод GeoJSON:

  • 0: нет опции (значение по умолчанию)
  • 1: GeoJson CRS
  • 2: GeoJson Bbox
  • 3: Both GeoJson Bbox and CRS
Формат GeoJson CRS: auth_name:auth_srid из spatial_ref_sys table (например EPSG:4326).
 
Присутствует с : 1.3.4
 

6.2.5. Геометрические конструкторы

ST_GeomFromEWKT(text)

Создает геометрию из EWKT.

ST_GeomFromEWKB(bytea)

Создает геометрию из EWKB.

ST_MakePoint(<x>, <y>, [<z>], [<m>])

Создает точку 2d-, 3dz- или 4d-геометрии.

ST_MakePointM(<x>, <y>, <m>)

Создает точку 3dm-геометрии.

ST_MakeBox2D(<LL>, <UR>)

Создает BOX2D, определенный с помощью заданных точечных геометрий.

ST_MakeBox3D(<LLB>, <URT>)

Создает BOX3D, определенный с помощью заданных точечных геометрий.

ST_MakeLine(geometry set)

Создает линию из множества точечных геометрий. При аггрегровании вы можете использовать вложенный SELECT для упорядочения точек перед созданием линии.

ST_MakeLine(geometry, geometry)

Создает Linestring с помощью двух заданных точечных геометрий.

ST_LineFromMultiPoint(multipoint)

Создает Linestring с помощью геометрии MultiPoint.

ST_MakePolygon(linestring, [linestring[]])

Создает полигон, сформированный с помощью данного остова и массива дыр. Вы можете создать геометрический массив с помощью Accum. Вводимые геометрии должны быть замкнутыми ломаными (смотрите IsClosed и GeometryType).

ST_BuildArea(geometry)

Создает полигональную геометрию, сформированную с помощью линий, составляющих заданную геометрию. Возвращаемый тип может быть полигоном или мультиполигоном в зависимости от ввода. Если вводимые линии не образуют полигона, возвращается NULL.

Смотрите также BdPolyFromText и BdMPolyFromText - обертки этой функции со стандартным интерфейсом OGC.

Поддерживается с 1.1.0. Требует GEOS >= 2.1.0.

ST_Polygonize(geometry set)

Аггрегировать. Создает GeometryCollection, содержащий возможные полигоны, сформированные из составных линий указанного множества геометрий.

Поддерживается с 1.0.0RC1. Требует >= 2.1.0.

ST_Collect(geometry set)

Функция возвращает GEOMETRYCOLLECTION или MULTI-объект для множества геометрий. Функция collect() является "агрегирующей" в терминологии PostgreSQL. Это означает, что она оперирует списком данных, наподобие того, как это делают функции sum() и mean(). Например, "SELECT COLLECT(GEOM) FROM GEOMTABLE GROUP BY ATTRCOLUMN" вернет отдельный GEOMETRYCOLLECTION для каждого уникального значения ATTRCOLUMN.

ST_Collect и ST_Union часто взаимозаменяемы. ST_Collect на обычных запросах на порядок быстрее чем ST_Union потому что он не пытается растворить границы. Он просто сводит единичные геометрии в MULTI и MULTI или смешанные геометрии в Geometry Collections. К сожалению, коллекции не очень хорошо поддерживаются инструментарием ГИС. Чтобы избежать возвращения ST_Collect коллекций геометрии при сборе MULTI геометрий, можно использовать следующий подход, который использует ST_Dump для раскрытия коллекции в единичные геометрии и объединение их в группы:

Thread ref: http://postgis.refractions.net/pipermail/postgis-users/2008-June/020331.html
SELECT stusps, 
    ST_Multi(ST_Collect(f.the_geom)) as singlegeom  
    FROM (SELECT stusps, (ST_Dump(the_geom)).geom As the_geom 
        FROM somestatetable ) As f
    GROUP BY stusps
 
 
ST_Collect(geometry, geometry)

Эта функция возращает геометрию, которая является коллекцией двух введенных геометрий. Вывод будет иметь тип MULTI* или GEOMETRYCOLLECTION.

ST_Dump(geometry)

Это функция возвращает множество (SRF - set-returning function). Она возвращает набор строк geometry_dump, сформированных в виде геометрии (geom) и массива целых чисел (path). Если введенная геометрия имеет простой тип (POINT, LINESTRING, POLYGON), будет возвращена единственная запись с пустым массивом "path" и введеной геометрией в качестве "geom". Если введенная геометрия является коллекцией или MULTI, то будет возвращено по записи на каждую компоненту коллекции, а "path" будет указывать позицию компоненты внутри коллекции.

Эта функция полезна для раскрытия геометрий. Она является противоположной функции GROUP BY в том, что она создает новые строки. Например, она может быть использована для раскрытия MULTIPOLYGONS в POLYGONS.

SELECT sometable.*, (ST_Dump(the_geom)).geom As the_geom
    FROM somestatetable 
 

Поддерживается с PostGIS 1.0.0RC1. Требует PostgreSQL 7.3 или выше.

ST_DumpRings(geometry)

Это функция возвращает множество (SRF - set-returning function). Она возвращает набор строк geometry_dump, сформированных в виде геометрии (geom) и массива целых чисел (path). Поле "path" является индексом полигонального круга, содержащим единственный элемент: 0 для остова, номер дырки для дырок. Поле "geom" содержит соответствующую дугу, как полигон.

Поддерживается с PostGIS 1.1.3. Требует PostgreSQL 7.3 или выше.

6.2.6. Геометрические редакторы

ST_AddBBOX(geometry)

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

ST_DropBBOX(geometry)

Удаляет из геометрии кэш охватов. Это уменьшает размер геометрии, но замедляет запросы, использующие охваты.

ST_AddPoint(linestring, point, [<position>])

Добавляет точку в линию после точки <pos> (нумерация начинается с 0). Третим параметром можно пренебречь или установить в -1, что одно и то же.

ST_RemovePoint(linestring, offset)

Удаляет точку линии. Offset начинается с 0.

Поддерживается с 1.1.0.

ST_SetPoint(linestring, N, point)

Заменяет точку N линии на заданную точку. Нумерация начинается с 0.

Поддерживается с 1.1.0.

ST_Force_collection(geometry)

Конвертирует геометрию в GEOMETRYCOLLECTION. Может быть использована для упрощения представления WKB.

ST_Force_2d(geometry)

Приводит геометрию в "2-мерный режим", так чтобы весь вывод был представлен только в координатах X и Y. Это может быть полезно для OGC-совместимого вывода (поскольку OGC определяет только 2-D геометрии).

ST_Force_3dz(geometry), ST_Force_3d(geometry)

Переводит геометрии в режим XYZ.

ST_Force_3dm(geometry)

Переводит геометрии в режим XYM.

ST_Force_4d(geometry)

Переводит геометрии в режим XYZM.

ST_Multi(geometry)

Возвращает геометрию как геометрию MULTI*. Если данная геометрия уже является MULTI*, она будет возвращена неизменившейся.

ST_Transform(geometry,integer)

Возвращает новую геометрии, все координаты которой трансформированы соответственно SRID, указанному как целочисленный параметр. Назначенный SRID должен существовать в таблице SPATIAL_REF_SYS.

ST_Affine(geometry, float8, float8, float8, float8, float8, float8, float8, float8, float8, float8, float8, float8)

Осуществляет 3d аффинную трансформацию геометрии. Команда:

Affine(geom, a, b, c, d, e, f, g, h, i, xoff, yoff, zoff)

представляет матрицу трансформации:

/ a  b  c  xoff \
| d  e  f  yoff |
| g  h  i  zoff |
\ 0  0  0     1 /

Вершины будут трансформированы следующим образом:

x' = a*x + b*y + c*z + xoff
y' = d*x + e*y + f*z + yoff
z' = g*x + h*y + i*z + zoff

Все команды сдвига/масштабирования (translate/scale), описанные ниже, являются частными случаями данного аффинного преобразования.

Поддерживается с 1.1.2.

ST_Affine(geometry, float8, float8, float8, float8, float8, float8)

Осуществляет 2d аффинную трансформацию геометрии. Команда:

Affine(geom, a, b, d, e, xoff, yoff)
представляет матрицу трансформации:
/  a  b  0  xoff  \       /  a  b  xoff  \
|  d  e  0  yoff  | rsp.  |  d  e  yoff  |
|  0  0  1     0  |       \  0  0     1  /
\  0  0  0     1  /
 

Вершины будут трансформированы следующим образом:

x' = a*x + b*y + xoff
y' = d*x + e*y + yoff
z' = z 

Этот метод является частностью 3D-метода, описанного выше.

Поддерживается с 1.1.2.

ST_Translate(geometry, float8, float8, float8)

Переводит геометрию в новое местоположение с помощью числовых параметров смещения. Пример: translate(geom, X, Y, Z).

ST_Scale(geometry, float8, float8, float8)

Масштабирует геометрию в новый размер путем умножения координат на соответствующие параметры. Например: scale(geom, Xfactor, Yfactor, Zfactor).

Поддерживается с 1.1.0.

ST_RotateZ(geometry, float8), ST_RotateX(geometry, float8), ST_RotateY(geometry, float8)

Поворачивает геометрию вокруг оси Z, X или Y на угол, заданный в радианах. Согласно правилу правой руки.

Поддерживается с 1.1.2.

ST_TransScale(geometry, float8, float8, float8, float8)

Сначала смещает геометрию с помощью первых двух значений, а потом масштабирует ее с помощью вторых двух чисел. Работает только с 2D. Вызов transscale(geom, X, Y, XFactor, YFactor) внутри приводит к вызову affine(geom, XFactor, 0, 0, 0, YFactor, 0, 0, 0, 1, X*XFactor, Y*YFactor, 0).

Поддерживается с 1.1.0.

ST_Reverse(geometry)

Возвращает геометрию с противоположным порядком вершин.

ST_ForceRHR(geometry)

Приводит коллекцию полигонов в соответствие с "правилом правой руки".

ST_Simplify(geometry, tolerance)

Возвращает "упрощенную" версию данной геометрии с помощью алгоритма Дугласа-Пойкера (Douglas-Peuker). На самом деле будет работать только (мульти)линии и (мульти)полигоны, но вы можете безбоязненно применять ее к любым типам геометрий. Так как упрощение осуществляется пообъектно (object-by-object), вы можете использовать эту функцию и для GeometryCollection. Заметим, что возвращенная геометрия может не быть простой (смотрите IsSimple).

ST_SnapToGrid(geometry, originX, originY, sizeX, sizeY), ST_SnapToGrid(geometry, sizeX, sizeY), ST_SnapToGrid(geometry, size)

Прищелкивает все точки введенной геометрии к гриду, описанному координатами начала и размерами ячеек. Удаляет точки, попадающие в те же ячейки и, в конечном счете, возвращает NULL, если выведенных точек недостаточно, чтобы определить геометрию данного типа. Свернутые геометрии удаляются из коллекции.

Замечание

Возвращаемая геометрия может перестать быть простой (смотрите IsSimple).

Замечание

До релиза 1.1.0 эта функция всегда возвращала 2d-геометрию. Начиная с 1.1.0 возвращаемая геометрия будет иметь ту же размерность, что и введеная. Размерности высших порядков остаются нетронутыми. Используйте версию, берущую второй геометрический аргумент, чтобы определить все измерения грида.

Поддерживается с 1.0.0RC1.

ST_SnapToGrid(geometry, geometry, sizeX, sizeY, sizeZ, sizeM)

Прищелкивает все точки введенной геометрии к гриду, описанному началом (второй аргумент, должен быть точкой) и размерами ячеек. Если вы не хотите осуществлять прищелкивание, укажите любой размер равным 0.

Поддерживается с 1.1.0.

ST_Segmentize(geometry, maxlength)

Возвращает модифицированную геометрию без секторов, с длиной больше указанного размера. Интерполированные точки будут иметь значения Z и M (если они нужны), установленные в 0. Вычисление размеров производится только в 2d.

ST_LineMerge(geometry)

Возвращает линию или линии, сформированную(ые) посредством соединения линий, составляющих ввод.

Поддерживается с 1.1.0. Требует GEOS >= 2.1.0

6.2.7. Линейные ссылки

ST_line_interpolate_point(linestring, location)

Возвращает точки, интерполированные вдоль линии. Первый аргумент должен иметь тип LINESTRING. Второй аргумент является float8 между 0 и 1, представляющим дробную часть всей 2d-длины где должны быть раположены точки.

Смотрите line_locate_point(), чтобы вычислить местоположение линии, самое близкое к точке.

Замечание

Начиная с релиза 1.1.1 эта функция также интерполирует значения M и Z (если они есть), тогда как предыдущие релизы устанавливали их в 0.0.

Поддерживается с 0.8.2.

ST_line_substring(linestring, start, end)

Возвращает линию как часть первого аргумента, начинающегося и заканчивающегося заданными долями. Второй и третий аргумент должны быть значениями float8 между 0 и 1.

Если 'start' и 'end' имеют одинаковые значения, это эквивалентно line_interpolate_point().

Смотрите line_locate_point() про вычисление линии местоположения, ближайшей к точке.

Замечание

Начиная с релиза 1.1.1 эта функция также интерполирует значения M и Z (если они есть), тогда как предыдущие релизы устанавливали их в неопределенное значение.

Поддерживается с 1.1.0.

ST_line_locate_point(LineString, Point)

Возвращается float между 0 и 1, представляющий местонахождение вершины линии ближайшей к указанной точке, как отношение к общей длине 2d-линии.

Вы можете использовать полученное местоположение для извлечения точки (line_interpolate_point) или части линии (line_substring).

Поддерживается с 1.1.0.

ST_locate_along_measure(geometry, float8)

Возвращает значение производной геометрии, элементы которой соответствуют указанной мере. Полигональные элементы не поддерживаются.

Семантика специфицирована в ISO/IEC CD 13249-3:200x(E) - Текст продолжен на CD редакционного заседания.

Поддерживается с 1.1.0.

ST_locate_between_measures(geometry, float8, float8)

Возвращает производную геометрическую коллекцию с элементами, которые включают в себя указанный диапазон мер. Полигональные элементы не поддерживаются.

Семантика определена в ISO/IEC CD 13249-3:200x(E) - Текст продолжен на CD редакционного заседания.

Поддерживается с 1.1.0.

6.2.8. Разное

ST_Summary(geometry)

Возвращает текстовое резюме содержания геометрии.

ST_box2d(geometry)

Возвращает BOX2D, представленный максимальным охватом геометрии.

ST_box3d(geometry)

Возвращает BOX3D, представленный максимальным охватом геометрии.

ST_extent(geometry set)

Функция extent() является "агрегирующей" функцией в терминологии PostgreSQL. Это означает, что она оперирует набором данных, аналогично тому, как это делают функции sum() и mean(). Например, "SELECT EXTENT(GEOM) FROM GEOMTABLE" возвратит BOX3D с максимальными протяженностями для всего содержимого таблицы. Аналогично, "SELECT EXTENT(GEOM) FROM GEOMTABLE GROUP BY CATEGORY" возвратит по одному результату для каждой категории.

ST_zmflag(geometry)

Возвращает флаг ZM (семантическая размерность - dimension semantic) указанной геометрии, как малое целое (small int). Значения: 0=2d, 1=3dm, 2=3dz, 3=4d.

ST_HasBBOX(geometry)

Возвращает TRUE, если охват геометрии является кэшированным. В противном случае - FALSE. Используйте addBBOX() и dropBBOX() для управления кэшированием.

ST_ndims(geometry)

Возвращает число размерностей геометрии, как малое целое (small int). Значения: 2, 3 или 4.

ST_nrings(geometry)

Если геометрия является полигоном или мультиполигоном, возвращает число кругов.

ST_npoints(geometry)

Возвращает число точек в геометрии.

ST_isvalid(geometry)

Возвращает true, если геометрия является валидной.

ST_expand(geometry, float)

Эта функция возвращает охват геометрии, расширенный во всех направлениях на значение, указанное во втором аргументе. Очень удобно использовать эту функцию при запросах distance() для добавления к запросу фильтра по индексу.

ST_estimated_extent([schema], table, geocolumn)

Возвращает "оценочный" охват данной пространственной таблицы. Оценка берется из статистики столбцов геометрии. Используется текущая схема если не определена другая.

В PostgreSQL>=8.0.0 сбор статистики осуществляется с помощью VACUUM ANALYZE, и результат будет составлять около 95% от реального.

В PostgreSQL<8.0.0 сбор статистики осуществляется с помощью update_geometry_stats(), и результат будет точным.

ST_find_srid(varchar,varchar,varchar)

Синтаксис является следующим: find_srid(<БД/схема>, <таблица>, <столбец>). Функция возвращает целочисленный SRID указанного столбца, находящийся в таблице GEOMETRY_COLUMNS. Если геометрический столбец не был должным образом создан с помощью функции AddGeometryColumns(), эта функция будет работать неправильно.

ST_mem_size(geometry)

Возвращает размер (в байтах), занимаемый геометрией.

ST_point_inside_circle(geometry, float, float, float)

Синтаксис этой функции: point_inside_circle(<геометрия>, <центр_круга_x>, <центр_круга_y>, <радиус>). Возвращает true, если данная геометрия является точкой и находится внутри круга. В противном случае возвращает false.

ST_xmin(box3d) ymin(box3d) zmin(box3d)

Возвращает запрошенный минимальный охват.

ST_xmax(box3d) ymax(box3d) zmax(box3d)

Возвращает запрошенный максимальный охват.

ST_Accum(geometry set)

Аггрегация. Строит массив геометрий.

6.2.9. Поддержка долгих транзакций

Этот модуль и ассоциированные функции pl/pgsql может быть использован для организации поддержки долгих блокировок, описанных в спецификации Web Feature Service.

Замечание

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

EnableLongTransactions()

Включить поддержку долгих транзакций. Эта функция создает необходимые метаданные таблиц; должна быть вызвана перед использованием других функций этого раздела. Повторный вызов безвреден.

Поддерживается с 1.1.3.

DisableLongTransactions()

Отключить поддержку долгих транзакций. Эта функция удаляет метаданные таблиц, поддерживающие долгие транзакции, и удаляет все триггеры, добавленные к заблокированным таблицам.

Поддерживается с 1.1.3.

CheckAuth([<schema>], <table>, <rowid_col>)

Проверяет UPDATE и DELETE записей данной таблицы на авторизацию. Идентифицирует строки с помощью столбца <rowid_col>.

Поддерживается с 1.1.3.

LockRow([<schema>], <table>, <rowid>, <authid>, [<expires>])

Устанавливает блокировку/авторизацию для указанной записи в таблице. <authid> является текстовым значением, <expires> - временная метка, по умолчанию равная now()+1hour. Возвращает 1, если блокировка прошла успешно, и 0 - в противном случае (уже заблокирована другим пользователем).

Поддерживается с 1.1.3.

UnlockRows(<authid>)

Снять все блокировки, проведенные с указанным идентификатором авторизации. Возвращает число всех снятых блокировок.

Поддерживается с 1.1.3.

AddAuth(<authid>)

Добавляет признак авторизации для использования в текущей транзакции.

Поддерживается с 1.1.3.

<<< предыдущая глава | оглавление | следующая глава >>>

Обсудить в форуме Комментариев — 21

Последнее обновление: December 01 2008