在Postgis中创建Polygon值的表并插入

ckp*_*ckp 3 postgresql postgis

我有10个不同区域的以下区域"名称"和"多边形"值('A',50.6373 3.0750,50.6374 3.0750,50.6374 3.0749,50.63 3.07491,50.6373 3.0750)

我想使用POSTGIS在postgres DB中创建一个表

稍后,我将在表中使用lan和lat值(例如50.5465 3.0121)与上表进行比较并拉出区域名称

你能帮我创建和插入多边形坐标的代码吗?

icu*_*ken 11

我没有足够的声誉来评论你的问题,你可能会发现一个有用的链接:使用PostgreSQL进行多边形点的SQL查询

为数据库添加扩展

CREATE EXTENSION postgis;
Run Code Online (Sandbox Code Playgroud)

创建表

CREATE TABLE areas (
    id SERIAL PRIMARY KEY,
    name VARCHAR(64),
    polygon GEOMETRY
);
Run Code Online (Sandbox Code Playgroud)

在多边形字段上创建索引

CREATE INDEX areas_polygon_idx ON areas USING GIST (polygon);
Run Code Online (Sandbox Code Playgroud)

插入记录

INSERT INTO areas (name, polygon) VALUES (
    'A',
    ST_GeometryFromText('POLYGON((50.6373 3.0750,50.6374 3.0750,50.6374 3.0749,50.63 3.07491,50.6373 3.0750))')
);
Run Code Online (Sandbox Code Playgroud)

查询

SELECT name FROM areas WHERE ST_Contains(polygon, ST_GeomFromText('POINT(50.637 3.074)'));
 name 
------
(0 rows)

SELECT name FROM areas WHERE ST_Contains(polygon, ST_GeomFromText('POINT(50.63735 3.07495)'));
 name 
------
 A
(1 row)
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢爱肯。这真的很有帮助!! (2认同)