الاسم
AddGeometryColumn — تضيف عمود geometry إلى جدول موجود.
المختصر
text AddGeometryColumn(varchar table_name, varchar column_name, integer srid, varchar type, integer dimension, boolean use_typmod=true);
text AddGeometryColumn(varchar schema_name, varchar table_name, varchar column_name, integer srid, varchar type, integer dimension, boolean use_typmod=true);
text AddGeometryColumn(varchar catalog_name, varchar schema_name, varchar table_name, varchar column_name, integer srid, varchar type, integer dimension, boolean use_typmod=true);
الوصف
تضيف عمود geometry إلى جدول سمات موجود. schema_name هو اسم مخطط (schema) الجدول. ويجب أن يكون srid قيمة صحيحة تشير إلى مُدخل في الجدول SPATIAL_REF_SYS. ويجب أن يكون type سلسلة نصية مطابقة لنوع الشكل الهندسي، مثل 'POLYGON' أو 'MULTILINESTRING'. ويُطلق خطأ إذا لم يكن المخطط موجودًا (أو غير مرئي في search_path الحالي) أو إذا كان SRID أو نوع الشكل أو البعد المحدد غير صالح.
|
|
|
تغيّرت في: 2.0.0 لم تعد هذه الدالة تحدّث geometry_columns لأن geometry_columns أصبح عرضًا (view) يقرأ من فهارس النظام. كما أنها افتراضيًا لا تُنشئ قيودًا، بل تستخدم سلوك مُعدِّل النوع (type modifier) المضمّن في PostgreSQL. فمثلًا، أصبح بناء عمود POINT بنظام wgs84 بهذه الدالة مكافئًا لـ: تغيّرت في: 2.0.0 إذا احتجت إلى السلوك القديم المعتمد على القيود، فاستخدم الوسيط الافتراضي |
|
|
|
تغيّرت في: 2.0.0 لم يعد بالإمكان تسجيل العروض (views) يدويًا في geometry_columns، لكن العروض المبنية على أشكال جداول ذات typmod والمستخدمة دون دوال تغليف ستسجّل نفسها تلقائيًا بشكل صحيح لأنها ترث سلوك typmod من عمود الجدول الأصلي. أما العروض التي تستخدم دوال هندسية تُخرج أشكالًا أخرى فستحتاج إلى تحويلها (cast) إلى أشكال typmod كي تُسجَّل أعمدة geometry في هذه العروض بشكل صحيح في geometry_columns. راجع قسم 4.6.3, “تسجيل أعمدة Geometry يدويًا”. |
تطبّق هذه الدالة مواصفة OGC Simple Features Implementation Specification for SQL 1.1.
تدعم هذه الدالة الأبعاد الثلاثية ولا تُسقط قيمة Z.
تدعم هذه الدالة الأقواس الدائرية (Circular Strings) والمنحنيات.
حُسّنت في: 2.0.0 أُضيف الوسيط use_typmod. ويكون الافتراضي إنشاء عمود geometry بـ typmod بدلًا من العمود المعتمد على القيود.
أمثلة
-- Create schema to hold data
CREATE SCHEMA my_schema;
-- Create a new simple PostgreSQL table
CREATE TABLE my_schema.my_spatial_table (id serial);
-- Describing the table shows a simple table with a single "id" column.
postgis=# \d my_schema.my_spatial_table
Table "my_schema.my_spatial_table"
Column | Type | Modifiers
--------+---------+-------------------------------------------------------------------------
id | integer | not null default nextval('my_schema.my_spatial_table_id_seq'::regclass)
-- Add a spatial column to the table
SELECT AddGeometryColumn ('my_schema','my_spatial_table','geom',4326,'POINT',2);
-- Add a point using the old constraint based behavior
SELECT AddGeometryColumn ('my_schema','my_spatial_table','geom_c',4326,'POINT',2, false);
--Add a curvepolygon using old constraint behavior
SELECT AddGeometryColumn ('my_schema','my_spatial_table','geomcp_c',4326,'CURVEPOLYGON',2, false);
-- Describe the table again reveals the addition of a new geometry columns.
\d my_schema.my_spatial_table
addgeometrycolumn
-------------------------------------------------------------------------
my_schema.my_spatial_table.geomcp_c SRID:4326 TYPE:CURVEPOLYGON DIMS:2
(1 row)
Table "my_schema.my_spatial_table"
Column | Type | Modifiers
----------+----------------------+-------------------------------------------------------------------------
id | integer | not null default nextval('my_schema.my_spatial_table_id_seq'::regclass)
geom | geometry(Point,4326) |
geom_c | geometry |
geomcp_c | geometry |
Check constraints:
"enforce_dims_geom_c" CHECK (st_ndims(geom_c) = 2)
"enforce_dims_geomcp_c" CHECK (st_ndims(geomcp_c) = 2)
"enforce_geotype_geom_c" CHECK (geometrytype(geom_c) = 'POINT'::text OR geom_c IS NULL)
"enforce_geotype_geomcp_c" CHECK (geometrytype(geomcp_c) = 'CURVEPOLYGON'::text OR geomcp_c IS NULL)
"enforce_srid_geom_c" CHECK (st_srid(geom_c) = 4326)
"enforce_srid_geomcp_c" CHECK (st_srid(geomcp_c) = 4326)
-- geometry_columns view also registers the new columns --
SELECT f_geometry_column As col_name, type, srid, coord_dimension As ndims
FROM geometry_columns
WHERE f_table_name = 'my_spatial_table' AND f_table_schema = 'my_schema';
col_name | type | srid | ndims
----------+--------------+------+-------
geom | Point | 4326 | 2
geom_c | Point | 4326 | 2
geomcp_c | CurvePolygon | 4326 | 2