MySql常用地图函数

MySql常用地图函数

-- varchar->转 gemotry
SELECT st_geomfromgeojson('{"type":"Point","coordinates":[113.5525,34.732222]}')

-- gemotry->转 字符串
SELECT st_asgeojson(geom) FROM iwc_rsr_bsin

-- 查看表字段所用地图坐标系

select st_srid(geom) from settlements

-- 调换横纵坐标位置

select CONCAT('point(',st_y(geom),' ',st_x(geom),')') from settlements

-- 更新坐标系为4326

update settlements set geom=st_geomfromtext(CONCAT('point(',st_y(geom),' ',st_x(geom),')'), 4326)

-- 经纬度转geom
update settlements set geom = ST_GeomFromText(CONCAT( 'POINT(', lgtd, ' ', lttd, ')' ));

-- varchar-->geom存到另外一个字段

update quxian as qx set qx.geom = st_geomfromgeojson(qx.wkb_geometry)

-- 判断dam的geom是否在quxian的geom区域内

SELECT dam."id", dam.slnm,qx."区县",qx. from iwc_dam_bsin dam, quxian qx WHERE st_within(dam.geom, qx.wkb_geometry)

--根据安置点坐标在区域范围内来设置安置点所在的region

UPDATEjn_emergency.settlementsas se,jn_emergency.quxianas qx SET se.region= qx.region_codeWHERE st_within(se.geom, qx.geom)

st_within(se.geom, qx.geom) se是否在qx区域内

业务场景

mysql数据库中的点位没有行政区划编码(settlements)

pg库中有行政区划边界表(quxian)

1.先将pg库中的数据拷到mysql库中

涉及到格式问题所以将geom类型的数据先转换为json形式

select objectid,ogc_fid,区县,st_asgeojson(wkb_geometry) from quxian

可以得到varchar类型的边界数值

2.mysql创建quxian表 将上一步执行数据全部导入

上一步导入的wkb_geometry数据是varchar类型的 需要创建一个geom类型的字段就叫geom

将varchar ->geom

SELECT st_asgeojson(geom) FROM iwc_rsr_bsin

3.将安置点的经纬度转换为geom

update settlements set geom = ST_GeomFromText(CONCAT( 'POINT(', lgtd, ' ', lttd, ')' ));

4.统一坐标系

(一)查看坐标系

select st_srid(geom) from settlements

(二)修改坐标系

-- 查看表字段所用地图坐标系

select st_srid(geom) from settlements

-- 调换横纵坐标位置

select CONCAT('point(',st_y(geom),' ',st_x(geom),')') from settlements

-- 更新坐标系为4326

update settlements set geom=st_geomfromtext(CONCAT('point(',st_y(geom),' ',st_x(geom),')'), 4326)

–检索表的坐标系
select st_srid(geometry) from “T_S_DOORPLATE”;
–更新坐标系为4326
select UpdateGeometrySRID(‘T_S_DOORPLATE’, ‘geometry’, 4326);

5.根据安置点坐标在区域范围内来设置安置点所在的region

UPDATEjn_emergency.settlementsas se,jn_emergency.quxianas qx SET se.region= qx.region_codeWHERE st_within(se.geom, qx.geom)

PG库中判断 a(例如一个线段iwc_dam_bsin)区域是否和b区域相交(其中A可以是点 也可以是线段 可以是任意几何 B)pgsql中统一了两个区域的坐标系 之后进行对照:

 ' SELECT
            a.id,
            a.nm,
            st_asgeojson (a.geom) AS geom,
            b.id,
            b.name,
            b.region_code
        FROM
            (SELECT id,slnm,st_geomfromtext ( st_astext ( geom ), 4490 ) AS geom FROM a)   AS a
        LEFT JOIN b ON st_intersects ( a.geom, b.geom)
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值