PostgresSQL(or MySQL)创建空间列

目录

1.PostgresSQL 操作

2.MySQL  操作


1.PostgresSQL 操作

1) PostgresSQL  创建空间表

CREATE TABLE random_points (
    id bigint,
    lng double precision,
    lat double precision
)

2) 添加空间字段

--参数: schema_name, table_name, column_name, srid, type, dimension, use_typmod=true - 添加几何字段到已存在的表.

SELECT AddGeometryColumn ('public','test','geom',4326,'POINT',2)

3)添加数据测试

插入数据
insert into test(id,name,lng,lat,geometry) values(1,'点1',120.0,30.0,point(120.0,30.0)::geometry)

4)生成随机点

CREATE TABLE temp_random_trees AS 
    (SELECT (row_number() OVER ()) AS id, geom
    FROM 
        (SELECT (ST_Dump (ST_GeneratePoints( ST_GeomFromText('Polygon ((70 20,125 20,125 60,70 60,70 20))',4326) , 100000) ) ).geom) r ); 
		INSERT INTO test(SELECT id,st_x(geom),st_y(geom),geom
        FROM temp_random_trees ); 
DROP TABLE IF EXISTS temp_random_trees

查看结果:

 

2.MySQL  操作

1) 创建空间表

CREATE TABLE test_point(
    id INT PRIMARY KEY AUTO_INCREMENT,
    NAME VARCHAR(128) NOT NULL,
    lon double,
    lat double,
    geom POINT NOT NULL,
    SPATIAL INDEX `spatIdx` (`geom`) <!-- 1、创建表时创建空间索引 -->
)ENGINE=MYISAM DEFAULT CHARSET=utf8; <!-- 数据库表引擎设置为 MYISAM-->

2) 已存在的表添加空间字段

ALTER TABLE test_point ADD geom POINT not null;

3) 已存在的表添加空间索引

-- 创建索引,语法如下
ALTER TABLE test_point ADD SPATIAL INDEX(geom);

-- 删除索引
drop index geom on traffic_test

4) 插入数据测试

INSERT INTO test_point VALUES ('name1',120.0,30.0,ST_GeomFromText('POINT(120 30)'));

5)当原有表中只有lon,lat 字段,新建geometry字段后,从lon,lat 字段生成 geom字段数据

update test_point set geom=ST_GeomFromText(concat('point(',lon,' ',lat,')'),4326);

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值