mysql表GEOMETRY记录的读取与增加

两张表,均有GEOMETRY字段,合并成一张表。

直接读取记录并insert into 出错,需用AsText(SHAPE) 及 GeomFromText('$v[1]')转换

一、读取

    $tStr = "select OGR_FID,AsText(SHAPE),name,area,perimeter,cnty_,cnty_id,cnty_code,pyname,post_code from ".$tName;//GeometryType(SHAPE)
    $rArr = $db->row_array($tStr);

mysql8 为 ST_AsText加前缀 ST_

SHAPE为GEOMETRY字段

二、新增记录

 foreach($rArr as $k=>$v){
      $insStr = "insert into countyshp values(null,GeomFromText('$v[1]'),'$v[3]','$v[3]','$v[5]','$v[6]','$v[7]','$v[8]','$v[2]',0)";    
      $resStr = $db->query($insStr);
    }

 

### MySQL Geometry 类型的使用说明 #### 1. 数据类型概述 MySQL 的 `Geometry` 类型是一种用于存储空间数据的数据类型,它遵循 OpenGIS 标准[^2]。该类型支持多种子类型,包括但不限于 `POINT`, `LINESTRING`, 和 `POLYGON` 等。 #### 2. 插入 Geometry 类型数据的方法 在 MySQL 中插入 `Geometry` 类型的数据通常可以通过以下几种方式实现: - **使用 WKT(Well-Known Text)字符串** 可以通过函数 `ST_GeomFromText()` 或者其旧版替代品 `GeomFromText()` 将 WKT 字符串转换为几何对象并插入到中。例如: ```sql INSERT INTO temp (id, coordinate_center_geometry) VALUES (1, ST_GeomFromText('POINT(116.555555 39.555555)')); ``` 上述语句将一个示地理位置的点插入到了名为 `temp` 的中的列 `coordinate_center_geometry` 中[^4]。 - **使用 WKB(Well-Known Binary)二进制形式** 如果需要从其他系统导入几何数据,则可以利用 WKB 形式的字节流来创建几何对象。Java 应用程序可能通过 JDBC 驱动完成此操作,如下所示[^3]: ```java com.microsoft.sqlserver.jdbc.Geometry geometry1 = com.microsoft.sqlserver.jdbc.Geometry.STGeomFromWKB(resultSet.getBytes(s)); ``` #### 3. 查询检索 Geometry 数据 查询 `Geometry` 列的内容时,可以直接读取原始的几何对象或者将其转化为更易理解的形式,比如 WKT 文本: ```sql SELECT AsText(coordinate_center_geometry) FROM temp WHERE id=1; ``` 这段 SQL 返回的是之前插入的那个 POINT 对象对应的 WKT 达式 `"POINT(116.555555 39.555555)"`. #### 4. Java 应用集成示例 对于希望在 Java 应用中处理 MySQL 几何数据的情况,可参考特定库或自定义编码解码逻辑。下面是一个基于 JTS 工具包的例子链接[^5]: [Gitee Repository](https://gitee.com/l0km/sql2java/blob/dev/sql2java-base/src/main/java/gu/sql2java/geometry/MysqlGeometryDataCodec.java) 这个项目展示了如何在 Java 层面解析来自 MySQL 的几何数据,并且能够执行必要的序列化和反序列化过程。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值